Está en la página 1de 5

UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS

Facultad de Ingeniería de Sistemas e informática


Curso: Programación de Computadoras I
EAP Ingeniería de Sistemas
G. A. Salinas A.
S03 Estructuras de control Repetitivas

I. Objetivos
Analizar, diseñar soluciones algorítmicas adecuadas utilizando ls estructuras de control repetitivas en la
solución de problemas siguiente las etapas del análisis y diseño.

II. Actividades
• Analice las soluciones desarrolladas identificando el conjunto de datos entrada, salida y procesos
seguidos para la solución.
• Analice y diseñe a partir del enunciado de los problemas identificando el conjunto de datos de entrada y
salida.
• Implemente el algoritmo que resuelva el problema identificando los datos de entrada, de procesamiento
y de salida.

III.Ejercicios
En los ejercicios de 1 al 4 analice la solución determinando los datos de entrada, salida y construya el
algoritmo en seudocodigo, luego compile, ejecute y analice los resultados.
1. Utilizando las estructuras de control MIENTRAS Y HACER-MIENTRAS se lee caracteres a través del
teclado hasta que se lee la letra “F”, esto es, termina el programa, pero es el usuario quien determina si
sale o continua.
2. Determina la suma de la serie: 1,5,3,7,5,9,7, ... 21.
3. Se leen números de tres dígitos y determina la suma de dichos dígitos
4. Determina el valor de PI a través de la expresión: 4/1 - 4/3 + 4/5 - 4/7 + ... + 4/N.
Analice, diseño y especifique cada una de las soluciones:

int main() //P01 int main ()//P02


{ {
char a; int serie=1;
'
for(a='x'; a!='F'; ){ int sw=1;
a= getche(); do{
//Lee un caracter hasta leer 'F' printf("%d, ",serie);
} if (sw>0)
serie=serie+4;
system("pause"); else
return(0); serie=serie-2;
} sw=sw*(-1);
//printf("sw=%d",sw);
}while (serie<=21);
printf("\n\n");

system("PAUSE");
return 0;
}

1
int main (){ //P03 int main(){ P04
int num, aux, suma=0; int index;
printf("Ingrese un numero de 3 digitos: "); float nume, deno, suma, termi, error;
scanf("%d",&num); nume = 4;
if (num>=100 && num<1000){ deno = 1;
aux = num; termi = nume/deno;
while (aux!=0){ suma = 0.0;
suma=suma+(aux%10); //suma el ultimo digito de aux index = 1;
aux=aux/10; //elimina el ultimo digito de aux cin>> error;
} while(termi > error){
printf("Suma de digitos de %d es : %d\n\n",num, suma); termi = nume/deno;
} if(index%2 != 0) {
else suma = suma + termi;
printf("\aERROR: %d NO tiene 3 digitos\n\n", num); } else {
suma = suma - termi;
system("PAUSE"); }
return 0; index = index + 1;
} deno = deno + 2;
}
printf(" VAlor de PI = %20.10f\n\n", suma);
printf("Con una error de : %20.10f\n\n", error);
printf("Terminos utilizados : %20.10f\n",
(float)index);
printf("Valor ultimo Termino: %20.10f\n\n", termi);

system("pause");
return(0); system("PAUSE");
return 0;
}

5. Implemente un programa para jugar a adivinar un número entre 0 y 90. El programa tiene que dar pistas de
si el número ingresado es mayor o menor al número buscado. El juego termina cuando se adivina el
número, cuando excede al número máximo de oportunidades (5) o decide terminar el juego.
6. Analice, construya el algoritmo, la traza y diga lo que hace cada uno de los programas. Luego generalice el
programa. ¿Qué hace el programa?

int main() //a int main()//b


{ {
int x=0, y=0, n; int n, x, y=1;
float s; scanf ("%d", &n);
scanf("%d", &n); x=n;
while(x<n){ while(y != n){
x = x+1; x=x+n;
y = y+x; y=y+1;
} }
s = (float)y/2; printf("s= %d\n\n", x);
printf(" = %f\n\n", s); system("pause");
system("pause"); return 0;
return 0; }
}

2
7. En los siguientes programas construya el seudo código, la traza para determinar lo que hace completar los
programas indicando adecuadamente lo que hacen:

void prog71()//7.1 void prog72() //7.2


{ {
int x=0, y=0, n; int x, y, z, w;
float s; scanf("%d", &x);
scanf("%d", &n); scanf("%d", &y);
while(x<n){ z=x; w=y;
x = x+1; while(w>0){
y = y+x; z=z-1;
} w=w-1;
s = (float)y/2; }
printf(" = %f\n\n", s); printf("z= %d", z);
} }

void prog73() //7.3 void pro74() // 7.4


{ {
int n, x, y=1; int a, b, c, x, z;
scanf ("%d", &n); scanf("%d", &x);
x=n; a=1; b=0; c=x; z=0;
while(y != n){ while(c>0){
x=x+n; z=z+a+b;
y=y+1; b=b+2*a+1;// Que pasa si …?
} a=a+3;
printf("s= %d\n\n", x); c=c-1;
} }
printf("z= %d\n\n", z);
}

void prog75() //7.5 void codigoAscii() //7.6


{ {
int i, x=1, y=2;
int x, y,z, u, w;
scanf("%d", &x); system("cls");
scanf("%d", &y); gotoxy(30,1);
z=0; w=y; printf("TABLA DE CODIGOS ASCII");
while(w>0){ gotoxy(24,25);
printf("...Presiones ENTER para continuar ...");
z=z+x; /*imprime el CODIGO ASCII*/
w=w-1; for (i=0; i<257; i++){
} gotoxy(x,y);
w= y - 1; printf("%3d %3c", i,i);
u = z; y = y + 1;
if (y>22){
while(w>0){ y=2;
z=z+u; x = x + 8;
w=w-1; getch();
} }
printf("z = %d\n\n", z); }
getch();
} gotoxy(24,26);
}

3
8. A todos los ejercicios de estructuras de control secuencial y selectivas, la(s) E. C. Repetitiva(s) adecuada(s)
convirtiendo así en una solución mas general, esto es, el usuario podrá realizar ejecuciones de los mismos
las veces que desea.
9. Implemente un programa que muestre la serie de Fibonacci: 0, 1, 1,2,3,5,8,13, 21, …, como habrá notado
los primeros termino son 0 y 1, los siguientes son la suma de dos anteriores.
10. Escribir un programa que calcule los centros numéricos entre 1 y n. Un centro numérico es un número que
separa una lista de números enteros (comenzando en 1) en dos grupos de números, cuyas sumas son
iguales. El primer centro numérico es el 6, el cual separa la lista (1 a 8) en los grupos: (1, 2, 3, 4, 5) y (7,
8) cuyas sumas son ambas iguales a 15. El segundo centro numérico es el 35, el cual separa la lista (1 a
49) en los grupos: (1 a 34) y (36 a 49) cuyas sumas son ambas iguales a 595.
11. Dado un numero entero determinar si es un numero primo o no mostrando todos sus divisores.
12. Implementa un programa que muestre solo los números Fibonacci de 2 y 3 dígitos.
13. Se desea un programa que lea un número natural y diga si es o no es triangular. Un número N es triangular
si, y solamente si, es la suma de los primeros M números naturales, para algún valor de M. Ejemplo: 6 es
triangular pues 6 = 1 + 2 + 3.
14. Un cierto curso tiene 10 practicas calificadas se pide determinar el promedio si se elimina una de las notas
más bajas de un grupo de n alumnos.
15. Escriba una tabla con los n primeros enteros con sus respectivos cuadrado, cubo, y cuarta potencia (no se
permite el uso de librerías del lenguaje).

TABLA
Cuadrados, cubos y cuarta potencia
======================================
No Cuadrado Cubo CuartaPotencia
----------------------------------------------------------------
1 1 1 1
2 4 8 16
… …. … ….
9 81 729 6561
----------------------------------------------------------------
16. Implemente un programa que lea el valor de N y calcule la suma de la expresión: 1-1/2+1/3-1/4+…±1/N
17. El curso Algorítmica I tiene 25 alumnos y cada uno de ellos tiene cinco practicas calificadas si se elimina
una de las más bajas, se pide determinar, el promedio de cada uno de ellos, el promedio más bajo, el
promedio más alto y el promedio general.
18. Escriba un programa dado un entero N calcule la suma de 11+22+33+…NN. No se permite uso de librerías
de C.
19. Una empresa desea un programa para operación de caja de un supermercado el programa debe capturar el
precio del producto que puede variar entre 1 y 1000 soles y cuando el cliente pague la cuenta el programa
debe informar a la cajera la conformación de billetes y monedas que le corresponde al cliente como vuelto
de acuerdo a los billetes y monedas vigentes: 200, 100, 50, 20, 10, 5, 2, 1, 0.50, 0.20, 0.10, 0.05 soles.
Utilizar operadores MODULO y DIV.
20. Construya un programa para las operaciones que se muestra en el menú de opciones.
OPERACIONES
7 Suma
6 Resta
5 Multiplicación
4 División
3 Área Cuadrado
2 Área Rectángulo
1 Área Circulo
0 SALIR

21. Construya un programa para simular un reloj digital, la hora, minutos, segundos y centésimas de segundo
de un determinado día desde las 00:00:00:00 horas hasta las 23:59:59:99 horas

4
22. Leer los 300,000 votos otorgados a los 4 candidatos cuyo identificador es 1 candidato 1, 2 candidato 2 y así
sucesivamente para determinar el gobernador de una determinada región e imprimir el número de votos
para cada candidato y el candidato ganador y la cantidad de votos obtenido (utilice el generador de
números random de C vea su texto). Véase [Programación C Joyanes 2005 Funciones aleatorias p271]

23. En la FISI hay 5 secciones del curso de Programación y fundamentos de algorítmica; determinar la sección
con el mayor promedio, la máxima y mínima nota de cada sección, el promedio de cada sección; sabiendo
que cada sección toma 5 practicas calificadas y solo se promedian las cuatro mejores notas.

Solucion:
Programa corregido.

void prog73() //7.3 ACCION prog73() //7.3


{ ENTERO n, x, y=1;
int n, x, y=1; LEER(n);
scanf ("%d", &n); n  n;
x=n; MIENTRAS (y ≠ n){
while(y != n){ x  x+n;
x=x+n; y  y+1;
y=y+1; }
} //ESCRIBIR("s= \n", x);
//printf("s= %d\n\n", x); ESCRIBIR("Cuadrado \n", x);
printf("Cuadrado: %d\n\n", x); }
}

Traza:
Entrada: n =2 y n = 4

Paso n x y while(y != n) x←x+n y←y+1 S


0 2 2 1
1 1 != 2 : V x ← 2 + 2=4 y←1+1:2
2 2 != 2 : F
3 4

0 4 4 1 1 != 4 : V x ← 4 + 4= 8 y←1+1:2
1 2 2 != 4 : V x ← 8 + 4=12 y←2+1:3
2 3 3 != 4 : V x ← 12 + 4=16 y←3+1:4
3 4 4 != 4 : F
16

Salida s: 4, s: 16
Entonces calcula n al cuadrado: n2

También podría gustarte