jueves, 31 de mayo de 2012

Unidad III tarea 2


Las cadenas de caracteres se definen como un arreglo de datos de tipo caracter el cual termina con el carcter nulo.
Un arreglo es un grupo de datos homogeneos y finitos que ocupan posiciones consecutivas de memoria.
La declaración de una cadena de caracteres se hace de la siguiente forma:
char Nombre_de_la_variable [longitud de la cadena];
Esto hace que se guarde un espacio en memoria suficiente para soportar el numero de caracteres que se estan apartando para la cadena de caracteres que se va a leer.
Por ejemplo:
char cadena[10];
crea un espacio en memoria para 10 bytes cada uno de los cuales sera ocupado por uno de los caracteres que se van a leer.
Lectura de una cadena de caracteres:
Para hacer la lectura de una cadena de caracteres se pueden utilizar la función scanf o gets de la siguiente forma:
scanf("%s",cadena); o gets(cadena);
La ventaja de utilizar el gets en lugar del scanf es la lectura de los espacios en blanco, cosa que no hace el scanf.
Otra forma de leer una cadena de caracteres es hacerlo caracter por caracter como un arreglo unidimensional o vector, manejandola posicion por posicion cadena[posicion], mas adelante se vera un ejemplo de lo antes mencionado.
Ejemplos:
/* MANIPULACION DE UNA CADENA DE CARACTERES  POSICION POR POSICION, MANEJANDOLA COMO UN ARREGLO DE CARCTERES */
#include<conio.h>
#include<stdio.h>
void main(void)
{
 char cadena[25];
 int pos;
 clrscr();
 //Lectura de la cadena de caracteres.
  gotoxy(20,1);
  printf("Teclea una cadena de maximo 25 caracteres");
   gotoxy(27,2);
   printf("[ ]");
   gotoxy(28,2);

    gets(cadena);

    //Impresi¢n
de la cadena caracter por caracter

    clrscr();

    for
(pos=0;cadena[pos];pos++)

     {gotoxy(pos+1,pos+1);

      textcolor(pos+1);

      cprintf("%c",cadena[pos]);

      }

      getch();

      }

Las funciones gets y getchar estas especializadas en la captura de un solo carácter. La diferencia es que getchar lee un carácter y lo imprime en pantalla y el getch lo lee pero no lo muestra en pantalla. Por lo que estas se utilizan para leer un solo carácter y retener pantallas.
Otras funciones  son:
strlen
La función  strlen recibe como argumento una  cadena y da como valor de regreso un entero que corresponde al número de caracteres de la cadena (sin contar al carácter nulo). Por ejemplo, en el caso siguiente:
char nombre[10]=”Karla”;
int x;
x = strlen(nombre);
La variable x tendría un valor de 5 luego que se ejecutan las sentencias.

strcpy(cadena2,cadena1):
La función strcpy es una función sin valor de regreso que recibe dos argumentos. Un argumento es la variable cuyo valor se desea asignar y la otra es la cadena  de caracteres que se desea asignar. Por ejemplo. Las siguientes dos  asignaciones son correctas:
char nombre[20];
strcpy(nombre, “Carlos”);
también puede escribirse:
char nombre1[20], nombre2[20]=”Carlos”;
strcpy(nombre1,nombre2);


strcmp(cadena1,cadena2)
Esta función recibe dos argumentos, que son las dos cadenas a  comparar, y regresa un valor de tipo entero. Por ejemplo, para las mismas declaraciones de nombre1 y nombre2.
nom = strcmp(nombre1, nombre2);
Es una sentencia correcta si nom es de tipo entero. El valor que regresa la función strcmp es 0 si las dos cadenas son iguales. Regresa 1 si la primera cadena es mayor a la segunda y regresa –1 si la segunda cadena es mayor a la primera. Aquí, ser mayor no significa tener más caracteres, sino la comparación se hace considerando el número de código ascii  de los caracteres. La comparación se hace uno a uno hasta que se encuentre un carácter diferente entre las dos cadenas.
strcat (cadenadestino, cadena origen)


La función strcat recibe como argumentos dos cadenas y da como resultado la unión de ambas cadenas en el orden indicado. La segunda cadena se anexa a la primera cadena. Por ejemplo, las siguientes sentencias:
char nombre[20]=”Pedro ”, apellido[10]=”Burgos”;
strcat(nombre, apellido);
Cambia el valor de la cadena nombre de “Pedro” a “Pedro Burgos”.



La librería adecuada para manipular cadenas es string.h que debe incluirse en la programación principal junto con las demás librerías de la siguiente manera.
#include<string.h>
Información extraída de:



miércoles, 30 de mayo de 2012

practica 15

practica 1



inicio

int vuelo[3][10]={0,0,0,0,0,0,0,0,0,0}
int clase=0,dest=0,clientenew=0
do
{
seleccioner_vuelo(clase,dest)
seleccionar_asiento(vuelo,clase,dest)
print"\descea elegir otro viaje SI=1 NO=0: "
cin,clientenew
printendl
}
while(clientenew==1)
desplegar(vuelo)

fin

void seleccioner_vuelo(int & clase,int & dest)
{
print"aerolinia mexicana\n"
print"1) argelia     1.\n"
print"2) rusia    2.\n"
print"3) portugal 3.\n"
print"destino: "
cin,dest
print"1) primera clase.\n"
print"2) clase economica.\n"
print"clase: "
cin,clase
}

void seleccionar_asiento(int vuelo[3][10],int  clase,int  dest)
{
int i,b
switch(dest)
{
case 1:
switch(clase)
{
case 1:
i=0b=0
while(i<=4 && b==0)
{
if(vuelo[0][i]!=1)
{
vuelo[0][i]=1
b=1
print"\npase de viaje\n"
"vuelo 1\tprimera clase\tasiento: ",(i+1)
}
else
{
i++
if(i==4)
{print"\nPRIMERA CLASE: NO asientos disponibles \n"
"el vuelo parte en 2hrs\n\n"}
}}
break
case 2:
i=5b=0
while(i<=9 && b==0)
{
if(vuelo[0][i]!=1)
{
vuelo[0][i]=1
b=1
print"\npase de viaje\n"
"vuelo 1\tsegunda clase\tasientos: ",(i+1)
}
else
{
i++
if(i==9)
{print"\nSEGUNDA CLASE: asientos no disponibles\n"
"el vuelo parte en 2 hrs\n\n"}
}}
break
default:print"error \n"
}
break
case 2:
switch(clase)
{
case 1:
i=0b=0
while(i<=4 && b==0)
{
if(vuelo[1][i]!=1)
{
vuelo[1][i]=1
b=1
print"\nSU PASE DE VIAJE\n"
"VUELO 2\tPRIMERA CLASE\tASIENTO: ",(i+1)
}
else
{
i++
if(i==4)
{print"\nPRIMERA CLASE: NO VACANTES\n"
"EL VUELO PARTE EN 3 HORAS\n\n"}
}}
break
case 2:
i=5b=0
while(i<=9 && b==0)
{
if(vuelo[1][i]!=1)
{
vuelo[1][i]=1
b=1
print"\nSU PASE DE VIAJE\n"
"VUELO 2\tSEGUNDA CLASE\tASIENTO: ",(i+1)
}
else
{
i++
if(i==9)
{print"\nSEGUNDA CLASE: NO VACANTES\n"
"EL VUELO PARTE EN 3 HORAS\n\n"}
}}
break
default:print"CLASE NO EXISTENTE\n"
}
break


case 3:
switch(clase)
{
case 1:
i=0b=0
while(i<=4 && b==0)
{
if(vuelo[2][i]!=1)
{
vuelo[2][i]=1
b=1
print"\nSU PASE DE VIAJE\n"
"VUELO 3\tPRIMERA CLASE\tASIENTO: ",(i+1)
}
else
{
i++
if(i==4)
{print"\nPRIMERA CLASE: NO VACANTES\n"
"EL VUELO PARTE EN 3 HORAS\n\n"}
}}
break
case 2:
i=5b=0
while(i<=9 && b==0)
{
if(vuelo[2][i]!=1)
{
vuelo[2][i]=1
b=1
print"\nSU PASE DE VIAJE\n"
"VUELO 3\tSEGUNDA CLASE\tASIENTO: ",(i+1)
}
else
{
i++
if(i==9)
{print"\nSEGUNDA CLASE: NO VACANTES\n"
"EL VUELO PARTE EN 3 HORAS\n\n"}
}}
break
default:print"CLASE NO EXISTENTE\n"
}
break

break
default:print"DESTINO NO EXISTENTE\n"}}



void desplegar(int vuelo[3][10])
{
int r,c
print"1=OCUPADOS   0=VACIOS\n"
print"ASIENTOS 1  2  3  4  5  6  7  8  9  10\n"
for(r=0r<3r++)
{
print"Vuelo ",(r+1),": "
for(c=0c<10c++)
{
printvuelo[r][c],"  "
}printendl}}













15.2

int insertar_lista_nombres(char nombres[10][25])
void reordenar(char nombres[10][25],int n)
void desplegar_lista_nombres(char nombres[10][25],int n)

void main()
{
char nombres [10][25]
int n
n=insertar_lista_nombres(nombres)
reordenar(nombres,n)
desplegar_lista_nombres(nombres,n)
getch()
}

int insertar_lista_nombres(char nombres[10][25])
{
int i
i=0
char nom[30]
do
{print ,"Nombre Alumno ",(i+1),": "
gets(nom)
if(strcmp(nom,"FIN")!=0)
{strcpy(nombres[i],nom)
i++}}
while(strcmp(nom,"FIN" ) && (i<20))
print ,endl
return i}

void reordenar(char nombres[10][25],int n)
{int i,j
char temp[30]
for(i=0i<(n-1)i++)
{for(j=(i+1)j<nj++)
if(strcmp(nombres[i],nombres[j])>0)
{strcpy(temp,nombres[i])
strcpy(nombres[i],nombres[j])
strcpy(nombres[j],temp)
}}}


void desplegar_lista_nombres(char nombres[10][25],int n)
{int i=0
print ,"LISTA ORDENADA.\n",
for (i=0i<ni++)
{print ,(i+1),".- ",nombres[i],
}}



15.3

void insertar_lista_paises(char paises[11][30],char capitales[11][30])

void main()
{
char paises[11][30]={"CANADA","INGLATERRA","FRANCIA","INDIA","ISRRAEL","ITALIA","JAPON","MEXICO","CHINA","ESTADOS UNIDOS","RUSIA"}
char capitales[11][30]={"OTTAWA","LONDRES","PARIS","NUEVA DELHI","JERUSALEN","ROMA","TOKYO","CD MEXICO","BEIJING","WASHINGTON","MOSCU"}
print ,"ESCRIVA CON MAYUSCULAS POR FAVOR",
print ,endl
insertar_lista_paises(paises,capitales)
print ,"FIN DEL PROGRAMA ",
print ,endl
print ,"QUE TENGA UN BUEN DIA",
getch()
}

void insertar_lista_paises(char paises[11][30],char capitales[11][30])
{
int i=0
char cd[30]
do
{
print ,endl
print ,"PAIS O CAPITAL: "
gets(cd)
print ,endl
if(strcmp(cd,"FIN")!=0)
{
for(i=0i<12i++)
{
if(strcmp(cd,paises[i])==0)
{
print ,"\tPAIS\t\tCAPITAL",
print ,"\t",paises[i],"\t\t",capitales[i],
}
if(strcmp(cd,capitales[i])==0)
{
print ,"\tCAPITAL\t\tPAIS",
print ,"\t",capitales[i],"\t\t",paises[i],
}}}}
while(strcmp(cd,"FIN"))
}


15.4



void salida_datos_file(int n)
{
ofstream salida
salida.open("E://Datos//nombres1.txt")
int i
char name[30]
for(i=1i<=ni++)
{
print ,"Nombre ",(i),": "
gets(name)
salida,name,
}
salida.close()
}

void entrada_datos_file()
{
ifstream entrada
entrada.open("E://Datos//nombres1.txt")
char name[30]
print ,"\nListado de Estudiantes\n"
entrada.getline(name,30)
print ,name,
while(!entrada.eof())
{
entrada.getline(name,30)
print ,name,
}
entrada.close()
}

void almacena_calif(int n)
{
ofstream salida
salida.open("E://Datos//calificaciones.txt")
int r,c,calf
for(r=0r<nr++)
{
print ,"Introduce calificaciones del estudiante ",(r+1),
for(c=0c<6c++)
{
print ,"Calificacion ",(c+1),": "
readcalf
salida,calf," "
}
salida,
}
salida.close()
print ,endl}

int leer_archivo_calif(int a[20][6], float promedio[20], int n)
{
ifstream entrada
entrada.open("E://Datos//calificaciones.txt")
int r,c,suma
for(r=0r<nr++)
{
suma=0
for(c=0c<6c++)
{
entrada>>(a[r][c])
suma=suma+a[r][c]
}
promedio[r]=suma/6
}
entrada.close()
return r
}

ordenar_promedio(int a[20][6],float promedio[20],int n)
{
int i=0,j=0
int temp
for(i=0i<(n-1)i++)
{
for(j=(i+1)j<nj++)
{
if(promedio[i]>promedio[j])
{
temp=promedio[i]
promedio[i]=promedio[j]
promedio[j]=temp
}}}
for(i=0i<ni++)
{print ,"Promedio ",(i+1),": ",promedio[i],}
}


imicio

int n
int c[20][6]
float p[20]
print ,"Numero de Alumnos : "
readn
salida_datos_file(n)
entrada_datos_file()
almacena_calif(n)
n=leer_archivo_calif(c,p,n)
ordenar_promedio(c,p,n)

fin





15.5 A

void salida_datos_file()
{
ofstream salida
salida.open("C://Datos//nombres.txt")
int i=0
char name[30]
do
{
print ,endl
 print ,"Nombre ",(i+1),": "
gets(name)
if(strcmp(name,"fin")!=0)
{
salida,name,
i++
}}
while(strcmp(name,"fin" ))
print ,endl
salida.close()
}

void entrada_datos_file()
{
ifstream entrada
entrada.open("E://Datos//nombres.txt")
char name[30]
print ,endl
print ,"Listado de Estudiantes",
entrada.getline(name,30)
print ,name,
while(!entrada.eof())
{
entrada.getline(name,30)
print ,name,
}
entrada.close()
}

inicio
int n
int c[20][6]
salida_datos_file()
entrada_datos_file()
fin


15.5B


void salida_datos_file()
{
ofstream salida
salida.open("E://Datos//nombres.txt",ios::app)
int i=0
char name[30]
do
{  print ,endl
 print ,"Nombre ",(i+1),": "
gets(name)
if(strcmp(name,"FIN")!=0)
{
salida,name,
i++
}}
while(strcmp(name,"FIN" ))
print ,endl
salida.close()
}

void entrada_datos_file()
{
ifstream entrada
entrada.open("E://Datos//nombres.txt")
char name[30]
print ,endl
print ,"Lista de Estudiantes",
entrada.getline(name,30)
print ,name,
while(!entrada.eof())
{
entrada.getline(name,30)
print ,name,
}
entrada.close()
}


inicio

int n
int c[20][6]
print ,endl
salida_datos_file()
print ,endl
entrada_datos_file()
fin





15.6ª

void salida_datos_file()
{
ofstream salida
salida.open("E://Datos//texto.dat")
char texto[80]
print ,endl
print ,"\t\t\tTEXTO",
do
{
gets(texto)
if(strcmp(texto,"FIN")!=0)
{
salida,texto,
}}
while(strcmp(texto,"FIN" ))
print ,endl
salida.close()
}

void entrada_datos_file()
{
ifstream entrada
entrada.open("E://Datos//texto.dat")
char texto[80]
print ,endl
print ,"\t\tTEXTO",
entrada.getline(texto,80)
print ,texto,
while(!entrada.eof())
{
entrada.getline(texto,80)
print ,texto,
}
entrada.close()
}


void main()
{
salida_datos_file()
entrada_datos_file()
getch()
}




15.6b

void salida_datos_file()
{
ofstream salida
salida.open("E://Datos//texto1.dat")
int n=0
char texto[80]
print ,endl
print ,"\t\t\tTEXTO",
do
{
gets(texto)
if(strcmp(texto," ")>=0)
{
salida,texto,
}}
while(strcmp(texto," " )>=0)
print ,endl
salida.close()
}

void entrada_datos_file()
{
ifstream entrada
entrada.open("E://Datos//texto1.dat")
char texto[80]
print ,endl
print ,"\t\t\tTEXTO",
entrada.getline(texto,80)
print ,texto,
while(!entrada.eof())
{
entrada.getline(texto,80)
print ,texto,
}
entrada.close()
}


inicio

salida_datos_file()
entrada_datos_file()

fin




15.7a

void insertar_lista_datos()
void calcular_promedio(float valores[5][4],float promedio[5])
void desplegar_promedio(float promedio[5])

void main()
{
float valores[5][4]
float promedio[5]
insertar_lista_datos()
calcular_promedio(valores,promedio)
desplegar_promedio(promedio)
getch()
}


void insertar_lista_datos()
{
ofstream salida
salida.open("E://Datos//voltios.txt")
salida,120.3,"  ",122.7,"  ",90.3,"  ",99.8,
salida,95.5,"  ",120.5,"  ",127.3,"  ",120.8,
salida,123.2,"  ",118.4,"  ",123.8,"  ",115.6,
salida,122.4,"  ",95.6,"  ",118.2,"  ",120.99,
salida,123.5,"  ",130.2,"  ",123.98,"  ",124.4,
salida.close()
print ,endl
}

void calcular_promedio(float valores[5][4],float promedio[5])
{
ifstream entrada
entrada.open("E://Datos//voltios.txt")
int r=0,c=0
float suma=0
for(r=0r<5r++)
{
suma=0
for(c=0c<4c++)
{
entrada>>(valores[r][c])
suma=suma+valores[r][c]
}
promedio[r]=suma/4
}entrada.close()
}

void desplegar_promedio(float promedio[5])
{
int r=0
for(r=0r<5r++)
{
print ,"PROMEDIO ",(r+1),": ",promedio[r],
}}




15.7B


void insertar_lista_datos()
void calcular_promedio(float valores[5][4],float promedio[5])
void desplegar_promedio(float promedio[5])

inicio
float valores[5][4]
float promedio[5]
insertar_lista_datos()
calcular_promedio(valores,promedio)
desplegar_promedio(promedio)
fin



void insertar_lista_datos()
{
ofstream salida
salida.open("E://Datos//voltios1.txt")
salida,120.3,"   ",122.7,"   ",90.3,"    ",99.8,
salida,95.5,"    ",120.5,"   ",127.3,"   ",120.8,
salida,123.2,"   ",118.4,"   ",123.8,"   ",115.6,
salida,122.4,"   ",95.6,"    ",118.2,"   ",120.99,
salida,123.5,"   ",130.2,"   ",123.98,"  ",124.4,
salida,122.11,"  ",128.5,"   ",99.2,"    ",89.70,
salida,125.12,"  ",101.33,"  ",89.75,"   ",129.90,
salida,95.33,"   ",124.50,"   ",133.23,"  ",95.34,
salida.close()
print ,endl
}

void calcular_promedio(float valores[8][4],float promedio[8])
{
ifstream entrada
entrada.open("E://Datos//voltios1.txt")
int r=0,c=0
float suma=0
for(r=0r<8r++)
{
suma=0
for(c=0c<4c++)
{
entrada>>(valores[r][c])
suma=suma+valores[r][c]
}
promedio[r]=suma/4
}
entrada.close()
}

void desplegar_promedio(float promedio[8])
{
int r=0
float suma=0
float promediog=0
for(r=0r<8r++)
{
print ,"PROMEDIO  ",(r+1),"  : ",promedio[r],
}
for(r=0r<8r++)
{
suma=suma+promedio[r]
}
promediog=suma/8
print ,"PROMEDIO GENERAL: ",promediog,
}