Está en la página 1de 10

Ejercicio Nro.

La Granja "Venezuela Libre" necesita ciertas estadísticas referentes a la Producción y


Ventas de los últimos 25 años. Para ello el usuario proporcionará la siguiente
información mes por mes (en kilogramos) por cada año transcurrido:
1. Cantidad Producida.
2. Cantidad Vendida.
Se quiere obtener:
1. Cantidad Producida por año en cada uno de los 25 años.
2. Cantidad Total Producida en los 25 años.
3. Cantidad Vendida por año en cada uno de los 25 años.
4. Cantidad Total Vendida en los 25 años.
5. Cantidad que quedó Almacenada por año en cada uno de los
25 años.
6. Cantidad Total Almacenada en los 25 años.
7. Cuál fue el mes que generó más ventas y a que año pertenece.

Considerar
- La granja mantuvo una Producción entre 0 y 75000 unidades
mensuales por cada año.
- Las Ventas nunca podrán exceder a la Producción.
- Deberás garantizar que ambos datos sean válidos de acuerdo
a lo mencionado anteriormente y no procesar datos incorrectos
bajo ninguna circunstancia.

program ejercicio1;

var
ano, mes, anomax, mesmax, x: integer;
vendido, producido, cpa, cva, caa, cta, ctp, ctv, maximaventa : real;
error : boolean;

BEGIN
ctp := 0;
ctv := 0;
maximaventa := 0;
mesmax := 1;
anomax := 1980;
for ano := 1980 to 2005 do
begin
cpa := 0;
cva := 0;
for mes := 1 to 12 do
begin

repeat
error := false;

1
write('Año --> ', ano); write(' Mes --> ', mes);
write(' Producido --> '); readln (producido);
if (producido < 0) or (producido > 75000) then
begin
error := true;
writeln ('ERROR,lo producido debe ser inferior a 75000')
end
else
begin
write(' Vendido --> '); readln (vendido);
if vendido > producido then
begin
error := true;
write ('ERROR,lo vendido no puede ser superior a lo ');
writeln ('producido')
end
else
begin
cpa := cpa + producido;
cva := cva + vendido;
end
end;
until (not error) ;

if vendido > maximaventa then


begin
maximaventa := vendido;
anomax := ano;
mesmax := mes;
end;

end; {fin del ciclo mes a mes }

write('Cantidad total producida en el año ', ano:4);


writeln (' es ', cpa:7:2);
write('Cantidad total vendida en el año ', ano:4);
writeln (' es ', cva:7:2);
caa := cpa - cva;
write('Cantidad total almacenada en el año ', ano:4);
writeln (' es ', caa:7:2);

ctp := ctp + cpa;


ctv := ctv + cva;

end; { fin del ciclo año a año }

2
writeln('Cantidad total producida en los 25 años es ', ctp);
writeln('Cantidad total vendida en los 25 años es ', ctv);
cta := ctp - ctv;
writeln('Cantidad total almacenada en los 25 años es ', cta);
writeln ('La máxima venta fue por ', maximaventa :7:2);
writeln ('y fue en el año ', anomax:4, 'y en el mes ', mesmax);

END.

3
Ejercicio Nro. 2.

Dada una secuencia de números enteros terminada en cero se requiere elaborar


un programa que calcule cuántos y cuáles números de la secuencia son capicúos. Un
número es capicúo si escrito de izquierda a derecha o de derecha a
izquierda es el mismo número. Por ejemplo, si se tiene la siguiente secuencia de
números:
245 8558 104 445 86768 10000 23432 10 121 0, los números
capicúos son 8558, 86768, 23432 y 121 para un total de 4 números capicúos.

program examen;

var

x, n1, n2, d1, d2, cont, veces, final, base10, i, cantidad: integer;
capicuo: boolean;

BEGIN
cantidad := 0;
write('escriba el número --> ');
readln(x);

{ En este ciclo se leen una serie de números hasta que el usuario introduce
un cero}

while (x <> 0) do
begin

{ Se cuenta la cantidad de dígitos que tiene el número para saber la


potencia de 10 de cada dígito }

n1 := x; cont := 0;
while (n1 >= 10) do
begin
n1:= n1 div 10;
cont := cont + 1;
end;

capicuo := true;
veces := 1;
n1 := x;
n2 := x;
final := cont div 2;
if cont mod 2 <> 0 then
final := final + 1;
{final contiene la posición hasta la cual vamos a comparar dígito a dígito}

4
{Se calcula aquí la potencia de 10 más alta del número}
base10 := 1;
for i := 1 to cont do
base10 := base10 * 10;

{En este ciclo se compara dígito a dígito}

while (capicuo and (veces <= final)) do


begin
d1 := n1 div base10;
d2 := n2 mod 10;
if (d1 <> d2) then
capicuo := false
else
begin
n1 := n1 mod base10;
n2 := n2 div 10;
veces := veces + 1;
base10 := base10 div 10;
end;
end; { end del while capicuo }

if capicuo then
begin
cantidad := cantidad + 1;
writeln (x:3, ' es capicuo');
end;

write('escriba el número --> ');


readln(x);

end; { end del while x <> 0}

writeln ('la cantidad de capicúos es ', cantidad);

END.

5
Ejercicio Nro. 3

Dada una frase terminada en punto implementa un programa que permita contar la
cantidad de pares 'EN' que existe en el texto e indique las posiciones en las cuáles
fueron encontrándose los pares.
Ejemplo: "Yo salgo bien en este examen, obtendré un 20." =>
1er Par posiciones 12 y 13; 2do Par posiciones 15 y 16;
3er Par posiciones 27 y 28; 4to Par posiciones 34 y 35.
Cantidad Total de pares 'EN' = 4.

program ejercicio3;

var

frase : string;
largo, i, cont : integer;

BEGIN

write('escriba la frase --> ');


readln(frase);

largo := length (frase);


i := 1;
cont := 0;
while (i < largo) do
begin
if ((frase [i] = 'E') or (frase [i] = 'e')) and
((frase [i+1] = 'N') or (frase [i+1] = 'n')) then
begin
writeln ('En las posiciones ', i:2, 'e ', i+1:2);
cont := cont + 1;
end;
i := i+1;
end;

writeln ('Cantidad total de pares EN es ', cont:3);

END.

6
Otros ejercicios

1) Con dos dados al azar, se pueden obtener los números: 2..12.


Por ejemplo, para obtener el número 2, la única forma es que ambos salgan con el
uno; para obtener un cuatro, existen dos combinaciones posibles, que ambos
tengan un dos, o que un dado salga con uno y el otro con tres. Diseñe un algoritmo
(utilizando estructuras iterativas) que leyendo un valor n, validado entre 2 y 12,
genere cuáles son las combinaciones posibles, sin repetición para ese valor.}

program dados;

var
i, j, suma, n, x: integer;

BEGIN
write('escriba el número --> ');
readln(n);
if ((n < 2) or (n > 12)) then
writeln ('ERROR...debe estar entre 2 y 12')
else
begin
suma := 0;
i := 1;
j := n -1;
if n > 7 then
j := 6;

while (i <= j) do
begin
suma := i + j;
if (suma = n) then
begin
writeln ('una combinación posible es ', i:2, j:2);
j := j - 1;
i := i + 1;
end
else
if (suma < n) then
i := i + 1;
end; {fin del while}
end; {fin del else}

END.

7
2) Dada la edad y el sexo de un grupo de 50 estudiantes leídos por pantalla,
escribir un algoritmo que calcule la cantidad de hombres y la cantidad de
mujeres en total leídos. Adicionalmente, debe calcular la edad promedio de las
mujeres, la cantidad de hombres de más de 20 años y la edad máxima y
mínima leída, indicando si se trata de un hombre o de una mujer.

program str;

var
edad, sumamujer, mayor_edad, menor_edad, i, conthombre, contmujer, cont_h20: intege r;
promedio_mujer : real;
sexo, sexo_mayor, sexo_menor: char;
tipo : string;

BEGIN
{ INICIALIZACIONES }

sumamujer := 0;
contmujer := 0;
conthombre := 0;
cont_h20 := 0;
mayor_edad := 0;
menor_edad := 100;

for i:= 1 to 10 do
begin

write ('Entre el sexo(F o M) y la edad: ');


readln (sexo, edad);

{ Se valida que la data introducida sea válida }

if (((sexo <> 'F') and (sexo <> 'M')) or ((edad <= 0) and (edad >= 100))) then
writeln ('Error ....intente de nuevo ')
else
begin

{ Si se trata de una mujer acumulamos la edad y


contamos la cantidad de mujeres para luego,
calcular el promedio}

if sexo = 'F' then


begin
contmujer := contmujer + 1;
sumamujer := sumamujer + edad;
end

8
{ Si se trata de un hombre, los contamos y contamos
particularmente áquellos con edad mayor a 20 años}

else
begin
conthombre := conthombre + 1;
if edad > 20 then
cont_h20 := cont_h20 + 1;
end;

{ Se determina la edad máxima, guardando en la


variable mayor_edad la edad mayor y en la variable
sexo_mayor, el sexo del que tiene la mayor edad. Si
existe un hombre y una mujer con la misma edad, se asume
que se toma en cuenta el primero que se lee}

if edad > mayor_edad then


begin
mayor_edad := edad;
sexo_mayor := sexo;
end;

{ Se determina la edad mínima, guardando en la


variable menor_edad la edad menor y en la variable
sexo_menor, el sexo del que tiene la menor edad. Si
existe un hombre y una mujer con la misma edad, se asume
que se toma en cuenta el primero que se lee}

if edad < menor_edad then


begin
menor_edad := edad;
sexo_menor := sexo;
end;

end; {fin del else. no hay error}

end; {fin del for}

{ Se calcula el promedio de edad de las mujeres }

promedio_mujer := sumamujer / contmujer;

{ SALIDAS DEL PROGRAMA }

9
writeln ('Cantidad de mujeres = ', contmujer);
writeln ('Cantidad de hombres = ', conthombre);
writeln ('Promedio de edad de las mujeres = ', promedio_mujer:3:2);
writeln ('Cantidad de hombres mayores de 20 años = ', cont_h20);
tipo := ' una mujer';
if sexo_mayor = 'M' then
tipo := ' un hombre';
writeln ('La edad máxima es ', mayor_edad, ' y corresponde a ', tipo);
tipo := ' una mujer';
if sexo_menor = 'M' then
tipo := ' un hombre';
writeln ('La edad mínima es ', menor_edad, ' y corresponde a ', tipo);

END.

10

También podría gustarte