• Viernes 8 de Noviembre de 2024, 09:38

Autor Tema:  Detectar Numero Mayor Y Meror  (Leído 3405 veces)

luisoswaldo

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
Detectar Numero Mayor Y Meror
« en: Jueves 29 de Noviembre de 2007, 20:07 »
0
necesito alguna orientacion de como indentificar si se introducen una serie ilimitada de numeros cual es el mayor y cual el menor.
Por favor digan si existe algun link sobre este tema

lo que he pensado es esto:

write ('numero'); read (num)
numay:=0;
numen:=100;(por decir algo)

if num > numay then numay:=ed;
if num > numen then numen:=ed;

write ('numero mayor', numay);
write ('numero menor', numen);

entonces si por ej introduzco 23 y 54 me dice que el mayor es 54, pero no guarda a 23 como menor.

Tendria que compar a 23 con 54. pero para ser sincero no tengo muy claro como acerlo. pense hacerlo con un array pero creo que tendria que saber de antemano la cantidad de numeros que se van a introducir.

Les doy gracias de antemano por la ayuda que puedan darme.

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: Detectar Numero Mayor Y Meror
« Respuesta #1 en: Jueves 29 de Noviembre de 2007, 23:22 »
0
Código: Text
  1.  
  2. const
  3.    MIN = 0;
  4.    MAX = 100;
  5. var
  6.    N: Integer;
  7. begin
  8.     Write('ingrese un numero');
  9.     Readln(N);
  10.     if N > MAX then
  11.        WriteLN('el numero ', N, ' es mayor que ', MAX)
  12.     else if N < MIN then
  13.         WriteLn('el numero ', N, ' es menor que ', MIN)
  14.     else
  15.         WriteLn('el numero ', N, ' esta entre ', MIN, ' y ', MAX);
  16.   ReadLn;
  17. end.
  18.  
  19.  
Fijate que el codigo no lo compile, pero deberia funcionar bien.

Si quieres que la seria sea ilimitada solo debes poner el codigo que coloque entre este bucle:
Código: Text
  1.  
  2. repeat
  3.    ... aca va el codigo
  4. until 1<>1;
  5.  
  6.  
Asi se repetiria infinitas veces.


Citar
if num > numay then numay:=ed;
if num > numen then numen:=ed;
Creo que un signo de mayor ">" deberia ser menor en realidad.

Si quieres comparar 2 numeros seria asi:
Código: Text
  1.  
  2. var
  3.    A,B: integer;
  4. begin
  5.    Readln(A);
  6.    ReadLn(B);
  7.    If A > B then
  8.        WriteLn(A, ' es mayor que ', B)
  9.   else if A < B then
  10.       WriteLn(A, ' es menor que ', B)
  11.   else
  12.       WriteLN('los numeros son iguales');
  13.   Readln;
  14.  
  15.  

luisoswaldo

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
Re: Detectar Numero Mayor Y Meror
« Respuesta #2 en: Jueves 29 de Noviembre de 2007, 23:31 »
0
hola gracias por tu ayuda pero me pare que no me explique bien.

lo que yo necesito es saber si introduzco una serie de numeros como: 3,5,6,1,5,7,10,20,infinito.

me diga cual es el mayor y cual el menor
en este caso
may=20
menor=1

disculpa tienes razon me equivoque cuando lo transcribi

if num > numay then numay:=ed;
if num < numen then numen:=ed;

lencho

  • Miembro de PLATA
  • *****
  • Mensajes: 1076
    • Ver Perfil
Re: Detectar Numero Mayor Y Meror
« Respuesta #3 en: Jueves 29 de Noviembre de 2007, 23:43 »
0
supongo que entonces tendrias que guardar todos los numeros (n) en un vector.
Luego el almacenar en dos variables el valor de la primer casilla: mayor = v[0], menor = v[0].
Por ultimo recorrer todo el vector haciendo las comparaciones que te sugirio Enko.

BYTE.
______________________________________________________________________________________
"No estoy de acuerdo con lo que dices, pero defenderé con mi vida tu derecho a expresarlo"

luisoswaldo

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
Re: Detectar Numero Mayor Y Meror
« Respuesta #4 en: Jueves 29 de Noviembre de 2007, 23:58 »
0
muchas gracias lo voy a intentar y les aviso como me va, por que no tengo mucho tiempo programando y aun no entiendo bien como funsiona un arreglo internamente

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: Detectar Numero Mayor Y Meror
« Respuesta #5 en: Viernes 30 de Noviembre de 2007, 00:08 »
0
No necesitas un vector.!!!!!!!!!!!!!!!!!1
Código: Text
  1.  
  2. var
  3.   Min, Max, N: Integer;
  4. begin
  5.    Min := 65025;
  6.    Max := 0;
  7.   repeat  
  8.       Readln(N);
  9.       if N &#62; Max then  Max := N;
  10.       if N &#60; Min then Min := N;
  11.       WriteLn('el mayor es ', Max);
  12.       WriteLn('el menor es ', Min);
  13.       WriteLn('el actual es ' , N);
  14.   until 1 = 2
  15. end.
  16.  
  17.  
Te explico usando solo en numeor Menor que es el que se ve un toque mas complicado.
Le asigno al Min (numero menor) el mayor numero posible para entero de 2 bytes. es 255x255=65025.
En el primer ciclo lees un numero N, por ejemplo es 155, lo comparamos con el Menor que al principio es 65025. N es menor que Min entonces Min para a ser 155.

En la segunda vuelta, si por ejemplo se ingresa 366, como Min es 155 en el ejemplo, es menor que N que es 366, no pasa nada entonces.

Si en la tercera vuelta, se ingresa 1, N es 1 y es menor que Min que es 155, se asinga entonces un 1 a Min.

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: Detectar Numero Mayor Y Meror
« Respuesta #6 en: Viernes 30 de Noviembre de 2007, 00:16 »
0
Por sierto, NO PUEDES USAR VECTORES ya que no conseguirias que la seria fuera infinita. :hola:

luisoswaldo

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
Re: Detectar Numero Mayor Y Meror
« Respuesta #7 en: Viernes 30 de Noviembre de 2007, 00:47 »
0
yo declare la variable n como real puesto que tengo que hacer muchos procesos que lo requieren. entonces cundo introduzco un numero cualquiera no lo acepta se queda en un ciclo. lo unico distinto es el tipo de dato pero hasta donde yo se pascal no puede comparar distintos tipos de datos. ¿como hago con los demas procesos que tengo que utilizar real. por que no creo que sea logico pedir lo mismo con 2 tipos de dato diferente!!!!!!

luisoswaldo

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
Re: Detectar Numero Mayor Y Meror
« Respuesta #8 en: Viernes 30 de Noviembre de 2007, 02:43 »
0
disculpen era un error que tenia pero sigue sin funcionar.

este es parte de mi codigo pero se queda trancado en el segundo bucle y no se que tengo que hacer para salir de el.

emay:= 0;
eme := 999;

          repeat
                       
                 
                  gotoxy (30,7); write ('Edad: ');
                  readln (ed);
                  if (ed < 0) and (ed > 100) then
                  gotoxy (10,8); write ('ERROR EDAD DEBE SER >= 0 Y <= 100');

          until(ed >= 0) and (ed <= 100);

             repeat
                       If ed > emay then emay := ed;
                       if ed < eme then  eme:=ed;
            {se queda en este bucle y no puedo salir}
             until 1=2;

                       gotoxy (5,18); write ('Edad mayor es: ',emay:2:0);
                        gotoxy (5,19); write ('Edad menor es: ',eme:2:0);

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: Detectar Numero Mayor Y Meror
« Respuesta #9 en: Viernes 30 de Noviembre de 2007, 20:31 »
0
tenes más puestos los bloques repeat, van uno dentro del otro. Vos hiciste 2 por separado.
Código: Text
  1.  
  2. emay:= 0;
  3. eme := 999;
  4.  
  5. repeat
  6.    {aca se hace la comprobacion que el numero este entre 0 y 100
  7.     repeat
  8.           gotoxy (30,7); write ('Edad: ');
  9.           readln (ed);
  10.           if (ed &#60; 0) and (ed &#62; 100) then
  11.           gotoxy (10,8); write ('ERROR EDAD DEBE SER &#62;= 0 Y &#60;= 100');
  12.      until(ed &#62;= 0) and (ed &#60;= 100);
  13.  
  14.      If ed &#62; emay then emay := ed;
  15.      if ed &#60; eme then eme:=ed;
  16.      {este repeat corresponde al primero y no al segudno como esta en tu codigo}
  17. until 1=2;
  18.  
  19.  
puedes cambiar mejor un repeat por un while tal vez....
Código: Text
  1.  
  2. var
  3.    resuesta: char;
  4. begin
  5.      emay:= 0;
  6.      eme := 999;
  7.      respuesta := 'y';
  8.  
  9. while respuesta = 'y' do
  10. begin
  11.    {aca se hace la comprobacion que el numero este entre 0 y 100
  12.     repeat
  13.           gotoxy (30,7); write ('Edad: ');
  14.           readln (ed);
  15.           if (ed &#60; 0) and (ed &#62; 100) then
  16.           gotoxy (10,8); write ('ERROR EDAD DEBE SER &#62;= 0 Y &#60;= 100');
  17.      until(ed &#62;= 0) and (ed &#60;= 100);
  18.  
  19.      If ed &#62; emay then emay := ed;
  20.      if ed &#60; eme then eme:=ed;
  21.      {este repeat corresponde al primero y no al segudno como esta en tu codigo}
  22.     WriteLn('desea continuar Y/N');
  23.     respuesta := ReadKey;
  24. end;
  25. end.
  26.  
  27.  

luisoswaldo

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
Re: Detectar Numero Mayor Y Meror
« Respuesta #10 en: Viernes 30 de Noviembre de 2007, 21:49 »
0
si tienes toda la razon quite un repeat porque ya tenia el while y funciona perfectamente. Te agradezco mucho la ayuda. un abrazo