Você está na página 1de 12

LENGUAJE DE PROGRAMACION - SOLUCION DEL II PARCIAL Grupo A1: 1. Ingresar un conjunto de doce palabras (usar procedimiento ingreso()).

Luego, ingresar otra palabra, si sta no es igual a alguna de las doce ingresadas, el proceso ser considerado como un error. En caso contrario reportar la posicin que ocupa dicha palabra (usar procedimiento compara()).

#include <iostream.h> #include <conio.h> #include <string.h> #include <stdio.h> char x[13][10], y[10]; int n; main() { int h; void ingreso(void); int compara(char y[10]); clrscr(); ingreso(); cout<<"\nIngresar la palabra buscada: "; gets(y); h = compara(y); if(h!=-1) { cout<<"La palabra buscada se encuentra en la posicin: "<<h; } else { cout<<"La palabra buscada no ha sido encontrada"; } getch(); } void ingreso(void) { int i; for(i=1;i<=12;i++) { cout<<"Palabra N "<<i<<" : ";gets(x[i]); } } int compara(char y[10]) { int i, h; h=-1; for(i=1;i<=12;i++) if(strcmp(y,x[i])==0) h=i; return(h); } 2. Ingresar el nmero de elementos de un vector y cada uno de sus elementos, luego eliminar los elementos repetidos. Para esto, tomar cada elemento y compararlo con los restantes, en caso de ser uno igual al otro hay que eliminar el elemento repetido, copiando los elementos siguientes a una ubicacin anterior a su posicin actual y disminuyendo el nmero de elementos en 1. Usar punteros, funciones y/o procedimientos.

#include <iostream.h> #include <conio.h> int n, x[20]; main() { void ingreso(void); void repetido(void); void reporte(void); clrscr(); cout<<"Nmero de elementos de un vector: ";cin>>n;

ingreso(); repetido(); reporte(); getch(); } void ingreso(void) { int i; for(i=1;i<=n;i++) { cout<<"Elemento N "<<i<<" : ";cin>>*(x+i); } void repetido(void) { int i, h=1; do { for(i=h+1;i<=n;i++) { if(*(x+h)==*(x+i)) { *(x+i)=*(x+(i+1)); n=n-1; } } h=h+1; } while(h<=n); } void reporte(void) { int i; cout<<"\nVector Reducido\n\n"; for(i=1;i<=n;i++) { cout<<*(x+i)<<"\n"; } } 3. Un mdico almacena la siguiente informacin de sus pacientes: nombre, DNI, direccin, telfono, fecha de la ltima visita, si es o no privado (no tiene seguridad social), si tiene alergias y un campo de observaciones. Se desea un programa con las siguientes opciones: a) b) c) d) e) f) Introducir los registros interactivamente. Imprimir en pantalla toda la informacin del paciente. Dado el nmero del DNI de un paciente, hallar la fecha de la ltima visita. Listar todos los pacientes con alergias. Listar alfabticamente todos los pacientes privados. Imprimir el listado completo de pacientes.

#include <iostream.h> #include <conio.h> #include <stdio.h> #include <ctype.h> #include <string.h> main() { struct Pacientes { char Nombre[30], Direccion[20], Telefono[16], Fecha[16], Observaciones[60]; char Essalud, Alergias; long int DNI; } Paciente[10],Privado[10]; int x,i,n,p,j,m; long int DX; char h; do { clrscr();

cout<<"Opciones"<<endl<<endl; cout<<"1. Introduccion de registros"<<endl; cout<<"2. Impresion de informacion del paciente"<<endl; cout<<"3. Busqueda de fecha de ultima visita"<<endl; cout<<"4. Lista de pacientes con alergias"<<endl; cout<<"5. Lista de pacientes privados"<<endl; cout<<"6. Lista completa de pacientes"<<endl<<endl; cout<<"Elegir opcion: "; cin>>x; switch(x) { case 1: { i=1; n=0; do { cout<<endl<<"Datos del paciente "<<i<<" : "<<endl<<endl; cout<<"Nombre: ";gets(Paciente[i].Nombre); cout<<"DNI: ";cin>>Paciente[i].DNI; cout<<"Direccion: ";gets(Paciente[i].Direccion); cout<<"Telefono: ";gets(Paciente[i].Telefono); cout<<"Fecha de la ultima visita: ";gets(Paciente[i].Fecha); cout<<"Tiene seguridad social (S/N): ";Paciente[i].Essalud=toupper(getche()); cout<<endl<<"Tiene alergias (S/N): ";Paciente[i].Alergias=toupper(getche()); cout<<endl<<"Observaciones: ";gets(Paciente[i].Observaciones); i=i+1; cout<<endl<<"Desea continuar ingresando datos de otro paciente (S/N)"; h=toupper(getche()); cout<<endl; } while(h=='S'); n=i; break; } case 2: { p=-1; cout<<endl<<"DNI del paciente que desea reportar: ";cin>>DX; for(i=1;i<=n;i++) { if(DX==Paciente[i].DNI) p=i; } cout<<endl<<"Datos del paciente "<<p<<" : "<<endl; cout<<"Nombre: "<<Paciente[p].Nombre<<endl; cout<<"DNI: "<<Paciente[p].DNI<<endl; cout<<"Direccion: "<<Paciente[p].Direccion<<endl; cout<<"Telefono: "<<Paciente[p].Telefono<<endl; cout<<"Fecha de la ultima visita: "<<Paciente[p].Fecha<<endl; cout<<"Tiene seguridad social: "<<Paciente[p].Essalud<<endl; cout<<"Tiene alergias: "<<Paciente[p].Alergias<<endl; cout<<"Observaciones: "<<Paciente[p].Observaciones<<endl; break; } case 3: { p=-1; cout<<"DNI del paciente: ";cin>>DX; for(i=1;i<=n;i++) { if(DX==Paciente[i].DNI) p=i; } cout<<"Nombre: "<<Paciente[p].Nombre<<endl; cout<<"Fecha de la ultima visita: "<<Paciente[p].Fecha<<endl; break; } case 4: { cout<<"Lista de pacientes con alergias"<<endl;

for(i=1;i<=n;i++) { if(Paciente[i].Alergias=='S') cout<<"Nombre: "<<Paciente[i].Nombre<<endl; } break; } case 5: { cout<<"Lista de pacientes privados"<<endl; j=0; for(i=1;i<=n;i++) { if(Paciente[i].Essalud=='N') { j=j+1; strcpy(Privado[j].Nombre,Paciente[i].Nombre); } } m=j; for(j=1;j<=m;j++) { cout<<Privado[j].Nombre<<endl; } break; } case 6: { cout<<"Lista completa de pacientes"<<endl<<endl; for(i=1;i<=n;i++) { cout<<Paciente[i].Nombre<<endl; } break; } } cout<<endl<<"Desea continuar con el programa (S/N): "; h=toupper(getche()); cout<<endl; } while(h=='S'); getch(); } Grupo A2: 1. Ingresar por teclado tres cadenas y un nmero (n). Luego comparar los n primeros caracteres de dichas cadenas. Si las cadenas son iguales, reportar los n primeros caracteres. En caso contrario, concatenar dichas cadenas.

#include <iostream.h> #include <conio.h> #include <stdio.h> #include <string.h> main() { char a[20],b[20],c[20],x[20]; int n; clrscr(); cout<<"Primera cadena: "; gets(a); cout<<"Segunda cadena: "; gets(b); cout<<"Tercera cadena: "; gets(c); cout<<"Numero entero: "; cin>>n; if(strncmp(a,b,n)==0 && strncmp(b,c,n)==0) { strncpy(x,a,n); cout<<endl<<"Los "<<n<<" caracteres de las cadenas son: "; cout<<x; }

else { strcat(a,b); strcat(a,c); cout<<"Las cadenas concatenadas son: "<<a; } getch(); } 2. Ingresar el nmero de clientes de una empresa. Luego usando el procedimiento Ingresos() leer el nombre de cada cliente y el monto de sus compras. Posteriormente, ingresar el nombre de un determinado cliente empleando el procedimiento Bsquedas() y determinar el volumen de compras de dicho cliente. Finalmente, en el programa principal reportar el volumen de compras de dicho cliente.

#include <iostream.h> #include <conio.h> #include <stdio.h> #include <string.h> char Nombre[10][30]; float Monto[10],V; main() { void Ingresos(int); float Busqueda(int, char*); int n; char Clie[20]; clrscr(); cout<<"Numero de clientes: "; cin>>n; Ingresos(n); cout<<"Cliente buscado: "; gets(Clie); V=Busqueda(n,Clie); cout<<"Volumen de compras del cliente buscado: "<<V; getch(); } void Ingresos(int n) { int i; for(i=1;i<=n;i++) { cout<<"Datos del cliente: "<<i<<endl; cout<<"Nombre: "; gets(Nombre[i]); cout<<"Monto de compras: "; cin>>Monto[i]; } } float Busqueda(int n, char Clie[30]) { int i,p=-1; float Compra; for(i=1;i<=n;i++) { if(strcmp(Clie,Nombre[i])==0) p=i; } Compra=Monto[p]; return(Compra); } 3. Una tienda de alquiler de videos recopila informacin del cliente. Los campos usados son: nombre, direccin, nmero de telfono, tarifa de alquiler por da, nombre de la pelcula alquilada y nmero de das de alquiler. Usar las siguientes opciones: Introducir la informacin Dado el nombre de un cliente, determinar el monto de dinero que debe Dado el nombre de una pelcula determinar que cliente lo tiene.

Listar todos los clientes en forma alfabtica de acuerdo a su nombre

Grupo A3: 1. Ingresar un texto sin dejar espacios en blanco. Luego obtener el nmero de veces que se usa cada vocal en la frase.

#include <iostream.h> #include <conio.h> #include <string.h> main() { char X[50],P[50],Q[50],R[50],S[50],T[50]; int a,e,i,o,u,j; a=0;e=0;i=0;o=0;u=0; strcpy(P,""); strcpy(Q,""); strcpy(R,""); strcpy(S,""); strcpy(T,""); clrscr(); cout<<"Ingrese un texto (sin dejar espacios en blanco):\n\n";cin>>X; strupr(X); for(j=0;X[j];j++) { if(X[j]=='A') { a++; strcat(P,"*"); } if(X[j]=='E') { e++; strcat(Q,"*"); } if(X[j]=='I') { i++; strcat(R,"*"); } if(X[j]=='O') { o++; strcat(S,"*"); } if(X[j]=='U') { u++; strcat(T,"*"); } } cout<<"\na: "<<a<<" "<<P<<endl; cout<<"e: "<<e<<" "<<Q<<endl; cout<<"i: "<<i<<" "<<R<<endl; cout<<"o: "<<o<<" "<<S<<endl; cout<<"u: "<<u<<" "<<T<<endl; getch(); } 2. Dada una matriz A de orden 12 x 9, con elementos A[i][j] reales, se desea calcular la matriz B de elementos B[i][j]=A[i][j] / mnimo{A[i][j]}, para todo (i, j). Si el mnimo{A[i][j]} fuera cero, se debe utilizar el mximo{A[i][j]}. Si ambos fueran cero, entonces B[i][j] = i x j. Como resultado se debe imprimir primero la matriz A y luego la matriz B. Usar punteros.

#include <iostream.h> #include <conio.h> #include <stdio.h> #include <string.h> main() { float A[12][9], B[12][9], Min=32767.0, Max=-32768.0; int i,j; clrscr(); for(i=1;i<=12;i++) { for(j=1;j<=9;j++) { cout<<"Elemento fila "<<i<<" columna "<<j<<" : "; cin>>*(*(A+i)+j); } } for(i=1;i<=12;i++) { for(j=1;j<=9;j++) { if(*(*(A+i)+j)<Min) Min=*(*(A+i)+j); if(*(*(A+i)+j)>Max) Max=*(*(A+i)+j); } } for(i=1;i<=12;i++) { for(j=1;j<=9;j++) { if(Min==0) *(*(B+i)+j)=*(*(A+i)+j)/Max; else if(Min==0 && Max==0) *(*(B+i)+j)=i*j; else *(*(B+i)+j)=*(*(A+i)+j)/Min; } } cout<<"Matriz original"<<endl<<endl; for(i=1;i<=12;i++) { for(j=1;j<=9;j++) { cout<<*(*(A+i)+j)<<" "; } cout<<endl; } cout<<"Matriz resultante"<<endl<<endl; for(i=1;i<=12;i++) { for(j=1;j<=9;j++) { cout<<*(*(B+i)+j)<<" "; } cout<<endl; } getch(); } 3. Una industria fonogrfica registra informacin acerca de la grabacin de cada disco de audio en un arreglo de estructuras, almacenando la siguiente informacin: ttulo, autor, fecha de publicacin y duracin (en segundos). Crear las siguientes opciones: a) b) c) Nmero de canciones con una duracin mayor de 150 segundos Nmero de canciones de cada autor Antigedad de la publicacin de cada cancin

Grupo A4:

1.

Ingresar el nmero de cadenas a evaluar y cada una de ellas. Ordenar las cadenas de acuerdo a su longitud en forma ascendente.

#include <iostream.h>

#include <conio.h> #include <stdio.h> #include <string.h> main() { char cadena[10][20],r[20]; int i,j,n,t,longitud[10]; clrscr(); cout<<"Nmero de cadenas : "; cin>>n; for(i=1;i<=n;i++) { cout<<"Cadena N "<<i<<" "; gets(cadena[i]); longitud[i]=strlen(cadena[i]); } cout<<"\n"; for(i=1;i<=n-1;i++) { for(j=i+1;j<=n;j++) { if(longitud[i]>longitud[j]) { strcpy(r,cadena[i]); strcpy(cadena[i], cadena[j]); strcpy(cadena[j],r); t=longitud[i]; longitud[i]=longitud[j]; longitud[j]=t; } } } clrscr(); gotoxy(5,1);cout<<"Cadenas ordenadas de acuerdo a su longitud"; gotoxy(5,3);cout<<"Cadena Longitud"; for(i=1;i<=n;i++) { gotoxy(5,4+i);cout<<cadena[i]; gotoxy(44,4+i);cout<<longitud[i]; } getch(); }

2.

Ingresar el nmero de alumnos matriculados en el curso de Programacin, el nombre y el promedio de las notas de cada uno de ellos. Reportar una lista en la cual se ordena o clasifica (sort) a los alumnos de acuerdo a su promedio en forma descendente. Usar los procedimientos ingresos(), ordenamiento() y reportes(); as mismo, emplear punteros.

#include <iostream.h> #include <conio.h> #include <string.h> #define LIM 10 char nombre[LIM][12]; int nota[LIM]; void main() { void ingresos(int); void resultados(int); void reportes(int); int n; clrscr(); gotoxy(10,2);cout<<"Ingrese el nmero de alumnos de la seccin: "; gotoxy(55,2);cin>>n; ingresos(n); resultados(n); reportes(n); getch(); }

void ingresos(int n) { register int i; clrscr(); gotoxy(10,2);cout<<"Nombre for(i=1;i<=n;i++) { gotoxy(10,i+3);cin>>nombre[i]; gotoxy(40,i+3);cin>>nota[i]; } } void ordenamiento(int n) { register int i,j; int r; auto char k[12]; for(i=1;i<=n-1;i++) { for(j=i+1;j<=n;j++) { if(nota[i]<nota[j]) { r=nota[i]; nota[i]=nota[j]; nota[j]=r; strcpy(k,nombre[i]); strcpy(nombre[i],nombre[j]); strcpy(nombre[j],k); } } } } void reportes(int n) { register int i; clrscr(); gotoxy(10,2);cout<<"Orden de mrito"; gotoxy(10,4);cout<<"N Nombre for(i=1;i<=n;i++) { gotoxy(10,i+5);cout<<i; gotoxy(16,i+5);cout<<nombre[i]; gotoxy(45,i+5);cout<<nota[i]; } }

Nota";

Nota";

3.

Se desea crear un arreglo de estructuras con los datos de los estudiantes de una determinada universidad. Los campos de la estructura son: nmero de matrcula, nombre, sexo, edad, cursos y promedio ponderado. El campo cursos a su vez es otra estructura que est formada por los campos: nombre del curso, nmero de crditos y nota. El campo promedio ponderado se obtiene sumando los productos de las notas por el nmero de crditos de cada curso, luego este resultado se divide entre la suma de los nmeros de crditos. Escribir un programa con las siguientes opciones:
Ingreso de datos Ingresar el nmero de matrcula de un alumno y reportar sus datos Orden de Mritos (lista de alumnos ordenados por promedio ponderado en forma descendente) Listado de datos de los alumnos por orden alfabtico creciente.

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

#include <string.h> main() { struct Cursos { char NombreCurso[20]; int Creditos; float Nota; }; struct Universidad { long int NumMatricula; char NombreEst[30]; char Sexo; int Edad; struct Cursos Curso[6]; float Promedio; } Estudiante[10]; int x,i,n,m[10],c[10],Ed,q,j,k; long int NM,Mat; char h,sex; char alum[30]; float p[10],prom; do { clrscr(); cout<<"Opciones"<<endl<<endl; cout<<"1. Ingreso de datos"<<endl; cout<<"2. Datos de un alumno dado su numero de matricula"<<endl; cout<<"3. Orden de meritos"<<endl; cout<<"4. Lista de alumnos por orden alfabetico creciente"<<endl<<endl; cout<<"Elegir opcion: "; cin>>x; switch(x) { case 1: { i=0; n=0; do { i=i+1; cout<<endl<<"Datos del alumno "<<i<<" : "<<endl<<endl; cout<<"Numero de matricula: ";cin>>Estudiante[i].NumMatricula; cout<<"Nombre: ";gets(Estudiante[i].NombreEst); cout<<"Sexo M/F): ";Estudiante[i].Sexo=toupper(getche()); cout<<endl<<"Edad: "; cin>>Estudiante[i].Edad; cout<<"Numero de cursos elegidos: ";cin>>m[i]; for(j=1;j<=m[i];j++) { cout<<"Datos del curso "<<j<<" : "<<endl; cout<<"Nombre: "; gets(Estudiante[i].Curso[j].NombreCurso); cout<<"Creditos: "; cin>>Estudiante[i].Curso[j].Creditos; cout<<"Nota: "; cin>>Estudiante[i].Curso[j].Nota; } cout<<endl<<"Desea continuar ingresando datos de otro alumno (S/N)"; h=toupper(getche()); cout<<endl; } while(h=='S'); n=i; break; } case 2: { q=-1; cout<<endl<<"Numero de matricula del alumno que desea reportar: ";cin>>NM; for(i=1;i<=n;i++) { if(NM==Estudiante[i].NumMatricula) q=i;

} cout<<endl<<"Datos del alumno "<<q<<" : "<<endl; cout<<"Numero de matricula: "<<Estudiante[q].NumMatricula<<endl; cout<<"Nombre: "<<Estudiante[q].NombreEst<<endl; cout<<"sexo: "<<Estudiante[q].Sexo<<endl; cout<<"Sexo: "<<Estudiante[q].Edad<<endl; cout<<"Promedio ponderado: "<<Estudiante[q].Promedio<<endl<<endl; break; } case 3: { for(i=1;i<=n;i++) { p[i]=0; for(j=1;j<=m[i];j++) { p[i]=p[i]+Estudiante[i].Curso[j].Creditos*Estudiante[i].Curso[j].Nota; c[i]=c[i]+Estudiante[i].Curso[j].Creditos; } Estudiante[i].Promedio=p[i]/c[i]; } for(i=1;i<=n-1;i++) { for(k=i+1;k<=n;k++) { if(Estudiante[i].Promedio<Estudiante[k].Promedio) { prom=Estudiante[i].Promedio; Estudiante[i].Promedio=Estudiante[k].Promedio; Estudiante[k].Promedio=prom; Mat=Estudiante[i].NumMatricula; Estudiante[i].NumMatricula=Estudiante[k].NumMatricula; Estudiante[k].NumMatricula=Mat; strcpy(alum,Estudiante[i].NombreEst); strcpy(Estudiante[i].NombreEst,Estudiante[k].NombreEst); strcpy(Estudiante[k].NombreEst,alum); sex=Estudiante[i].Sexo; Estudiante[i].Sexo=Estudiante[k].Sexo; Estudiante[k].Sexo=sex; Ed=Estudiante[i].Edad; Estudiante[i].Edad=Estudiante[k].Edad; Estudiante[k].Edad=Ed; } } } cout<<"Lista de alumnos ordenados por promedio ponderado en forma descendente"<<endl; for(i=1;i<=n;i++) { cout<<endl<<"Datos del alumno "<<i<<" : "<<endl; cout<<Estudiante[i].NumMatricula<<endl; cout<<Estudiante[i].NombreEst<<endl; cout<<Estudiante[i].Sexo<<endl; cout<<Estudiante[i].Edad<<endl; cout<<Estudiante[i].Promedio<<endl<<endl; } break; } case 4: { cout<<"Lista de datos de alumnos por orden alfabtico creciente."<<endl<<endl; for(i=1;i<=n-1;i++) { for(k=i+1;k<=n;k++) { if(strcmp(Estudiante[i].NombreEst,Estudiante[k].NombreEst)>0) { prom=Estudiante[i].Promedio; Estudiante[i].Promedio=Estudiante[k].Promedio; Estudiante[k].Promedio=prom; Mat=Estudiante[i].NumMatricula;

Estudiante[i].NumMatricula=Estudiante[k].NumMatricula; Estudiante[k].NumMatricula=Mat; strcpy(alum,Estudiante[i].NombreEst); strcpy(Estudiante[i].NombreEst,Estudiante[k].NombreEst); strcpy(Estudiante[k].NombreEst,alum); sex=Estudiante[i].Sexo; Estudiante[i].Sexo=Estudiante[k].Sexo; Estudiante[k].Sexo=sex; Ed=Estudiante[i].Edad; Estudiante[i].Edad=Estudiante[k].Edad; Estudiante[k].Edad=Ed; } } } for(i=1;i<=n;i++) { cout<<endl<<"Datos del alumno "<<i<<" : "<<endl; cout<<Estudiante[i].NumMatricula<<endl; cout<<Estudiante[i].NombreEst<<endl; cout<<Estudiante[i].Sexo<<endl; cout<<Estudiante[i].Edad<<endl; cout<<Estudiante[i].Promedio<<endl<<endl; } break; } default: { goto fin; break; } } cout<<endl<<"Desea continuar con el programa (S/N): "; h=toupper(getche()); cout<<endl; } while(h=='S'); fin: getch(); }