Resolución Segundo Parcial Ejercicio 1 Escribir un programa en Lenguaje de Diseño que permita ingresar hasta 100 números enteros positivos, luego muestre: a) Todos los números ingresados múltiplos de 2. b) Todos los números ingresados múltiplos de 3 ubicados en posiciones pares. c) Todos los números ingresados múltiplos de 4 ubicados en posiciones impares. Nota: El programa debe respetar e implementar adecuadamente el concepto de modularización. SUBALGORITMO “INGRESO” (IN OUT A: ARREGLO DE ENTERO, IN LI: ENTERO, IN LS:ENTERO) I: ENTERO PARA I DESDE LI HASTA LS CON PASO 1 HACER ESCRIBIR “INGRESE UN NUMERO ENTERO POSITIVO” LEER A[I] MIENTRAS A[I]<1 HACER ESCRIBIR “INGRESAR NUEVAMENTE” LEER A[I] FINMIENTRAS FINPARA FIN SUBALGORITMO “MUESTRA” (IN OUT A: ARREGLO DE ENTERO, IN LI, LS, P: ENTERO, IN MUL: ENTERO) COMENZAR I: ENTERO PARA I DESDE LI HASTA LS CON PASO P HACER SI A[I]//MUL==0 ENTONCES ESCRIBIR A[I] FINSI FINPARA FIN ALGORITMO “PARCIAL” COMENZAR A:ARREGLO [1..100] DE ENTERO I, CANT: ENTERO ESCRIBIR “INGRESE CANTIDAD NECESARIA” LEER CANT MIENTRAS CANT < 1 O CANT >100 HACER ESCRIBIR “INGRESE CANTIDAD NUEVAMENTE” LEER CANT FINMIENTRAS INGRESO (A, 1, CANT) MUESTRA (A, 1, CANT, 1, 2) MUESTRA (A, 2, CANT, 2, 3) MUESTRA(A, 1, CANT, 2, 4) FIN Ejercicio 2 Escribir un programa en Lenguaje C, que permita ingresar una oración terminada con un punto, formada por palabras (letras minúsculas y mayúsculas) donde cada palabra se encuentra separada de la siguiente por UN espacio. Luego el programa deberá contar cuántas palabras tiene la oración. Si la cantidad de palabras supera a 10, transformar todas las minúsculas a mayúsculas. Las tareas de ingreso, cuenta y transformación deben llevarse a cabo mediante funciones independientes y no puede hacer uso de variables globales. #include <stdio.h> int ingreso(char p[], int ls) { int i=0; printf("Ingrese letra\n"); scanf("%c", &p[i]); getchar(); while((p[i]<'A' || (p[i]>'Z' && p[i]<'a') || (p[i]>'z')) && p[i]!=' ' && p[i]!='.'){ printf("Ingrese nuevamente letra o espacio\n"); scanf("%c", &p[i]); getchar(); } for ( i=0; i < ls && p[i-1]!='.'; i++ ){ printf("Ingrese letra o espacio\n"); scanf("%c", &p[i]); getchar(); while((p[i]<'A' || (p[i]>'Z' && p[i]<'a') || (p[i]>'z')) && p[i]!=' ' && p[i]!='.'){ printf("Ingrese nuevamente letra o espacio\n"); scanf("%c", &p[i]); getchar(); } } return(i); } int cuenta(char p[], int li, int ls, int limite) { int cant=0,i; for (i = li; i<=ls; i++){ if (p[i]==' ' || p[i]=='.') cant++; } if (i==limite) cant++; return(cant); } void transformacion(char A[], int li, int ls){ int i; for(i=li;i<ls;i++) if (A[i]>='a' && A[i]<='z') A[i]=A[i]-32; } int main() { char A[100]; int ls=100,limite=100,cont; ls=ingreso(A,ls); cont=cuenta(A,0,ls,limite); if (cont > 10) transformacion(A, 0, ls); return(0); } Ejercicio 3 Dado el siguiente programa: a) Especifique el ámbito de las variables (en hoja aparte, NO lo resuelva en la hoja del enunciado). b) Realice una ejecución completa del mismo, indicando el estado de todas las variables en las diferentes etapas. #include <stdio.h> int insertar(char p[],int tam) { int posi,i; char letra; printf (“Ingrese posicion\n”); scanf(“%d”, &posi); getchar(); printf (“Ingrese letra\n”); scanf(“%c”, &letra); getchar(); for (i = tam+1; i > posi; i--) p[i]=p[i-1]; p[i]=letra; return(0); } int ingreso(char p[], int tam) { int i; printf(“Ingrese la secuencia\n”); scanf(“%s”, p); getchar(); for ( i=0; p[i]!= ‘\0’ && i < tam; i++ ); return(i); } int main() { char pal[8]; int tamreal; tamreal = ingreso(pal,8); insertar(pal, tamreal); printf(“%s”, pal); return(0); } Ejecutar con el siguiente conjunto de datos: ‘p’,´a´,´r´,´c´,´a´,´l´,´\n’, 4, ´\n’ ´i´,´\n’ a) insertar Arreglo p, tam, posi, i, letra ingreso Arreglo p tam i main Arreglo pal tamreal main ingreso 4 5 tamreal = ingreso(pal,8); printf(“Ingre se la secuencia\n”); scanf(“%s”, ‘p’ ‘a’ ‘r’ ‘c’ ‘a’ ‘l’ p); getchar(); i=0 p[i]!= ‘\0’ && i < tam; (V) i++ p[i]!= ‘\0’ && i < tam; (V) i++ p[i]!= ‘\0’ && i < tam; (V) i++ p[i]!= ‘\0’ && i < tam; (V) i++ p[i]!= ‘\0’ && i < tam; (V) i++ p[i]!= ‘\0’ && i < tam; (V) i++ p[i]!= ‘\0’ && i < tam; (F) return(i); tamreal = ingreso(pal,8); insertar(pal, tamreal); printf (“Ingrese posicion\n”); scanf(“%d”, &posi); getchar(); printf (“Ingrese letra\n”); scanf(“%c”, &letra); getchar(); i = tam+1; i > posi (V) p[i]=p[i-1]; 6 7 ‘\0’ 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 i letra 3 posi 2 p tam 1 i p tam 0 tamrea l pal insertar Pantalla ‘p’ ‘a’ ‘r’ ‘c’ ‘a’ ‘l’ ‘\0’ 0 1 2 3 4 5 6 6 ‘p’ ‘a’ ‘r’ ‘c’ ‘a’ ‘l’ ‘\0’ 6 Ingrese posicion 4 Ingrese letra ‘i’ 7 ‘\0’ i-i > posi (V) p[i]=p[i-1]; i-i > posi (V) p[i]=p[i-1]; i-i > posi (F) p[i]=letra; return(0); printf(“%s”, pal); Return(0); 6 ‘l’ 5 ‘a’ 4 ‘i’ ‘p’ ‘a’ ‘r’ ‘c’ ‘i’ ‘a’ ‘l’ ‘l\0’ parcial