UNIVERSIDAD TECNOLÓGICA DE LA MIXTECA 2do. Examen Parcial. 18 de diciembre del 2002. Grupo 104-A. Nombre: Conteste cuidadosamente el siguiente cuestionario, recuerde que sus respuestas deben ser exactas debido a que no existen medios puntos. No esta permitido hablar con sus compañeros por ningún motivo, si necesita algo consúltelo con el profesor. Dispone de 1 hora y 45 minutos para resolver el examen. 1.- El siguiente fragmento de código contiene errores, rescriba el código correctamente. int i; for( i = 0; i > 10; i++); printf(“%f\n”, i); 2.- Explique que es lo que realiza el siguiente programa. Escriba un comentario junto a cada linea del mismo. 1#include <stdio.h> 2#include <string.h> 3void main(){ 4 char a[50] , b[50], c[50]; 5 int r, i, j; 6 printf(“Escribe la frase\n”); 7 gets(a); 8 for(i=0, j = 0; a[i] != ‘\0’; i++) 9 if(a[i] == ‘ ‘) continue; 10 else{ 11 b[j] = a[i]; 12 j++; 13 } 14 b[j] = ‘\0’; 15 for(i = 0, j = strlen(b) - 1; i < strlen(b); i++, j--) 16 c[i] = b[j]; 17 c[i]= ‘\0’; 18 r = strcmp(b, c); 19 if ( r == 0) printf(“\nBravo\n”); 20 else printf(“\nNi modo\n”); 21} 3.- Rescriba el código del algoritmo de la burbuja para que funcione con la siguiente estructura: struct tienda{ char producto[20]; char marca[30]; int precio; }; struct tienda oficina[20]; debe ordenar los datos por marca. 4.-Diga que es lo que realiza el siguiente codigo: y haga una prueba de escritorio: for(i =1; i<=5; i++){ for(j=0; j < i; j++) printf(“ “); for(k=5; k>=i; k--) printf(“*“); } 5.- Indique que hacen las funciones de la siguiente página. Ponga comentarios junto a cada línea. ¿Cuál es la condición para que trabajen correctamente? int funcion1(char L){ if(L == 'A' || L == 'E' || L == 'I' || L == 'O' || L == 'U') return 1; else return 0; } char funcion2(char *a){ int i; i = 1; while(!funcion1(a[i])) i++; return a[i]; } Rescate.- Diga cual es la nacionalidad de Krustie. Cuando se escala una pared muy alta, lo peor que podemos hacer es mirar hacia abajo. SOLUCION 1.- int i; for( i = 0; i < 10; i++); printf(“%d\n”, i); 2.- (1) Librería para usar printf y gets. (2) Librería para usar strlen y strcmp. (3) Inicio de la función principal. (4) Declaración de 3 cadenas a, b y c. (5) Declaración de los índices para las cadenas. (6) Mensaje para solicitar datos. (7) Leer cadena del teclado y guardarla en a. (8) Ciclo para recorrer la cadena a hasta su final. Iniciar índices al inicio. Incrementar índice de la cadena a para cambiar de letra. (9) Saltar espacios en blanco. (10)(11)(12)(13) Copiar letra de a en b, cambiar de posición índice de cadena b para copiar la siguiente letra. (14) Terminar la cadena b con el carácter nulo. La cadena b es la cadena a pero sin espacios. (15)(16) Ciclo para copiar la cadena b en la cadena c pero al revés. La cadena b se recorre desde el final (posición igual a strlen(b) – 1) y la cadena c desde el inicio. Se incrementa el índice de c y se disminuye el índice de b. (17) Se termina la cadena c con el carácter nulo y la cadena c es la cadena b pero al revés. (18) Se comparan las cadenas b y c para ver si son iguales. (19)(20) Si son iguales la comparación es igual a cero y entonces imprime eureka. Si no son iguales imprime ni modo. (21) Fin de la función principal y del programa. 3.- struct tienda t; do{ bandera = 0; for(i = 0; i < N-1; i++) if(strcmp(oficina[i].marca, oficina[i+1].marca)>0){ t = oficina[i]; oficina[i] = oficina[i+1]; oficina[i+1] = t; bandera = 1; } }while(bandera == 1); 4.i j 1 k 0 Impresión en pantalla i j k Impresión en pantalla 4 0 1 ‘ ‘*****’ ‘’ ‘****’ ‘’ ‘ ‘***’ ‘ ‘ ‘*****’ ‘’ ‘****’ ‘’ ‘ ‘***’ ‘’ ‘ 4 ‘ ‘** 2 ‘ ‘*****’ ‘’ ‘****’ ‘’ ‘ ‘***’ ‘’ ‘’ ‘ 3 ‘ ‘*** 2 ‘ ‘**** 3 ‘ ‘*****’ ‘’ ‘****’ ‘’ ‘ ‘***’ ‘’ ‘’ ‘’ ‘ 5 ‘ ‘*****’ ‘’ ‘****’ ‘’ ‘ ‘***’ ‘’ ‘’ ‘’ ‘* ‘‘ 5 ‘ ‘* 1 ‘ ‘***** 2 0 1 ‘ ‘*****’ ‘ ‘ ‘*****’ ‘’ ‘ 0 1 ‘ ‘*****’ ‘’ ‘****’ ‘’ ‘ ‘***’ ‘’ ‘’ ‘’ ‘**’ ‘ ‘ ‘*****’ ‘’ ‘****’ ‘’ ‘ ‘***’ ‘’ ‘’ ‘’ ‘**’ ‘’ ‘ 5 ‘ ‘*****’ ‘’ ‘* 2 ‘ ‘*****’ ‘’ ‘****’ ‘’ ‘ ‘***’ ‘’ ‘’ ‘’ ‘**’ ‘’ ‘’ ‘ 4 ‘ ‘*****’ ‘’ ‘** 3 ‘ ‘*****’ ‘’ ‘*** 3 4 ‘ ‘*****’ ‘’ ‘****’ ‘’ ‘ ‘***’ ‘’ ‘’ ‘’ ‘**’ ‘’ ‘’ ‘’ ‘ ‘ ‘*****’ ‘’ ‘****’ ‘’ ‘ ‘***’ ‘’ ‘’ ‘’ ‘**’ ‘’ ‘’ ‘’ ‘’ ‘ 2 ‘ ‘*****’ ‘’ ‘**** 3 4 ‘ ‘*****’ ‘’ ‘****’ ‘’ ‘ ‘***’ ‘’ ‘’ ‘’ ‘** 0 1 ‘ ‘*****’ ‘’ ‘****’ ‘ ‘ ‘*****’ ‘’ ‘****’ ‘’ ‘ 2 ‘ ‘*****’ ‘’ ‘****’ ‘’ ‘ ‘ 5 ‘ ‘*****’ ‘’ ‘****’ ‘’ ‘ ‘* 5 5 ‘ ‘*****’ ‘’ ‘****’ ‘’ ‘ ‘***’ ‘’ ‘’ ‘’ ‘**’ ‘’ ‘’ ‘’ ‘’ ‘* 4 ‘ ‘*****’ ‘’ ‘****’ ‘’ ‘ ‘** 3 ‘ ‘*****’ ‘’ ‘****’ ‘’ ‘ ‘*** Imprime lo siguiente ‘ ‘*****’ ‘’ ‘****’ ‘’ ‘ ‘***’ ‘’ ‘’ ‘’ ‘**’ ‘’ ‘’ ‘’ ‘’ ‘*, sin saltarse de linea. 5.//Esta funcion devuelve verdadero si la letra que se le pasa como parámetro es vocal y falso si //no int funcion1(char L){ if(L == 'A' || L == 'E' || L == 'I' || L == 'O' || L == 'U')//Comparar la letra con todas las vocales mayúsculas return 1;//Devuelve verdadero si es una de las vocales else return 0;//Devuelve falso en caso contrario } //Esta función busca la primer vocal interna en una cadena que se le pasa como parámetro char funcion2(char *a){ int i;//índice para recorrer la cadena i = 1;//comenzar en la segunda posición(la primera es cero), por ello busca la primer vocal interna while(!funcion1(a[i])) i++;//mientras no se localice la vocal, seguir buscando en las letras siguientes return a[i];//devolver como resultado la primer vocal interna } La condición para que funcionen es que la cadena en la función2 sea convertida previamente a mayúsculas.