Resolución Segundo Parcial

Anuncio
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
Descargar