practico 6 resuelto

38
Taller de Programación Lenguaje de Programación PRACTICO N° 6 ESTRUCTURAS REPETITIVAS Ejercicio 1 Parte (I): Construya las trazas e indique, en los casos que corresponda, el o los valores que desplegará. (a.-) Asuma que los dato ingresados para n y m son 3 y 2 respectivamente. Scanf (n); Scanf (m); for ( i = 0; i < n; i++) { for ( j = 0; j < m; j++) { printf (i, j) } } n m i j Printf ( ) 3 2 0 0 0 0 1 0 1 2 1 0 1 0 1 1 1 2 2 0 2 0 1 2 1 2 3 ( b.- ) for ( i = 0; i < 3; i++) { for ( j = 0; j < 3; j++) { if ( i <> j ) printf ( i, j) else printf (“ 1”) } } i j Printf ( ) 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 1 0 1 0 2 1 0 1 1 2 2 0 2 1 1

Upload: gonzalo-rodriguez

Post on 05-Aug-2015

624 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Practico 6 Resuelto

Taller de Programación Lenguaje de Programación

PRACTICO N° 6 ESTRUCTURAS REPETITIVAS

Ejercicio 1 Parte (I):

Construya las trazas e indique, en los casos que corresponda, el o los valores que desplegará.

(a.-) Asuma que los dato ingresados para n y m son 3 y 2 respectivamente.

Scanf (n); Scanf (m); for ( i = 0; i < n; i++) { for ( j = 0; j < m; j++) { printf (i, j) } }

n m i j Printf ( )

3 2 0 0 0 0

1 0 1

2

1 0 1 0

1 1 1

2

2 0 2 0

1 2 1

2

3

( b.- )

for ( i = 0; i < 3; i++) { for ( j = 0; j < 3; j++) { if ( i <> j ) printf ( i, j) else printf (“ 1”) } }

i j Printf ( )

0

1

2

3

0 1 2 3 0 1 2 3 0 1 2 3

1 0 1 0 2

1 0

1 1 2

2 0 2 1

1

Page 2: Practico 6 Resuelto

Taller de Programación Lenguaje de Programación

( c.- )

for ( i = 0; i < 3; i++) { for ( j = i; j < 3; j++) { printf (i,j) } }

i j Printf ( )

0

1

2

3

0 1 2 3 1 2 3 0 2 3

0 0 0 1 0 2

1 1 1 2

2 2

Parte (II):

Para cada caso señale el pseudocódigo equivalente pero reemplazando la estructura While por FOR ().

(a )

i=0; While (i < 3 ); { Printf (i); i = i + 1; }

FOR (i = 0; i < 3; i++) PRINTF(i);

(b )

i=0; While (i < 3 ); { j = 0; While ( j < 5) { Printf (i,j); j = j + 1; } i = i + 1; }

FOR (i = 0; i < 3; i++) FOR (j = 0; j < 5; j++) PRINTF(i , j);

Page 3: Practico 6 Resuelto

Taller de Programación Lenguaje de Programación

Ejercicio 2

Utilice la estructura repetitiva más adecuada para cada caso, que permita resolver cada uno de los casos que se entregan a continuación. Diseñe el DFD y el pseudos código respectivo.

a) Generar y desplegar por pantalla la serie :

-6; -2; 2; 6; 10; 14; 18; 22; 26; 30

b) Generar y desplegar por pantalla la serie :

10; 100; 1.000; 10.000; 100.000; 106; 107; 108; 109; ……….; 10100

Page 4: Practico 6 Resuelto

Taller de Programación Lenguaje de Programación

c) Generar y desplegar por pantalla la serie :

100; 98; 96; 94; 92; 90; 88; ……………….; 50

d) Generar y desplegar por pantalla la serie :

1; 2;3;4;5; ……….; 98; 99; 100; 150; 200; 250; 300; ……….. ;10.000

Page 5: Practico 6 Resuelto

Taller de Programación Lenguaje de Programación

e) Generar y desplegar por pantalla la serie :

3; 5; 9; 11; 15; 17; 21; 23; 27; ……………; 123

f) Generar y desplegar por pantalla la serie :

A; B; A; B; A; B; ……hasta desplegar 500 letras

Page 6: Practico 6 Resuelto

Taller de Programación Lenguaje de Programación

g) Generar y desplegar por pantalla la serie :

A; X; A; A; X; A; A; A; X; A; A; A; A; X; ….hasta desplegar 25 letras A juntas.

Dos alternativas, una con do while otra con for.

Page 7: Practico 6 Resuelto

Taller de Programación Lenguaje de Programación

h) Generar y desplegar por pantalla la serie :

3; 9; 27; 81; 243; ………….; 6.561

i) Generar y desplegar por pantalla la serie :

5; 25; 125; 3.125; 15.625; ………….; 9.765.625

Page 8: Practico 6 Resuelto

Taller de Programación Lenguaje de Programación

j) Generar y desplegar por pantalla la serie :

1; A; 2; A; 3; A; 4; A; 5; A; 6; A; 7; A; ….hasta desplegar 90 letras A.

k) Leer números hasta ingresar el número cero. Al final indicar cuántos Nos se ingresaron.

Page 9: Practico 6 Resuelto

Taller de Programación Lenguaje de Programación

l) Leer números validando que estos solo sean positivos. Al final indicar cuántos de los

números ingresados cumplieron esta condición. Se finaliza cuando se ingresa el numero 999.

m) leer diversas letras hasta que se acumulen 10 letras A o B inclusive. Indicar cuantas letras

fueron ingresadas hasta que se cumplió la condición.

Page 10: Practico 6 Resuelto

Taller de Programación Lenguaje de Programación

n) Ingresar números pares hasta que se cumpla la condición de que los números pares sean el

doble de los números impares. Indicar cuantos números fue necesario ingresar hasta que se cumplió la condición, además cuantos números pares e impares se ingresaron.

Page 11: Practico 6 Resuelto

Taller de Programación Lenguaje de Programación

o) Como sería el ejercicio anterior, si los números ceros deben ser contabilizados a parte, es

decir, no como números pares. Indicar cuantos números fue necesario ingresar hasta que se cumplió la condición, cuantos números pares, impares y ceros se ingresaron.

Ejercicio 3

Generar los N primeros números pares a continuación del número P.

{ scanf (p); do scanf(n) while (n < 1); IF (p MOD 2 != 0) { p = p –1 } FOR (i = 1; i<=n; i++) printf (p + 2 * i); }

Page 12: Practico 6 Resuelto

Taller de Programación Lenguaje de Programación

Ejercicio 4

Confeccione un programa que permita solucionar el siguiente problema:

leer 30 números

entregar el promedio de los valores impares leídos.

{ SumaNumero = 0; for (i = 1; i<=30; i++) { scanf (Numero); IF (Numero MOD 2 != 0 ) SumaNumero = SumaNumero + Numero; } Promedio = SumaNumero / 30; scanf(Promedio); }

Ejercicio 5

Confeccione un programa que genere la siguiente serie : 1010, 1020, 1030, 1040, 1050, ..........., 10.000.

{ Serie = 1010; do { printf (serie) serie := serie + 10 } while (Serie <= 10000); }

Ejercicio 6 Construya un programa que permita obtener el factorial de un número cualquiera.

{ Factorial = 1 scanf (Numero) for( i = 1; i <= Numero; i++) Factorial = Factorial * i; printf (Factorial) }

Page 13: Practico 6 Resuelto

Taller de Programación Lenguaje de Programación

Ejercicio 7

Se pide calcular e imprimir el resultado de la siguiente sumatoria:

n

x x1 )1*2(

1

{ PRINTF (“Ingrese n:”); SCANF( n ); serie = 0; For ( x = 1; x <= n ; x = x + 1) { serie = serie + 1 / ( 2 * x + 1 ) } PRINTF (“El resultado es ” , serie)

}

Ejercicio 8 Confeccionar un programa que permita leer una cantidad variable de números, hasta que se hayan ingresado 70 números pares, y que finalmente indique de la serie de números lo siguiente.

(a) Total de números pares e impares. (b) Promedio de los números pares, impares y el general.

{ CuentaPares = 0; CuentaImpares = 0; SumaPares = 0; SumaImpares = 0;

do { scanf(Numero) if (Numero MOD 2 == 0) { CuentaPares = CuentaPares + 1 SumaPares = SumaPares + Numero } else { CuentaImpares := CuentaImpares + 1 SumaImpares := SumaImpares + Numero } while (CuentaPares < 70); PromedioPares = SumaPares / CuentaPares; PromedioImpares = SumaImpares / CuentaImpares; PromedioGeneral = (SumaPares + SumaImpares) / (CuentaPares + CuentaImpares); printf(CuentaPares, CuentaImapres); printf(PromedioPares, PromedioImpares, PromedioGeneral); }

Page 14: Practico 6 Resuelto

Taller de Programación Lenguaje de Programación

Ejercicio 9 Escriba un programa que permita calcular el área de un rectángulo, extrayéndole el área de un círculo completamente contenido dentro del rectángulo. El área achurada de la figura representa el área que se debe obtener. Los datos a ingresar son el largo de los lados del rectángulo ( a y b) y el radio del círculo (r). El programa debe validar que el diámetro del círculo sea menor que los lados a y b del rectángulo.

{ scanf( a, b); IF (a < b) menor = a ELSE menor = b;

do scanf(r) while(2*r > menor); Area = (a * b) – (pi * r ^2) printf (area) }

Ejercicio 10 Leer una cantidad variable de números. Indicar finalmente :

a) Cuántos fueron mayores que 100 y menores que 200. b) Cuál fue el impar mayor y el par menor. c) Si la cantidad de números positivos es mayor que la de números negativos entonces

calcule el promedio de los números positivos, de lo contrario el promedio de los negativos.

a

b

r

área rectángulo : a*b área del círculo : ã*r2

diámetro del círculo :2*r

/* necesito determinar cual es el lado menor del triángulo para validar condición que radio de la circunferencia sea menor al menor de los lados del triángulo.

/* leo radio del circulo validando que no cumpla, condición de exceder la medida del lado menor del triangulo.

Page 15: Practico 6 Resuelto

Taller de Programación Lenguaje de Programación

{ CuentaRango = 0; CuentaPositivo = 0; CuentaNegativo = 0 SumaPositivo = 0; SumaNegativo = 0; flagPares = 0; flagimpares = 0 do scanf(Numero); Contador = Contador + 1 IF (Numero > 100 AND Numero < 200 ) CuentaRango = CuentaRango + 1; IF (Numero MOD 2 == 0) IF (FlagPares==0 || Numero < ParMenor) { Flagpares = 1 ParMenor = Numero } ELSE IF (FlagImpares == 0 || Numero > ImparMayor) { FlagImpares = 1 ImparMayor = Numero; } IF Numero >= 0 THEN { CuentaPositivo = CuentaPositivo + 1 SumaPositivo = SumaPositivo + Numero } ELSE { CuentaNegativo = CuentaNegativo + 1 SumaNegativo = SumaNegaitivo + Numero } printf(“Otro?”) scanf(resp) while (Resp != “n” || Resp != “N”); printf(CuentaRango, ParMenor, ImparMayor); IF (CuentaPositivo > CuentaNegativo) Promedio = SumaPositivo / CuentaPositivo ELSE Promedio = SumaNegativo / CuentaNegativo; printf(Promedio); }

Page 16: Practico 6 Resuelto

Taller de Programación Lenguaje de Programación

Ejercicio 11 La relación entre los lados (a,b) de un triángulo rectángulo y la hipotenusa (h) viene dada por la formula

a2 + b2 = h2 h : hipotenusa

Escribir un programa que lea la longitud de los dos lados y calcule la hipotenusa.

Ejercicio 12 Construya un programa que permita obtener el promedio de notas de un curso cualquiera, con una cantidad variable de alumnos. Además deberá indicar la cantidad de alumnos aprobados y reprobados.

{ aprobados = 0; reprobados = 0; SumaNotas = 0; printf(“¿cuantos alumnos son?:”) scanf(TotalAlumnos) for(i=1; i<=TotalAlumnos; i++) { scanf(nota) SumaNotas = SumaNotas + nota if (nota >= 4) aprobados = aprobados + 1 else reprobados = reprobados + 1; } PromedioPares = SumaPares / CuentaPares; PromedioImpares = SumaImpares / CuentaImpares; PromedioGeneral = (SumaPares + SumaImpares) / (CuentaPares + CuentaImpares); printf(“Promedio Curso :”, SumaNotas/TotalAlumnos); printf(“Alumnos Aprobados :”, aprobados); printf(“Alumnos Reprobados :”, reprobados);

}

Page 17: Practico 6 Resuelto

Taller de Programación Lenguaje de Programación

Ejercicio 13 Construya un programa que permita determinar si un número cualquiera es o no un número primo.

{ Switch = 0 scanf(Numero) for( i=2; i <= Numero div 2 ; i++) IF (Numero MOD i == 0) Switch = 1; IF (Switch == 0) printf (“El Numero es primo.”) ELSE printf(“El Numero no es primo.”); }

Ejercicio 14

Dados dos números enteros, que se deben leer, se pide calcular el producto de ambos por medio de sumas consecutivas. Ejemplo: 2 * 3 = 6 (2+2+2=6, donde el número 2 se debe sumar la cantidad de veces por la que está siendo multiplicado). { PRINTF (“Ingrese Números a multiplicar:”);

SCANF( x , y ); Prod = 0; For ( i = 1; i <= X ; i = i + 1) { prod = prod + Y } PRINTF (“X * Y = ” , prod );

}

Ejercicio 15

Hacer un algoritmo que permita calcular e imprimir los números perfectos menores a un número ingresado por teclado. Un número es perfecto si la suma de sus divisores, excepto él mismo, es igual al propio número (ej: 6=3+2+1).

Page 18: Practico 6 Resuelto

Taller de Programación Lenguaje de Programación

Ejercicio 16

Realizar un algoritmo que permita leer una cantidad n de números. Indicando:

a) Cuántos fueron mayores que 100 y menores que 200. b) Cuál fue el impar mayor y el par menor. c) Si la cantidad de números positivos es mayor que la de números d) Negativos entonces calcule el promedio de los números positivos, de lo contrario el

promedio de los negativos.

Ejercicio 17

Determine todos los números primos gemelos que existen entre A y B (que deben ser leídos). Dos números son primos gemelos si son primos con una diferencia entre ellos de exactamente 2. Por ejemplo 3 y 5 son números primos gemelos.

Ejercicio 18 Se pide generar e imprimir cada uno de los términos de la serie: 2*x +1, donde x va desde 0 hasta N. Por ejemplo, si x=0 término de la Serie es 1, si x=1 término de la Serie es 3... Ejercicio 30

Ejercicio 19

Leer las edades de los asistentes a un cine e indicar finalmente cuantos de estos fueron: niños (1-10), adolescentes (11-15), jóvenes (16-22), adultos (23-35), otros (36- ...)

Page 19: Practico 6 Resuelto

Taller de Programación Lenguaje de Programación

Ejercicios 20 Desarrollar el algoritmo que resuelva los siguientes problemas:

1. Calcular el promedio de un alumno que tiene 7 notas en la asignatura “Programación II”.

2. Leer 10 números e imprimir solamente los números positivos

3. Leer 20 números e imprimir cuantos son positivos, cuantos negativos y cuántos son ceros. 4. Leer 15 números negativos, convertirlos a positivos e imprimir dichos números. 5. Suponga que se tiene un conjunto de calificaciones de un grupo de 40 alumnos. Realizar un

algoritmo para calcular la calificación media y la calificación más baja de todo el grupo. /*suponga que se tiene un conjunto de calificaciones de un grupo de 40 alumnos.

Realizar un algoritmo para calcular la calificacion media y la calificacion mas

baja de todo el grupo*/

#include<stdio.h>

#include<stdlib.h>

int main()

{

float i,N=5,nota,sumanota=0,menor,N1;

printf("ingrese la primera calificacion final de la asignatura:");

scanf("%f",&N1);

menor=N1;

for(i=1;i<N;i++)

{

printf("\nIngrese otra calificacion final: ");

scanf("%f",&nota);

sumanota=sumanota+nota;

if(nota<menor)

{

menor=nota;

}

}

printf("\nEL promedio de las calificaciones finales es: %.1f",sumanota/N);

printf("\nLa menor calificacion es: %.1f",menor);

getchar();

getchar();

return 0;

}

6. Calcular e imprimir la tabla de multiplicar de un número cualquiera. Imprimir el multiplicando,

el multiplicador y el producto.

7. Leer 50 calificaciones de un grupo de alumnos. Calcule y escriba el porcentaje de reprobados. Tomando en cuenta que la calificación mínima aprobatoria es de 70.

Page 20: Practico 6 Resuelto

Taller de Programación Lenguaje de Programación

8. Simular el comportamiento de un reloj digital, imprimiendo la hora, minutos y segundos de un día desde las 0:00:00 horas hasta las 23:59:59 horas.

9. Una compañía de seguros tiene contratados a N vendedores. Cada uno hace tres ventas a la

semana. Su política de pagos es que un vendedor recibe un sueldo base y un 10% extra por comisiones de sus ventas. El gerente de la compañía desea saber cuánto dinero obtendrá en la semana cada vendedor por concepto de comisiones por las tres ventas realizadas y cuanto le corresponderá tomando en cuenta su sueldo base y sus comisiones.

10. En una empresa se requiere calcular el salario semanal de cada uno de los n obreros que

laboran en ella. El salario se obtiene de la siguiente forma:

Si el obrero trabaja 40 horas o menos se le paga $1.200 por hora

Si trabaja más de 40 horas se le paga $1.200 por cada una de las primeras 40 horas y $1.500 por cada hora extra.

11. Diseñe un algoritmo que determine cuantos hombres y cuantas mujeres se encuentran en un

grupo de N personas. Suponga que los datos son extraídos persona por persona. 12. Obtener el promedio de calificaciones de un grupo de n alumnos.

13. Una persona desea invertir su dinero en un banco, el cual le otorga un 2% de interés mensual.

¿Cuál será la cantidad de dinero que esta persona tendrá al cabo de un año si la ganancia de cada mes es reinvertida?.

14. Calcular el promedio de edades de hombres, mujeres y de todo un grupo de alumnos.

Page 21: Practico 6 Resuelto

Taller de Programación Lenguaje de Programación

15. Encontrar el menor y el mayor valor de un conjunto de n números dados.

/*Encontrar el menor y el mayor valor de un conjunto de n numeros dados*/

#include<stdio.h>

#include<stdlib.h>

int main(){

int cont=1,mayor,D,N1,N,C,menor;

printf("ingrese la primera cifra: ");

scanf("%d",&D);

printf("ingrese el numero: ");

scanf("%d",&N1);

mayor=N1;

menor=N1;

while(cont<D)

{

printf("ingrese el numero: ");

scanf("%d",&N);

if(N>mayor)

{

mayor=N;

} if(N<menor)

{

menor=N;

}

cont++;

}

printf("el mayor es: %d\nEl menor es: %d",mayor,menor);

getchar();

getchar();

return 0;

}

16. En un supermercado un cajero captura los precios de los artículos que los clientes compran e

indica a cada cliente cual es el monto de lo que deben pagar. Al final del día le indica a su supervisor cuanto fue lo que cobro en total a todos los clientes que pasaron por su caja.

17. En una tienda de descuento las personas que van a pagar el importe de su compra llegan a la

caja y sacan una bolita de color, que les dirá que descuento tendrán sobre el total de su compra. Determinar la cantidad que pagará cada cliente desde que la tienda abre hasta que cierra. Se sabe que si el color de la bolita es roja el cliente obtendrá un 40% de descuento; si es amarilla un 25% y si es blanca no obtendrá descuento.

Page 22: Practico 6 Resuelto

Taller de Programación Lenguaje de Programación

18. Un teatro otorga descuentos según la edad del cliente. Determinar la cantidad de dinero que el teatro deja de percibir por cada una de las categorías. Tomar en cuenta que los niños menores de 5 años no pueden entrar al teatro y que existe un precio único en los asientos. Los descuentos se hacen tomando en cuenta el siguiente cuadro:

Categorías Edad Descuento Categoría 1 5 - 14 35 % Categoría 2 15 - 19 25 % Categoría 3 20 - 45 10 % Categoría 4 46 - 65 25 % Categoría 5 66 en adelante 35 %

19. Determinar la cantidad semanal de dinero que recibirá cada uno de los n obreros de una empresa. Se sabe que cuando las horas que trabajo un obrero exceden de 40, el resto se convierte en horas extras que se pagan al doble de una hora normal, cuando no exceden de 8; cuando las horas extras exceden de 8 se pagan las primeras 8 al doble de lo que se paga por una hora normal y el resto al triple. Al finalizar indicar el total cancelado a cada trabajador detallando remuneración y horas extras totales pagadas.

20. Un negocio de copias tiene un límite de producción diaria de 10.000 copias si el tipo de

impresión es offset y de 50.000 si el tipo es estándar. Si hay una solicitud nueva, el empleado tiene que verificar que las copias pendientes hasta el momento y las copias solicitadas no excedan del límite de producción. Si el límite de producción se excediera el trabajo solicitado no podría ser aceptado. El empleado necesita llevar un buen control de las copias solicitadas hasta el momento para decidir en forma rápida si los trabajos que se soliciten en el día se aceptan o no.

21. Diseñe un algoritmo que lea los 250.000 votos otorgados a los 3 candidatos a alcalde e imprima

el número del candidato ganador y su cantidad de votos. 22. Suponga que tiene una tienda y desea registrar sus ventas por medio de un computador.

Diseñe un pseudocódigo que lea por cada cliente: a) El monto de la venta, b) Calcule e imprima el IVA , c) Calcule e imprima el total a pagar, d) Lea la cantidad con que paga el cliente, e) Calcule e imprime el cambio. Al final del día deberá imprimir la cantidad de dinero que debe haber en la caja.

Page 23: Practico 6 Resuelto

Taller de Programación Lenguaje de Programación

Ejercicio 21

Un BOING 747 tiene una capacidad de carga para equipaje de aproximadamente 18.000 kgr. Confeccione un algoritmo que controle la recepción de equipajes para este avión, sabiendo :

- Un bulto no puede exceder la capacidad de carga del avión ni tampoco exceder los 500 Kg. - El valor a cobrar por kilo del bulto es :

i. de 0 a 25 Kg. cero pesos ii. de 26 a 300 Kg. $1.500 pesos por kilo de equipaje.

iii. de 301 a 500 Kg. $2.500 pesos por kilo de equipaje Para un vuelo cualquiera se pide :

a) Número total de bultos ingresados para el vuelo b) Peso del bulto más pesado. c) Peso promedio de los bultos d) Ingreso en dólares (US$ 1 = $539) por concepto de carga

Page 24: Practico 6 Resuelto

Taller de Programación Lenguaje de Programación

Ejercicio 22

Diseñe un algoritmo que permita leer 100 números y finalmente indique:

Cuál fue la diferencia entre el mayor y el menor número leído.-

Un mensaje de “divisible” si el menor número es divisor del mayor número o de lo contrario el mensaje “ no divisible”.

{ cont=0; flagmayor = 0 ; flagmenor = 0 FOR (i=1; i<=100; i++) { scanf( nro) if( flagmayor == 0 || mayor < nro) { flagmayor = 1 mayor = nro } if( flagmenor == 0 || menor > nro) { flagmenor = 1 menor = nro } } diferencia = mayor – menor if( mayor % menor == 0) printf (“DIVISIBLES”) else printf (“NO DIVISIBLES”) }

Page 25: Practico 6 Resuelto

Taller de Programación Lenguaje de Programación

Ejercicio 23

Construya un algoritmo que permita calcular sen(x) sumando términos de la serie:

x - x^3/3! + x^5/5! - x^7/7! + ...

Hasta que el último término de la serie a ser sumado o restado tenga una magnitud menor que 10^(-5). Esta suma corresponderá a sen(x) con un error de no más de 10^(-5).

Utilice la función factorial para resolver 3!...es decir factorial(3)

{ PRINTF (“Ingrese Angulo:”); SCANF(x); n = 0 Do

{ seno = seno + (-1) ^ (n + 2 ) * x ^ (2 * n + 1) / factorial(2 * n + 1) n = n + 1 }

While ( x ^ (2 * n + 1) / factorial(2 * n + 1) > 10 ^ -5 )

PRINTF (“ sen(”, x ,” )=”, seno ) ; }

Ejercicio 24

El Colegio “El Mateo” necesita urgentemente que se implemente un sistema que permita resolver los serios problemas de gestión que tiene, para esto se han contactado con usted para que confeccione un programa que les permita hacer las siguientes tareas:

a) Dada las notas finales de un curso, donde el numero de alumnos es conocido, se debe indicar cual es la nota final mas alta.

b) Indicar cuantos alumnos obtuvieron esta nota. c) Indicar el promedio de notas del curso. d) Indique cual es la distancia entre el promedio del curso y la nota mayor. Donde la

distancia es el valor absoluto de la diferencia entre el promedio del curso y la nota mayor)

e) La cantidad da alumnos destacados, bueno, suficiente. Donde:

Destacados promedio mayor o igual a 6,5

Bueno promedio mayor o igual a 5,5 y menor que 6,5

Suficiente promedio mayor o igual a 4,0 y menor que 5,5

Deficiente promedio menor a 4,0

Page 26: Practico 6 Resuelto

Taller de Programación Lenguaje de Programación

{ destacados = 0; buenos = 0; suficientes = 0; deficientes = 0; suma_notas = 0;

PRINTF (“Ingrese Cantidad de Alumnos:”); SCANF( numero_alumnos ); For ( i = 1; i <= numero_alumnos ; i = i + 1) { PRINTF (“Ingrese nota:”);

SCANF(nota); IF ( i = 1 OR mayor_nota < nota ) { mayor_nota = nota;

cuenta_mayor = 1 } ELSE

IF ( mayor_nota = nota ) { cuenta_mayor = cuenta_mayor + 1 }

suma_notas = suma_notas + nota ; IF (nota >= 6,5) { destacados = destacados + 1 } IF (nota >= 5,5 AND nota < 6,5 ) { buenos = buenos + 1 } IF (nota >= 4,0 AND nota < 5,5 ) { suficientes = suficientes + 1 } IF (nota < 4,0) { deficientes = deficientes + 1 } } PRINTF (“La mayor nota del curso es :”, mayor_nota ); PRINTF (“La ocurrencia de las notas es :”, cuenta_mayor ); promedio_notas = suma_notas / numero_alumnos; PRINTF (“El promedio de notas del curso es :”, promedio_notas ); distancia = abs( mayor - promedio_notas ) PRINTF (“La distancia entre mayor nota y promedio es :”, distancia );

PRINTF (“Alumnos destacados :”, destacados ); PRINTF (“Alumnos buenos :”, buenos ); PRINTF (“Alumnos con nota suficiente :”, suficientes ); PRINTF (“Alumnos deficientes :”, deficientes );

}

Nota final mas alta Leer notas 2 pts Clasificar notas 7 pts Notas iguales a mayor 7 pts Entrega resultado 2 pts

Promedio curso Leer notas 2 pts sumar notas 4 pts promediar notas 7 pts Entrega resultado 2 pts

distancia calculo distancia 5 pts Entrega resultado 2 pts

Clasificar Alumnos Leer Notas 2 pts Clasificar 12 pts Entrega resultado 4 pts

Page 27: Practico 6 Resuelto

Taller de Programación Lenguaje de Programación

Ejercicio 25

Un estudio meteorológico mensual consiste en el registro de la temperatura promedio de cada uno de lo días de un mes. Ejemplo (día 1: 26,56 ºC, día 2: 15,49 ºC, día 3: 9,0 ºC........etc) Conociendo el estudio meteorológico del mes de mayo se pide realizar un análisis completo del problema y el diseño del algoritmo utilizando la estructura vistas en clases, tal que permita :

a) Indicar la mayor temperatura del mes y el número de días del mes en los que se

registró dicha temperatura. b) Indicar la temperatura promedio del mes. c) Indicar la temperatura promedio de la primera quincena del mes. d) Temperatura promedio de la segunda quincena del mes.

ALGORITMO Ejercicio1 ENTRADAS

temp : entero; SALIDAS

mayor, tempPromMes, tempPromPrimQ, tempPromSegQ : real; contMayor : entero;

VARIABLES i, primeraq, segundaq, tempMes: real;

CONSTANTES n=31

{ pq = 0; sq = 0; tempMes = 0; for( i=1; i<=n; i++) { scanf( temp ) if( i <=15)

{ primeraq = primeraq + temp } else { segundaq = segundaq + temp }

if( i = 1 OR mayor < temp)

{ mayor = temp contMayor = 1 }

else { if( mayor = temp ) { contMayor = contMayor + 1 } } tempMes = pq + sq tempPromMes = tempMes / 31 temPromPrimQ = primeraq / 15 temPromSegQ = segundaq / 16 printf( “Mayor temperatura mes = “, mayor ) (12 pts)

Page 28: Practico 6 Resuelto

Taller de Programación Lenguaje de Programación

printf( “Repeticiones mayor temperatura mes = “, contMayor ) (8 pts) printf( “Temperatura promedio mes = “, tempMes ) (8 pts) printf( “Temp. promedio primera quincena = “, temPromPrimQ ) (6 pts) printf( “Temp. promedio segunda quincena = “, temPromSegQ ) (6 pts) }

Ejercicio 26

Escribir expresiones lógico-matemáticas para expresar los siguientes conceptos

N es positivo N > 0

N es un número par N mod 2 = 0

N es un número impar N mod 2 = 1

N es múltiplo de P N mod P = 0

N es múltiplo de 7 y múltiplo de 4 (N mod 7 = 0 ) AND (N mod 4 = 0)

N no es múltiplo de 5 ni múltiplo de 8 (N mod 5 = 1 ) AND (N mod 8 = 1)

N es múltiplo de 3 y no múltiplo de 8 (N mod 3 = 0 ) AND (N mod 8 = 1)

N es positivo o N es cero N >= 0

N es divisor de P P mod N = 0

N es múltiplo de K N mod K = 0

Ejercicio 27

Una tienda desea obtener una serie de reportes diarios a partir de las ventas realizadas en un día. Elabore un diagrama de flujo que:

a. solicite el monto de cada venta sin IVA, b. para cada venta, calcule el IVA y el total con IVA, c. al terminar el día, imprima un reporte con los totales de:

ventas sin IVA,

IVA,

ventas con IVA,

promedio de las ventas con IVA.

Se desconoce el número de ventas que se realizan en un día, por lo que el final de los datos se indica con un -1. Considere el IVA como un valor constante 19%.

Page 29: Practico 6 Resuelto

Taller de Programación Lenguaje de Programación

Ejercicio 28

Desarrolle el análisis del algoritmo que permita entregar el valor resultante de la siguiente función, el valor de n deberá ser un dato de entrada:

n

x x1 )1*2(

1

0

n

x x

x

1 )1*3(

)1*2(

Leer N

N || 2 = 0

N > 100

N || 2 = 1

OR N < = 0

n

x x1 )1*2(

1

n

x x

x

1 )1*3(

)1*2(

V

V

F

F = 0

V

F

Imprimir F

F

si n es un número par superior a 100

f(x) = si n es un número impar o menor o igual a 0

si n es un número par inferior o igual a 100

Page 30: Practico 6 Resuelto

Taller de Programación Lenguaje de Programación

ALGORITMO Ejercicio ENTRADAS

n : entero; SALIDAS

fx : real; VARIABLES i: entero;

{ fx = 0 scanf( n) if( n mod 2 = 0 AND n > 100) { for( i=1;i<=n;i++) { fx = fx + 1/(2*i+1) } } if( n mod 2 != 0 OR n <= 0) { fx = 0 } if( n mod 2 = 0 AND n <= 100) { for( i=1;i<=n;i++) { fx = fx + (2*i-1)/ (3*i+1) } } printf( fx ) }

Ejercicio 29

Un estudio meteorológico mensual consiste en el registro de la temperatura promedio de cada uno de los 30 primeros días del mes. Ejemplo (día 1: 26,56 ºC, día 2: 15,49 ºC, día 3: 9,0 ºC........etc) Conociendo el estudio meteorológico del mes de mayo se pide realizar un análisis completo del problema y el diseño del algoritmo utilizando las estructuras vistas en clases, tal que permita :

a) Indicar la mayor temperatura del mes b) Indicar la temperatura promedio del mes.

Variables Entradas Procesos y Variables Variables Salidas

Temperatura: Real Temperatura_Mayor: Real

Leer 30 temperaturas Acumular la temperatura Determinar si es la primera

temperatura o mayor a la temp. Mayor.

En caso de serlo guardar esta T° como la mayor

Luego de leídas las 30 T° calculo el promedio de estas. Entrego los resultados

Temperatura_Promedio:Real

Suma : Real

Page 31: Practico 6 Resuelto

Taller de Programación Lenguaje de Programación

ALGORITMO Calentamiento_Global ENTRADAS

temperatura : real; SALIDAS

Temperatura_ Mayor, Temperatura_promedio: real; VARIABLES

i,: entero; suma_temperaturas : real;

CONSTANTES { suma_temperaturas = 0; for( i=1; i<=30; i++) { printf (“Ingrese la temperatura del día “, i , “:” ); scanf( temperatura ); suma_temperaturas = suma_temperaturas + temperatura; if( i = 1 OR temperatura_mayor < temperatura)

{ temeprtaura_mayor = temperatura } }

temeratura_promedio = suma_temperatura / 30; printf( “Mayor temperatura del mes = “, temperatura_mayor ) printf( “Temperatura promedio del mes = “, temperatura_promedio ) }

Page 32: Practico 6 Resuelto

Taller de Programación Lenguaje de Programación

Ejercicio 30

Conociendo la masa y distancia de dos cuerpos, se puede determinar la Fuerza de atracción que se ejerce entre ambos. Se desea determinar las fuerzas de atracción ejercida entre la tierra y diversos satélites ubicados a distintas altura. Para lo cual la NASA le ha solicitado a usted construir un programa que cumpla con los siguientes requerimientos :

a) Cuál es la mayor y menor fuerza de atracción ejercida por los satélites en estudio b) La fuerza de atracción promedio ejercida por los satélites en estudio c) La mayor masa de todos los satélites estudiados d) La masa promedio de los satélites e) La menor y mayor altura de los satélites

La formula para determinar la Fuerza de atracción es :

F = G m M r2

donde : m : masa satélite ; M : Masa tierra (5,97 * 10 24 Kg) ; r : distancia de los cuerpos ; G : Constante Gravitatoria ( 6,67259 * 10-11 N*m2 ) Kg2 Considere la siguiente muestra para realizar la prueba del algoritmo :

Satélite País Masa Altura Kg. Mts____ Canada 1 Canadá 8.300 31.200.000 Alfa 1 Chile 5.500 36.000.000 Boby 4 EE.UU. 12.000 33.450.000 Che 3 Argentina 3.350 34.200.000

Page 33: Practico 6 Resuelto

Taller de Programación Lenguaje de Programación

Ejercicio 31 Las posibilidades de que ocurra en un día un terremoto en la octava región están dadas, según un estudio realizado por el departamento de sismología de la Universidad de Chile, por el número de sismos ocurridos el día anterior (24 horas) al terremoto. Los siguientes rangos indican las probabilidades de que ocurra un terremoto dados los sismos ocurridos el día anterior:

de 0 a 300 sismos al día Bajas probabilidades . de 301 a 700 sismos al día Medianas probabilidades. 701 y más sismos al día Altas probabilidades.

Su labor será el desarrollar un algoritmo que ayude al departamento de sismología, a

programar una capturadora de datos que será instalada en un lugar estratégico de la región. La capturadora ayudará a prever la ocurrencia de un terremoto con 24 horas de anticipación. La capturadora llevará un control automático de los sismos ocurridos durante un día completo, esto es, desde las 00:00 AM hasta las 24:00 PM, donde se registrará la intensidad del evento y la hora del mismo. Su algoritmo deberá indicar:

(a) Número de sismos ocurridos en la mañana y los ocurridos en la tarde. (b) Promedio de la intensidad de los sismos ocurridos en el día. (c) La intensidad y la hora en que ocurrió el sismo de mayor intensidad. (d) La intensidad y la hora en que ocurrió el sismo de menor intensidad. (e) Probabilidad que ocurra un terremoto en próximas 24 horas (baja, media, alta). (f) Número de sismos con intensidad superior a 4 grados que ocurran en el día.

Nota : El algoritmo entregará los datos (a,b,c,d,e) al finalizar su ejecución, esto es, cuando el operador ingrese manualmente un sismo de intensidad negativa, evento que no deberá ser registrado o contabilizado como un sismo. Para efectos prácticos del desarrollo de su algoritmo consideré un ingreso manual de los datos.

Ejercicio 32

Juguemos con los dados, se trata de simular con el computador el juego con un dado, las pruebas son las siguientes:

(a) Cuantos lanzamientos son necesarios de realizar hasta que hayan salido 17 números 7. (b) Cuantos números de cada numeración (1,2,3,..6) aparecen en 500 lanzamientos. (c ) Cuantos lanzamientos se realizan hasta que aparezca el número 6. (d) Cual es la numeración que más se repite en 700 lanzamientos

Para este desarrollo utilice la función RANDOM. La función RANDOM(MAX) genera aleatoriamente un numero entero entre 0 y MAX-1, por ejemplo la expresión dato= RANDOM(3), asignará aleatoria mente a la variable dato uno de los tres siguientes valores: 0,1 ó 2.

Page 34: Practico 6 Resuelto

Taller de Programación Lenguaje de Programación

Ejercicio 33

Utilice la estructura repetitiva más adecuada para cada caso, que permita resolver cada uno de los casos que se entregan a continuación. Diseñe el DFD y el pseudos código respectivo.

a) Leer 70 números y finalmente indicar si el mayor número ingresado fue par o impar.

Page 35: Practico 6 Resuelto

Taller de Programación Lenguaje de Programación

b) Leer números hasta que se cumpla alguna condición de término que usted debe crear,

finalmente indicar el mayor número ingresado y la cantidad de veces que este se repitió.

Page 36: Practico 6 Resuelto

Taller de Programación Lenguaje de Programación

Page 37: Practico 6 Resuelto

Taller de Programación Lenguaje de Programación

c) Leer números hasta que se cumpla alguna condición de término que usted debe crear, deberá indicar el mayor número par y el mayor número impar ingresado.

/*Leer numeros hasta que se cumpla alguna condicion de termino que usted debe

crear, finalmente indicar el producto

entre el mayor numero par y el menor numero impar ingresado*/

#include<stdio.h>

#include<stdlib.h>

int main(){

int mayor,num,menor,n;

char c;

printf("\nIngrese un numero: ");

scanf("%d",&n);

if((n%2)==0)// condicion para buscar numero par mayor

{

mayor=n;

}else{

menor=n;

}

do{

printf("\nIngrese un numero: ");

scanf("%d",&num);

if((num%2)==0)

{

if(num>mayor)

{

mayor=num;

}

}else{

if(num<menor)

{

menor=num;

}

}

fflush(stdin);

printf("desea continuar [s/n]");

scanf("%c",&c);

}while(c!='n');

printf("\nEL mayor par es: %d",mayor);

printf("\nEl menor impar es: %d",menor);

getchar();

getchar();

return 0;

}

Page 38: Practico 6 Resuelto

Taller de Programación Lenguaje de Programación

d) Leer números hasta que se cumpla alguna condición de término que usted debe crear, finalmente indicar el producto entre el mayor número par y el menor número impar ingresado.

e) Leer números hasta que se cumpla la condición de término que el mayor número se repita 10 veces. Finalmente indicar cuantos números fueron ingresados.