elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Ayuda con codificacion en Pascal
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con codificacion en Pascal  (Leído 9,000 veces)
Nightwinds

Desconectado Desconectado

Mensajes: 21


Ver Perfil
Ayuda con codificacion en Pascal
« en: 10 Junio 2009, 05:17 am »

Programa que introduzca 3 numeros enteros y aparescan ordenados primero de menor a mayor y despues de mayor a menor.¿Cual es mi error?

program numeros;
uses
  crt,dos;
var
  num1num2,num3:integer;
Begin
clrscr;
writeln('ingresa un numero');
readln(num1);
writeln('ingresa otro numero');
readln(num2);
writeln('ingresa otro numero');
readln(num3);
if (num1<num2) and (num1<num3) then men:=num1 else may:=num3
write(<<<Oprime cualquier tecla para continuar>>>);
repeat until keypressed
end.


« Última modificación: 10 Junio 2009, 05:26 am por Nightwinds » En línea

Anibal784


Desconectado Desconectado

Mensajes: 762

Yo no la vote, pero me la tengo que aguantar igual


Ver Perfil WWW
Re: Ayuda con codificacion en Pascal
« Respuesta #1 en: 11 Junio 2009, 02:21 am »

Te contesto porque es feo que nadie lo haga :P
Citar
if (num1<num2) and (num1<num3) then men:=num1 else may:=num3
con el if lo que estás diciendo es que si num1 < num2 y num1 < num3, seguro num1 es el menor de todos, pero no sabes que pasa si eso no se cumple.

Lo que puedes hacer es:
Código:
si num1 < num2 entonces
    si num1 < num3 entonces
        num1 es el menor
        si num2 < num3 entonces
            num2 es el que sigue
            num3 es el mayor
        sino
            num3 es el que sigue
            num2 es el mayor
        fin si
    sino
            num3 es menor
            num1 es el siguiente
            num2 es el mayor
    fin si
sino
fíjate que si el primer if se cumple y luego no se cumple que num3 sea mayor que num1, entonces ya todo termina pues num3 < num1 y num1 < num2, es decir ya está todo resuelto, por eso sale por el sino y da todo resuelto, ahora si num3 es efectivamente mayor, entonces primero debes verificar si es menor que num2 o no. Está incompleto, pero podrías seguir una lógica parecida o intentar algo diferente.


En línea

El que llega sin que lo llamen, se va sin que lo echen.

Citar
Vos no la votaste por eso la tenes adentro.
Lo fino no es lo tuyo, y a mi me chupa un huevo, soy argentino y no peronista, y eso es lo que realmente te molesta.
Nightwinds

Desconectado Desconectado

Mensajes: 21


Ver Perfil
Re: Ayuda con codificacion en Pascal
« Respuesta #2 en: 11 Junio 2009, 07:11 am »

thanks
En línea

tincopasan


Desconectado Desconectado

Mensajes: 1.286

No es lo mismo conocer el camino que recorrerlo.


Ver Perfil
Re: Ayuda con codificacion en Pascal
« Respuesta #3 en: 16 Junio 2009, 03:27 am »

por lo q veo y lo poco q se de pascal te está faltando declarar varias variables, x ej may y men a las cuales le asignaste numeros, además como bien dice en la respuesta anterior das por sentado los valores (2 mayor q 1, etc),
que pasa si es alreves o son iguales? si solo queres usar tres números podes codificar con if.. then pero si fuesen 50 números? te volves loco! existen varias rutinas de ordenación. por ej el metodo conocido como de burbuja, q basicamente lo q hace es comparar el primer numero con el segundo si el primero es mayor lo intercambia y si es menor lo deja en el orden q esta, despues compara el segundo con el tercero y así sucesivamente. son pocas líneas de código y funciona bien.
En línea

h0oke


Desconectado Desconectado

Mensajes: 2.059


Coder ~


Ver Perfil WWW
Re: Ayuda con codificacion en Pascal
« Respuesta #4 en: 16 Junio 2009, 03:34 am »

Citar
por ej el metodo conocido como de burbuja
Es poco eficiente. Menos code y mas eficiente es el método de selección directa. Por otra parte está utilizando variables simples con lo cual queda descartado cualquier método de ordenación.
La lógica que utilizó doctor77 es la correcta.
En línea

tincopasan


Desconectado Desconectado

Mensajes: 1.286

No es lo mismo conocer el camino que recorrerlo.


Ver Perfil
Re: Ayuda con codificacion en Pascal
« Respuesta #5 en: 17 Junio 2009, 05:10 am »

dejo un código de como lo hubiese hecho basicamente con el método de burbuja,
son 40 líneas de programa, podes usar hasta 1000 números si tenes ganas de escribir  (te recomiendo que lo pruebes con 10 hasta 100)
 me gustaría ver como haces lo mismo con el método de comparación de if.. then
 a ver si mato mi ignorancia

program ordenar;
uses crt;

var a:array [1..1000] of integer;
    cont,conta,cuantos,aux:integer;


begin
clrscr;
writeln('Cuantos numeros desea ordenar?');
readln(cuantos);
cont:=1;
  while (cont<=cuantos) do
  begin
    writeln('Escriba un numero: ');
    readln(a[cont]);
    cont:=cont+1;
  end;
  conta:=1;
  while conta<cuantos do
  begin
     cont:=1;
     while cont<cuantos do
       begin
       if (a[cont]>a[cont+1]) then
       begin
          aux:=a[cont];
          a[cont]:=a[cont+1];
          a[cont+1]:=aux;
       end;
          cont:=cont+1;
       end;
  conta:=conta+1;
  end;
  cont:=1;
  while cont<=cuantos do
  begin
  writeln(' ',a[cont]);
  cont:=cont+1;
  end;
readkey;
end.
En línea

h0oke


Desconectado Desconectado

Mensajes: 2.059


Coder ~


Ver Perfil WWW
Re: Ayuda con codificacion en Pascal
« Respuesta #6 en: 17 Junio 2009, 22:32 pm »

Si se desean ordenar elementos en un vector que no está definido es preferible utilizar el método de ordenación por inserción.
En línea

hrchacho

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Re: Ayuda con codificacion en Pascal
« Respuesta #7 en: 5 Mayo 2016, 14:02 pm »

Para ordenar 3 números realice lo sgte:
PROGRAM OREN;
USES CRT;
VAR A,B,C : INTEGER;
BEGIN
    READLN(A,B,C);
    IF  (A< B) AND (A<C)
         THEN
            IF (B<C)
                 THEN
                  WRITELN(A,' ',B,' ',C)
                 ELSE
                   WRITELN(A,' ',C,' ',B );
    IF  (B< A) AND (B<C)
         THEN
            IF (A<C)
                 THEN
                  WRITELN(B,' ',A,' ',C)
                 ELSE
                   WRITELN(B,' ',C,' ',A );

    IF  (C< A) AND (C<B)
         THEN
            IF (A<B)
                 THEN
                  WRITELN(C,' ',A,' ',B)
                 ELSE
                   WRITELN(C,' ',B,' ',A ) ;

 READKEY;
END.

Ojala les sirva... Saludos
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[PROBLEMA] Ayuda con codificacion
Programación C/C++
SonaArtica 1 2,151 Último mensaje 25 Abril 2012, 17:54 pm
por xiruko
AYUDA -codificación base64 AGPD-
Dudas Generales
MJRuiz 0 1,763 Último mensaje 21 Febrero 2013, 17:40 pm
por MJRuiz
Ayuda para una codificación sencila
Seguridad
Cergath 1 2,090 Último mensaje 30 Abril 2014, 03:30 am
por flacc
Ayuda errores, ejercicio dia, mes, año Codificación a C
Programación C/C++
lanak_29 4 2,464 Último mensaje 2 Abril 2015, 03:53 am
por rir3760
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines