Вы находитесь на странице: 1из 4

UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS

FACULTAD DE INGENIERIA INDUSTRIAL SOLUCION EXAMEN PARCIAL DE ALGORITMOS Y PROGRAMACIN ( 2010-1 ) TIEMPO: 1 Hr.50Min
Indicaciones 1) Resuelva cada pregunta en pginas diferentes. 2) Cualquier funcin adicional que requiera en su solucin; debe escribirla necesariamente. 3) No se aceptarn reclamos en exmenes desarrollados con lpiz ni con correctores lquidos.

Pregunta 1: ( 5 puntos )

Se tiene una variable cadena que almacena un conjunto de caracteres, en base a esta se pide generar un vector de cadena que almacene solo las palabras que el usuario haya seleccionado. La generacin del vector se da del siguiente modo, las palabras van mostrndose en pantalla e inmediatamente la pregunta Desea incluir en el vector (s/n):, al responder S o s, se almacena la palabra en el vector, caso contrario no se almacena (ver ejemplo). Implementar la funcin int GenerarVectorCadena(char c[], char nc[N][M]).
#include <iostream> #include <string.h> const int N=254,M=30; using namespace std; int main() { char cad[N],X[N][M]; int n; Leer(cad); N = GenerarVectorCadena(cad, X); VerVectorCadena(X, n); system("pause"); }

PROPUESTAY SOLUCION: FELIX HUARI E.


int GenerarVectorCadena(char c[],char nc[N][M]) { int i=0,j=0,k=0; char p[255],op; strcat(c," "); while(c[i]!='\0') { if(c[i]!=' ') { p[j]=c[i]; j++;

} else { p[j]='\0';j=0; cout<<p<<"\t:";cout<<"Desea incluir en el vector(s/n):"; cin>>op; if((op=='s') || (op=='S')) { strcpy(nc[k],p); k++; strcpy(p,""); } } i++; } return k; }

Pregunta 2: ( 5 puntos )

Un polinomio se puede representar usando un arreglo, almacenando los coeficientes que corresponden a cada trmino en las posiciones indicadas por los exponentes de los mismos. Por ejemplo: P(x) = 5x4 - 2x3 + 7x2 9x + 8 que es un polinomio de grado 4 se almacenara en un arreglo de la siguiente manera: 8 0 -9 1 7 2 -2 3 5 4 5 6 7 8 9

Una funcin para evaluar polinomios en un valor de x sera:


double evalua( double p[N], int g, double x ) { int i; double y = 0; for( i=0; i<=g; i++ ) y = y + p[i]*pow(x,i); return y; }

Escribir la versin recursiva de la funcin evalua.


PROPUESTA Y SOLUCION: HILMAR HINOJOSA LAZO
double evalua( double p[N], int g, double x ) { double y; if ( g == 0 ) // CASO BASE return p[0]; else // CASO GENERAL { y = evalua( p , g-1 , x ); return y + p[g]*pow(x,g); } }

Pregunta 3: ( 5 puntos )

Se definen las siguientes estructuras: struct fecha { int d; int m; int a; }; struct empleado { char nom[20]; fecha fn; // fecha de nacimiento }; Escribir el cdigo de la siguiente funcin: bool ordenado ( empleado e[N], int ne, empleado &x ); que devuelve true si los empleados estn ordenados ascendentemente por su fecha de nacimiento. En caso contrario la funcin devuelve false y en el parmetro x los datos del empleado que permiten detectar que el arreglo no est ordenado de acuerdo al criterio establecido. PROPUESTA Y SOLUCION: HILMAR HINOJOSA LAZO long dias( fecha f ) { return f.a * 365 + f.m * 30 + f.d; } bool ordenado ( empleado e[N], int ne, empleado &x ) { int i; for ( i=0; i < ne-1 ; i++ ) if ( dias( e[i].fn ) > dias( e[i+1].fn ) ) { x = e[i+1]; return false; } return true; }

Pregunta 4: ( 5 puntos ) Restriccin: Resuelva esta pregunta utilizando punteros y/o punteros a cadena.

Escribir la funcin: bool HayCincoVocales(char* s); Esta funcin devuelve un valor de verdad si es que en la cadena s existen las cinco vocales. Debe tener en cuenta que una vocal puede estar en mayscula o en minscula o incluso repetirse.
PROPUESTA Y SOLUCION: EDGAR RUIZ LIZAMA
bool HayCincoVocales(char* s) { strlwr(s); // pasamos a minusculas char *vocal = "aeiou"; int tam = strlen(vocal); int *contVoc = new int[tam]; // array contador de vocales int i; for (i = 0; i < tam; i++) contVoc[i] = 0; // llenamos con 0 los contadores // empezamos a contar la frecuencia de las vocales while(*s) { for (i = 0; i < tam; i++) { if( vocal[i] == *s) { contVoc[i]++; break; } } s++; } // Probamos si hay algun 0 en el array for (i=0; i<tam; i++) if (contVoc[i] == 0) return false; // Falta una vocal o mas return true; // Si se encuentran las cinco vocales }

Profesores: Ing. Flix Huari Evangelista Ing. Hilmar Honojosa Lazo Ing. Omar Alvarez Diaz. Ing. Edgar Ruiz Lizama 14 de Mayo de 2010

Вам также может понравиться