jueves, 17 de mayo de 2012

Sobre Carga de Funciones


#include <conio.h>
#include <iostream.h>
#include <stdio.h>


int multi(int a,int b);
void multi(int a, char b[15]);
void multi(char a[15],char b[15]);

int main()
{

cout<< multi(5,20)<<endl;
multi(19,"daniel");
multi("daniel","Borracho");
getch();
}

int multi(int a,int b)
{return (a*b);
 }
void multi(int a,char b[15])
{ cout<<b<<" tiene "<<a<<" anos "<<endl;
return;
}
void multi(char a[15],char b [15])
{ cout<<a<<" Es un "<<b;
return;
}

Programa 1.2


#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <string.h>


int main()
{
char superheroes[10][25]={"Acuaman", "Superman","Megaman","Belzzemon","Shaman", "Bleach", "Perry", "Zorra","Mazinger","Meteoro"};
char nombre[10][25]={"Daniel","Jose","Juan","Ricardo","Teto","Paul","Pulpo","Pepsi","Cocacola","Frescolita"};
char apellido[10][25]={"Perez","Lopez","Medina","Aparicio","Yendiz","Valero","Mora","Romero","Rojas","Peligro"};
int  cedula[10]={4587450,5487345,6968295,8457563,1458735,4781549,1241587,1245184,3619825,3251765};
int  telefono[10]={1111,5555,7777,9999,7897,4444,8888,3333,2222,6666};
char ax[25];
char ax1[25];
char ax2[25];
int ax3, ax4, x;
int opc;
     do
      {
      cout<<"Bienvenidos"<<endl;
      cout<<"Ordenamientos :D "<<endl;
      cout<<" 1 -----> Por Nombre "<<endl;
      cout<<" 2 -----> Por SuperHeroe "<<endl;
      cout<<" 3 -----> Por Apellido "<<endl;
      cout<<" 4 -----> Por Cedula "<<endl;
      cout<<" 5 -----> Telefono " <<endl;
      cout<<" 0 <---> Salir "<<endl;
      cout<<" Indique opcion: ";
      cin>>opc;



gotoxy(1,12);cout<<"<Codigo>---<Sobrenombre>--<Nombre>-----<Apellido>---<Cedula>---<Telefono>";
for(x=0;x<10;x++)
  {
gotoxy(4,14+x);cout<<(x+1);
gotoxy(13,14+x);cout<<superheroes[x];
gotoxy(28,14+x);cout<<  nombre[x];
gotoxy(41,14+x);cout<<   apellido[x];
gotoxy(54,14+x);cout<< cedula[x];
gotoxy(65,14+x);cout<<   telefono[x];
   }

gotoxy(1,25);cout<<"=========================================================================";

if(opc==2)   //orden por superheroe
{
for(int k=0;k<10;k++)
{ for(int b=0;b<10;b++)
{
     if(strcmp(superheroes[k],superheroes[b])>1)
     {
     //ordenando supernombre
     strcpy(ax,superheroes[k]);
     strcpy(superheroes[k],superheroes[b]);
     strcpy(superheroes[b],ax);
     //ordenando nombre
     strcpy(ax1,nombre[k]);
     strcpy(nombre[k],nombre[b]);
     strcpy(nombre[b],ax1);
     //ordenando apellido
     strcpy(ax2,apellido[k]);
     strcpy(apellido[k],apellido[b]);
     strcpy(apellido[b],ax2);
     //ordenando cedulas
     ax3=cedula[k];
     cedula[k]=cedula[b];
     cedula[b]=ax3;
     //ordenando telefonos
     ax4=telefono[k];
     telefono[k]=telefono[b];
     telefono[b]=ax4;
     }//cierre if
     }//cierre for interno
}//cierre for externo
}//cierre if

if(opc==1)//por nombre
{
for(int k=0;k<10;k++)
{ for(int b=0;b<10;b++)
{
     if(strcmp(nombre[k],nombre[b])>1)
     {
     //ordenando supernombre
     strcpy(ax,superheroes[k]);
     strcpy(superheroes[k],superheroes[b]);
     strcpy(superheroes[b],ax);
     //ordenando nombre
     strcpy(ax1,nombre[k]);
     strcpy(nombre[k],nombre[b]);
     strcpy(nombre[b],ax1);
     //ordenando apellido
     strcpy(ax2,apellido[k]);
     strcpy(apellido[k],apellido[b]);
     strcpy(apellido[b],ax2);
     //ordenando cedulas
     ax3=cedula[k];
     cedula[k]=cedula[b];
     cedula[b]=ax3;
     //ordenando telefonos
     ax4=telefono[k];
     telefono[k]=telefono[b];
     telefono[b]=ax4;
     }//cierre if
     }//cierre for interno
}//cierre for externo
}//cierre if

if(opc==3)//por apellido
{
for(int k=0;k<10;k++)
{ for(int b=0;b<10;b++)
{
     if(strcmp(apellido[k],apellido[b])>1)
     {
     //ordenando supernombre
     strcpy(ax,superheroes[k]);
     strcpy(superheroes[k],superheroes[b]);
     strcpy(superheroes[b],ax);
     //ordenando nombre
     strcpy(ax1,nombre[k]);
     strcpy(nombre[k],nombre[b]);
     strcpy(nombre[b],ax1);
     //ordenando apellido
     strcpy(ax2,apellido[k]);
     strcpy(apellido[k],apellido[b]);
     strcpy(apellido[b],ax2);
     //ordenando cedulas
     ax3=cedula[k];
     cedula[k]=cedula[b];
     cedula[b]=ax3;
     //ordenando telefonos
     ax4=telefono[k];
     telefono[k]=telefono[b];
     telefono[b]=ax4;
     }//cierre if
     }//cierre for interno
}//cierre for externo
}//cierre if


if(opc==4)//por cedula
{
for(int k=0;k<10;k++)
{ for(int b=0;b<10;b++)
{
     if(cedula[k]>cedula[b])
     {
     //ordenando supernombre
     strcpy(ax,superheroes[k]);
     strcpy(superheroes[k],superheroes[b]);
     strcpy(superheroes[b],ax);
     //ordenando nombre
     strcpy(ax1,nombre[k]);
     strcpy(nombre[k],nombre[b]);
     strcpy(nombre[b],ax1);
     //ordenando apellido
     strcpy(ax2,apellido[k]);
     strcpy(apellido[k],apellido[b]);
     strcpy(apellido[b],ax2);
     //ordenando cedulas
     ax3=cedula[k];
     cedula[k]=cedula[b];
     cedula[b]=ax3;
     //ordenando telefonos
     ax4=telefono[k];
     telefono[k]=telefono[b];
     telefono[b]=ax4;
     }//cierre if
     }//cierre for interno
}//cierre for externo
}//cierre if

if(opc==5)//por telefono
{
for(int k=0;k<10;k++)
{ for(int b=0;b<10;b++)
{
     if(telefono[k]>telefono[b])
     {
     //ordenando supernombre
     strcpy(ax,superheroes[k]);
     strcpy(superheroes[k],superheroes[b]);
     strcpy(superheroes[b],ax);
     //ordenando nombre
     strcpy(ax1,nombre[k]);
     strcpy(nombre[k],nombre[b]);
     strcpy(nombre[b],ax1);
     //ordenando apellido
     strcpy(ax2,apellido[k]);
     strcpy(apellido[k],apellido[b]);
     strcpy(apellido[b],ax2);
     //ordenando cedulas
     ax3=cedula[k];
     cedula[k]=cedula[b];
     cedula[b]=ax3;
     //ordenando telefonos
     ax4=telefono[k];
     telefono[k]=telefono[b];
     telefono[b]=ax4;
     }//cierre if
     }//cierre for interno
}//cierre for externo
}//cierre if

//////////////////////////////////////////////////////////
gotoxy(1,27);cout<<"<Codigo>---<Sobrenombre>--<Nombre>-----<Apellido>---<Cedula>---<Telefono>";
for(x=0;x<10;x++)
  {
gotoxy(4,28+x);cout<<(x+1);
gotoxy(13,28+x);cout<<superheroes[x];
gotoxy(28,28+x);cout<<  nombre[x];
gotoxy(41,28+x);cout<<   apellido[x];
gotoxy(54,28+x);cout<< cedula[x];
gotoxy(65,28+x);cout<<   telefono[x];
   }
 getch();
 clrscr();
  }while(true);
 }

Programa : Palindromo


#include <conio.h>
#include <stdio.h>
#include <iostream.h>
#include <string.h>

int main ()
{
 char palabra[15];
 char ax[15];
 int i,n;

  cout<<"Ingrese Palabra"<<endl;
  gets(palabra);
  n=strlen(palabra);

  //invierte la cadena y la pega en la otra en orden inverso
   for(i=0;i<n;i++)
   {ax[i]=palabra[n-1-i];
   }ax[n]=NULL;
if(strcmp(palabra,ax)==0)
cout<<"La palabra "<<palabra<<", Si es Palindromo"<<endl;
else
cout<<"La palabra "<<palabra<<",  NO es Palindromo"<<endl;

cout<<palabra<<"=="<<ax;

getch();
}

numeros aleatorios


#include <conio.h>
#include <iostream.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>


void crear(int a[30]);
void mostrar(int a[30]);
int main()
{
int opc,a[30],sw=0;



   srand(time(0));
   do
   {
     cout<<"Bienvenido"<<endl;
     cout<<" 1 ------> Crear Numeros "<<endl;
     if(sw==0)
      cout<<endl;
     else
        cout<<" 2 ------> Mostrar Numeros "<<endl;
     cout<<" 3 ------> exit            "<<endl;
     cout<<" --------->";cin>>opc;

     if(opc==1)
     {
      crear(a);  sw=1;

      }
      if(opc==2)
      {
      mostrar(a);
             }

     getch();
     clrscr();
     }while(opc!=3);
}

void crear( int a[30])
{
  for( int i=0;i<30;i++)
   { a[i]=rand()%99;
    }
  }

void mostrar(int a[30])
  {
  for(int i=0;i<30;i++)
    {
      cout<<a[i]<<", ";
      if((i+1)%6==0)
      cout<<endl<<endl;
       }
  }

programa de Ordenamiento y busqueda


#include<conio.h>
#include<stdio.h>
#include<iostream.h>



struct  empleados
{
char nombre[10];
char apellido[10];
int cedula;
int salario;
}power[10];

void leer(int);
void buscar(int);
int main()
{

int opc,n=0;

do{
  cout<<"Hola apachurra el star"<<endl;
  cout<<" APachurra el 1"<<endl;
  cout<<" Apachurra el 2"<<endl;
  cout<<" papurrin el 0"<<endl;
  cout<<" por que >>>>>>>"; cin>>opc;

  switch(opc)
  {
  case 1:leer(n); n++; break;
  case 2: buscar(n); break;
  default: cout<<"Ingreso un valor no valido";
  }      
  getch();  clrscr();
}while(opc!=0);
}

void leer(int n)
{
cout<<"ingrese nombres ";
cin>>power[n].nombre;
cout<<"ingrese apellido ";
cin>>power[n].apellido;
cout<<"ingrese cedula ";
cin>>power[n].cedula;
cout<<"ingrese salario ";
cin>>power[n].salario;
}

void buscar(int n)
{
int mayor,menor;
      mayor=menor=power[0].salario;
for(int i=0;i<n;i++)
   {
   if(mayor<power[i].salario)
     {  mayor=power[i].salario;}
    if(menor>power[i].salario)
    { menor=power[i].salario;  }

    }
    cout<<"El Salario mayor es : "<< mayor<<endl;
    cout<<"El Salario Menor es : "<< menor<<endl;
    }

Programa : contiene busqueda y ordenamiento


#include <conio.h>
#include <iostream.h>
#include <stdio.h>

const int n=5;
void  ingrese(char[n][15],int [n]);
void apro_repro(int[n],int);
void burbuja(char[n][15],int[n]);
void seleccion(char[n][15],int[n]);
void insercion(char[n][15],int[n]);
void binaria(char[n][15],int[n]);
int main()
{
 int opc,a;
 char nombres[n][15];
 int notas[n];


 do{
 gotoxy(25,3); cout<<" Bienvenido ";
 gotoxy(25,5); cout<<"Escoja La Opcion";
 gotoxy(20,6); cout<<" 1----> Ingrese Alumnos";
 gotoxy(20,7); cout<<" 2----> Ordenamientos";
 gotoxy(20,8); cout<<" 3----> Alumnos Aprobados";
 gotoxy(20,9); cout<<" 4----> Ingrese Reprobados";
 gotoxy(20,10);cout<<" 5----> Busqueda Binaria";
 gotoxy(20,12);cout<<" ----> Leer Opcion";   gotoxy(40,12);  cin>>opc;
      if(opc==1)
  {
     ingrese(nombres,notas);
      }
  if(opc==2)
  { cout<<endl;
    for(int i=0;i<n;i++)
    cout<<notas[i]<<", "<<nombres[i]<<endl;
    cout<<endl<<endl;

    cout<<"Por Cual Metodo desea Ordenar"<<endl;
    cout<<" 1 ----> Por Intercambio"<<endl;
    cout<<" 2 ----> Por Seleccion "<<endl;
    cout<<" 3 ----> Por Inserccion"<<endl;
    cout<<" Leer opcion ---->"; cin>>a;
       if(a==1)
       {  burbuja(nombres,notas);}
       if(a==2)
       {  seleccion(nombres,notas);}
       if(a==3)
       {insercion(nombres,notas);}
    }
         if(opc==3)
  {  apro_repro(notas,1);
     }
  if(opc==4)
  {  apro_repro(notas,2);
  }
  if(opc==5)
  {  binaria(nombres,notas);}

    getch();
        clrscr();
 }while(opc!=5);

}
// La Funcion Ingrese(), sirve para insertar las notas y nombres en el vector.
void  ingrese(char nombre[n][15], int notas[n])
{
  for(int i=0;i<n;i++)
   { cout<<"Ingrese Nombre del Alumno: ";
    cin>>nombre[i];
    cout<<"Ingrese Nota del Alumno, "<<nombre[i]<<" : ";
    cin>>notas[i];}
}
// La funcion apro_repro(),sirve para mostrar los alumnos reprobados y aprobados y el promedio de cada uno
void apro_repro(int notas[n], int opc)
{
  int aprobados,reprobados,a,x;
     aprobados=reprobados=a=x=0;

  for(int i=0;i<n;i++)
  { if(notas[i]<5)
    { reprobados++;
      x=x+notas[i];
        }
     else
      {aprobados++;
       a=a+notas[i]; }
     }

  if(opc==1)
   {
     cout<<" La cantidad de aprobados es: "<<aprobados<<endl;
     cout<<" El promedio de aprobados es: "<<(a/aprobados)<<" pts "<<endl; }

   if(opc==2)
   {
     cout<<" La cantidad de reprobados es: "<<reprobados<<endl;
     cout<<" El promedio de reprobados es: "<<(x/reprobados)<<" pts "<<endl;}
 }
// funcion burbuja(), sirve para un ordenamiento sencillo.
void burbuja(char nombres[n][15],int notas[n])
{
char ax[15];
int j, i,aux;
for(i=0;i<n-1;i++)
{  for(j=0;j<n-1;j++)
   { if(notas[j]>notas[j+1])
     {
       aux=notas[j];
       notas[j]=notas[j+1];
       notas[j+1]=aux;

       strcpy(ax,nombres[j]);
       strcpy(nombres[j], nombres[j+1]);
       strcpy(nombres[j+1],ax);
     }
   }
}
for(i=0;i<n;i++)
 cout<<nombres[i]<<", "<<notas[i]<<endl;
}

// funcion seleccion(), sirve para un ordenamiento selectivo basado en los minimos.
void seleccion(char nombres [n][15],int notas [n])
{
 int aux,i,j,minimo;
 char aux1[15];
 for(i=0;i<n-1;i++)
 {
    minimo=i;
    for(j=i+1;j<n;j++)
    {
  if(notas[j]<notas[minimo])
  {minimo=j;    }
}
  //intercambio de notas
  aux=notas[i];
  notas[i]=notas[minimo];
  notas[minimo]=aux;
  //intercambio de nombres
  strcpy(aux1,nombres[i]);
  strcpy(nombres[i],nombres[minimo]);
  strcpy (nombres[minimo],aux1);
 }

for(i=0;i<n;i++)
 cout<<nombres[i]<<", "<<notas[i]<<endl;
 }


void insercion(char nombres [n][15],int notas [n])
{

char aux1[15];
int i,k,aux;
bool band=false;
for (k=1;k < n; k++){
    aux=notas[k];
    strcpy(aux1,nombres[k]);
    i=k-1;
    band=false;
    while( i>=0 && !band )
    {       if(aux < notas[i]){
            notas[i+1]=notas[i];
            strcpy(nombres[i+1],nombres[i]);
            i--;
                              }
        else
        {       band=true;       }
    }
    notas[i+1]=aux;
    strcpy(nombres[i+1],aux1);
}

for(i=0;i<n;i++)
 cout<<nombres[i]<<", "<<notas[i]<<endl;
}
// funcion Binanria(), sirve para hacer una busqueda de un dato, se necesita que este ordenada.... =D
void binaria(char nombres [n][15],int notas [n])
{
int dato,centro,inferior,superior;
   inferior=0;
   superior=n-1;

   cout<<"Ingrese Nota a Buscar"<<endl;
   cin>>dato;

   while(inferior<=superior)
   {
    centro=((superior-inferior)/2+inferior);
    if(notas[centro]==dato)
    { cout<<"Alumno: "<<nombres[centro]<<", nota: "<< notas[centro]<<endl;
     return;
      }
      else
      {if(dato<notas[centro])
         { superior = centro - 1;}
       else
         { inferior= centro+1;  }
         }
     }
  cout<<"No se encontro esa nota";
}

  getch();
 }



viernes, 4 de mayo de 2012

Diseño del Algoritmo - Ejemplo Diagrama de flujo


Herramientas Para Diseño de Algoritmos


Diagrama de Flujo (Flowchart)


Es una técnica para representar algoritmos que utiliza símbolos
estándar y que tienen los pasos del algoritmo escritos en
 dichos símbolos, unidos por flechas, denominados líneas de   flujos, que Herramientas Para Diseño de Algoritmos indican la secuencia en que se deben ejecutar.

Diseño del Algoritmo - Ejemplo Pseudocodigo




 Área Del Triangulo


Var Real : base, altura, superficie


1. Inicio
2. Escribir (“Indique la base del triangulo”)
Herramientas Para Diseño de Algoritmos
3. Leer (base)
4. Escribir (“Indique la altura”)
5. Leer (altura)
6. superficie ← base * altura / 2
7. Escribir (“La superficie del triangulo es : ”, superficie)
8. fin

Diseño de un algoritmo


Tipos de Datos
Datos Lógicos:


Estos tipos de datos solo pueden tomar dos valores: verdadero
(TRUE) y falso (FALSE). Tienen la característica de formarse a partir de operaciones lógicas y relacionales. Estos valores no se pueden leer del teclado, pero si se pueden imprimir.

Diseño de un algoritmo

Tipos de Datos
Datos Lógicos:



Son conocidos también como Booleanos, en honor a George Bool,matemático Inglés (1815 - 1864), cuya teoría conocida como elálgebra de Bool permitió el desarrollo matemático del algebra binaria y a partir de aquí del álgebra de conmutación, base de la representación de circuitos lógicos.

Tabla de caracteres ASCII


Diseño de un algoritmo


Tipos De Datos Alfanuméricos:


– ASCII (Código Estándar Americano de Intercambio de Información), 27
bits y 28 bits.
– EBCDIC (Código de Información Decimal Codificado en Binario


Extendido), “Mainframe” de IBM, 8bits.
– UNICODE El término Unicode proviene de los tres objetivos perseguidos:
universalidad, uniformidad y unicidad. Emplea 16 bits

Diseño de un algoritmo

Tipos de Datos
Datos Alfanuméricos:

Estos almacenan los llamados caracteres alfanuméricos
 Entre estos tenemos:



• Caracteres alfabéticos: letras de la A – Z, ya sean
 mayúsculas o minúsculas.
• Caracteres numéricos: Los dígitos del 0 – 9.
• Caracteres especiales: ( ),* , & , : , ; , _ , - , entre otros.

Diseño de un algoritmo

Tipos de Datos

Datos Numéricos:
Enteros : Son datos que pertenecen al conjunto de los
números enteros, por tanto pueden ser datos enteros
positivos y datos enteros negativos. Cuando se omite el
signo se asume que el numero es positivo.
Ejemplo:
1
743
5280
32767

Diseño de un algoritmo

Tipos de Datos


Numéricos:

datos que representan cantidades, y con ellos, se pueden
realizar todas las operaciones aritméticas y relacionales
aplicables a los números.


 Pueden ser :

» Enteros 
» Reales

Diseño de un algoritmo

Tipos de Datos



Es la forma general que tomará un conjunto
de elementos que son datos de características similares. El
tipo determina como se representara internamente los datos
y las operaciones que podrán realizarse sobre ellos.


Tipos de Datos



  • Alfanuméricos
  • Lógicos
  • Numéricos

Diseño del Algoritmo

 Identificadores
Como regla general, todos los identificadores deben ser
declarados antes de ser usados, aconsejándose nombres
que den idea de su uso.

Ejemplo:

 Sueldo           }     Indique sueldo de un trabajador
Trabajo

Diseño del Algoritmo


Identificadores


Son nombres que se utilizan en los algoritmos y programas
para referenciar a los distintos elementos que utilizan, ya sean
objetos o procesos.


Ejemplo :


  • Luis C.I: 4.567.890
  • Maria
  •  Rosa
Están formados por números, letras y otros caracteres.
Generalmente no pueden contener espacios en blanco ni
carácter acentuado y debe comenzar siempre por una letra.

Ejemplo
CORRECTO 
Nota, nota, Nota1
Saldo_Neto
numero

INCORRECTO
1nota
Saldo Neto
Numero-1


ALGORITMOS : Clasificación


Algoritmos Cuantitativos
Son pasos o acciones que involucran cálculos numéricos
para llegar a un resultado.


Ejemplo:



  • Ecuación de Segundo Grado
  • Solución Factorial

ALGORITMOS : Clasificación


Algoritmos Cualitativos
Son pasos o acciones descritos por palabras para llegar
a la solución de un problema


Ejemplo

  • - Receta de cocina
  • Búsqueda de una Dirección
  • - El Montaje de una llanta