| 
	
		|  Autor | Tema: Ayuda con codificacion en Pascal   (Leído 9,500 veces) |  
	| 
			| 
					
						| Nightwinds 
								
								 Desconectado 
								Mensajes: 21
								
								
								
								
								
								   | 
 
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 
								Mensajes: 762
								 
								Yo no la vote, pero me la tengo que aguantar igual
								
								
								
								
								
								     | 
 
Te contesto porque es feo que nadie lo haga   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: si num1 < num2 entoncessi 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. 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 
								Mensajes: 21
								
								
								
								
								
								   | 
 
thanks |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| tincopasan 
								       
								
								 Desconectado 
								Mensajes: 1.286
								 
								No es lo mismo conocer el camino que recorrerlo.
								
								
								
								
								
								   | 
 
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 
								Mensajes: 2.059
								
								 
								Coder ~
								
								
								
								
								
								     | 
 
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 
								Mensajes: 1.286
								 
								No es lo mismo conocer el camino que recorrerlo.
								
								
								
								
								
								   | 
 
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 
								Mensajes: 2.059
								
								 
								Coder ~
								
								
								
								
								
								     | 
 
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 
								Mensajes: 1
								
								
								
								
								
								   | 
 
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 | 
 
 |  |  |  |  |  
 
	
 
 
				
					
						| Mensajes similares |  
						|  | Asunto | Iniciado por | Respuestas | Vistas | Último mensaje |  
						|   |   | [PROBLEMA] Ayuda con codificacion Programación C/C++
 | SonaArtica | 1 | 2,460 |  25 Abril 2012, 17:54 pm por xiruko
 |  
						|   |   | AYUDA -codificación base64 AGPD- Dudas Generales
 | MJRuiz | 0 | 1,969 |  21 Febrero 2013, 17:40 pm por MJRuiz
 |  
						|   |   | Ayuda para una codificación sencila Seguridad
 | Cergath | 1 | 2,340 |  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,728 |  2 Abril 2015, 03:53 am por rir3760
 |    |