Pascal/Turbo Pascal - Ejercicio

 
Vista:

Ejercicio

Publicado por Juliana (6 intervenciones) el 29/03/2012 20:25:55
Necesito ayuda con una parte de un ejercicio sobre el tema de Ciclos repetitivos, no tengo ni que usar funciones ni procedimientos, solo ciclos.

El ejercicio dice

Leer un Valor N y luego N numeros enteros de 3 cifras. Se pide imprimir el Mayor y el menor y las veces que aparece cada uno. Pueden venir datos erroneos.

Hasta la parte de imprimir el mayor y el menos, eso lo puedo hacer pero el tema se me complica con mostrar las veces que aparece cada uno, no entiendo si es las veces que aparece por ejemplo, el usuario ingresa, 1 ,1,1,2,2,3,3,3,3 , el minimo es 1 y el maximo es 3, el 3 se ingreso 4 veces y el 1 solo 3 veces eso es lo que se supone que hace el programa no?, no me sale =( les dejo lo que hice , seguramente veran que hay cosas mal


Program Ej5;

var n1:integer;
n2:integer ;
max2,min2,max,min,pos:integer;

begin
writeln('introduzca un valor');
readln(n1);
writeln('introduzsca un valor de 3 cifras');
readln(n2);
min:=n1;
max:=n1;
min2:=n2;
max2:=n2;
pos:=1;

while n1 and n2 <> -n1 and -n2 do

begin
writeln('introduzca un valor');
readln(n1);
writeln('introduzsca un valor de 3 cifras');
readln(n2);
begin
if n1>max then max:=n1
else if n1<min then min:=n1;
if n2>max then max2:=n2
else if n2<min then min2:=n2;
if max>max2 then writeln(' el maximo valor es', max)
else writeln('el maximo valor es',max2);
if min<min2 then writeln('el minimo valor es',min)
else writeln('el minimo valor es ',min2);
end;
end;
end.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Ejercicio

Publicado por ramon (2158 intervenciones) el 30/03/2012 18:09:16
{Para implementar el proceso que indicas necesitas tener un array de valores numéricos
tanto para el primero como para el segundo para poder verificar cual es mayor menor y
cuantas veces se repiten espero esto te ayude a entenderlo}

program ejemp5;
uses
crt;
var
valores : array[1..2,1..40] of integer;
ar1, ar2, cont : integer;
pas1, pas2, t, temp : integer;
begin
cont := 1;
while cont < 40 do
begin
clrscr;
write('Termina entrando 0');
writeln;
write('Entre un numero : ');
readln(valores[1,cont]);
if valores[1,cont] = 0 then
begin
cont := cont - 1;
break;
end;
write('Entre un numero de 3 cifras : ');
readln(valores[2,cont]);
if valores[2,cont] = 0 then
begin
cont := cont - 1;
break;
end;
cont := cont + 1;
end;
for ar1 := cont downto 1 do
for ar2 := 1 to ar1 - 1 do
begin
if valores[1,ar1] < valores[1,ar2] then
begin
temp := valores[1,ar1];
valores[1,ar1] := valores[1,ar2];
valores[1,ar2] := temp;
end;
end;
for ar1 := cont downto 1 do
for ar2 := 1 to ar1 - 1 do
begin
if valores[2,ar1] > valores[2,ar2] then
begin
temp := valores[2,ar1];
valores[2,ar1] := valores[2,ar2];
valores[2,ar2] := temp;
end;
end;
clrscr;
pas1 := 1;
for t := 2 to cont do
begin
if valores[1,t - 1] = valores[1,t] then
pas1 := pas1 + 1;
end;
pas2 := 1;
for t := 2 to cont do
begin
if valores[2,t - 1] = valores[2,t] then
pas2 := pas2 + 1;
end;
writeln('El numero menor Es = ',valores[1,1]);
writeln('Veces de aparicion = ',pas1);
writeln('El numero mayor Es = ',valores[2,1]);
writeln('Veces de aparicion = ',pas2);
readln;
end.

[En caso de variables tendrás que implementar variables contadores para el máximo y
otra para el mínimo al mismo tiempo que compruebas cual es mayor o menor y cambias
el contador para el nuevo valor entrado es mas fácil esto}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ejercicio

Publicado por Juliana (6 intervenciones) el 30/03/2012 23:27:47
Gracias, aunque la verdad todavia no vi nada que tenga que ver con arrays , es un ejercicio para practicar ciclos repetitivos, como dijiste al final usando variables, que es ahi donde se me complica,igual se agradece.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ejercicio

Publicado por ramon (2158 intervenciones) el 02/04/2012 18:36:26
{Mira esto tendrás que afinarlo algo}

program bucles;
uses
crt;
var
entra, entra1, entra2, entra3, entra4 : integer;
cont1, cont2 : integer;
nu : integer;
begin
nu := 0;
cont1 := 0;
cont2 := 0;
entra := 1;
entra1 := 100;
entra2 := 0;
entra3 := 0;
entra4 := 0;
while entra <> 0 do
begin
clrscr;
writeln('Termina Entrada [0]');
writeln;
if nu = 0 then
write('Entre un Numero : ');
if nu = 1 then
write('Entre un Numero de 3 cifras : ');
readln(entra);
if (entra > 0) and (nu = 0) then
begin
if entra < entra1 then
begin
cont1 := 0;
entra1 := entra;
end;
if entra = entra1 then
begin
cont1 := cont1 + 1
end;
end;
if (entra > 0) and (nu = 1) then
begin
if entra > entra2 then
begin
cont2 := 0;
entra2 := entra;
end;
if entra2 = entra then
begin
cont2 := cont2 + 1;
end;
end;
if nu = 0 then
nu := nu + 1
else
nu := 0;
end;
clrscr;
writeln('El numero Menor es : ',entra1,' Se repite : ',cont1);
writeln('El numero Mallor es : ',entra2,' Se repite : ',cont2);
readln;
end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ejercicio

Publicado por noelis (1 intervención) el 12/09/2012 21:37:12
Elabore un algoritmo que lea un lote de N nu&#769;meros enteros y haga lo siguiente: si hay ma&#769;s nu&#769;meros positivos que negativos, calcule el promedio de los positivos; en caso contrario calcule el promedio de los negativos; y si son iguales calcule el promedio de todos los nu&#769;meros incluyendo los ceros.
por fa quien me ayuda lo necesito para ante de la 6 de la tarde gracias !!!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ejercicio

Publicado por ramon (2158 intervenciones) el 12/09/2012 23:31:29
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
{Algo de esto te vale}
 
program numeros;
 uses
    crt;
  var
     numer : array[1..35] of integer;
     pares, nones : array[1..35] of integer;
     par, non, cont, k, t : integer;
     toma : boolean;
     valorpar, valornon : word;
 
  procedure calculos;
  begin
      randomize;
      for cont := 1 to 35 do
      begin
          k := random(130);
          toma := true;
           for t := 1 to cont do
           begin
             if numer[t] = k then
             toma := false
           end;
           if toma = false then
           cont := cont - 1
         else
           numer[cont] := k;
      end;
       cont := 0;
       k := 0;
       for t := 1 to 35 do
       begin
           if numer[t] mod 2 = 0 then
           begin
           pares[cont] := numer[t];
           cont := cont + 1;
           end
        else
          begin
          nones[k] := numer[t];
          k := k + 1;
          end;
       end;
       for par := 1 to cont do
       valorpar := valorpar + pares[par];
       for non := 1 to k do
       valornon := valornon + nones[non];
       gotoxy(1,8);
       if cont > k then
       write('El promedio de los pares es : ',valorpar div cont)
     else
       write('El promedio de los nones es : ',valornon div k);
       if cont = k then
       write('El promedio de los pares y nones es : ',(valorpar + valornon)
                                                 div (cont + k));
       readkey;
  end;
 
 
  begin
      clrscr;
      calculos;
  end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar