
mayor y menor entero que se puede formar
Publicado por M2 (15 intervenciones) el 04/12/2012 20:19:13
Buenas tardes tengo que realizar un programa que introduciendo un numero entero me genere el mayor que se puede formar con esos digitos y el menor para ello lo que hecho es introducir el entero en un array y ordenar ese array de mayor a menor y viceversa y eso convertirlo en numero entero pero no me funcina podrian echarle un vistazo,muchas gracias.
PROGRAM mayorYmenor;
CONST
max=100;
TYPE
tnumero=ARRAY[1..max] OF INTEGER;
VAR
n,cont,mayor,menor:integer;
numero:tnumero;
PROCEDURE pideEntero(VAR n:integer);
//pide un numero
BEGIN
WRITELN('Introduzca un numero: ');
READLN(n);
END;
PROCEDURE ConvertirEntero(VAR n,cont:integer;numero:tnumero);
//pasa el numero a vector
VAR
res,coc,i:integer;
BEGIN
cont:=0;
i:=1 ;
WHILE n>0 DO
BEGIN
coc:=n DIV 10;
res:=n MOD 10;
numero[i]:=res;
i:=i+1;
n:=coc;
cont:=cont+1;
END;
END;
PROCEDURE OrdenarArray(VAR numero:tnumero;cont:integer);
VAR
i,j,aux:integer;
BEGIN
FOR i:=i TO cont DO
BEGIN
FOR j:=1 TO cont DO
BEGIN
IF (numero[j]<numero[j+1])THEN
BEGIN
aux:=numero[j];
numero[j]:=numero[j+1];
numero[j+1]:=aux;
END;
END;
END;
END;
FUNCTION numeroMayor(VAR numero:tnumero):integer;
VAR
num,n,su,i:integer;
BEGIN
su:=0;
OrdenarArray(numero,cont);
FOR i:=1 TO cont DO
BEGIN
n:=numero[i];
num:=n*10;
su:=su+num;
END;
numeroMayor:=su;
END;
PROCEDURE OrdenarArrayMenor(VAR numero:tnumero;cont:integer);
VAR
i,j,aux:integer;
BEGIN
FOR i:=i TO cont DO
BEGIN
FOR j:=1 TO cont DO
BEGIN
IF (numero[j]>numero[j+1])THEN
BEGIN
aux:=numero[j];
numero[j]:=numero[j+1];
numero[j+1]:=aux;
END;
END;
END;
END;
FUNCTION numeroMenor(VAR numero:tnumero):integer;
VAR
num,n,su,i:integer;
BEGIN
su:=0;
OrdenarArrayMenor(numero,cont);
FOR i:=1 TO cont DO
BEGIN
n:=numero[i];
num:=n*10;
su:=su+num;
END;
numeroMenor:=su;
END;
BEGIN
pideEntero(n);
ConvertirEntero(n,cont,numero);
mayor:=numeroMayor(numero);
menor:=numeroMenor(numero);
WRITELN('El mayor numero que se puede for,ar a paritr de los digitos introducidos es',
mayor,' y el menor ',menor);
READLN;
END.
PROGRAM mayorYmenor;
CONST
max=100;
TYPE
tnumero=ARRAY[1..max] OF INTEGER;
VAR
n,cont,mayor,menor:integer;
numero:tnumero;
PROCEDURE pideEntero(VAR n:integer);
//pide un numero
BEGIN
WRITELN('Introduzca un numero: ');
READLN(n);
END;
PROCEDURE ConvertirEntero(VAR n,cont:integer;numero:tnumero);
//pasa el numero a vector
VAR
res,coc,i:integer;
BEGIN
cont:=0;
i:=1 ;
WHILE n>0 DO
BEGIN
coc:=n DIV 10;
res:=n MOD 10;
numero[i]:=res;
i:=i+1;
n:=coc;
cont:=cont+1;
END;
END;
PROCEDURE OrdenarArray(VAR numero:tnumero;cont:integer);
VAR
i,j,aux:integer;
BEGIN
FOR i:=i TO cont DO
BEGIN
FOR j:=1 TO cont DO
BEGIN
IF (numero[j]<numero[j+1])THEN
BEGIN
aux:=numero[j];
numero[j]:=numero[j+1];
numero[j+1]:=aux;
END;
END;
END;
END;
FUNCTION numeroMayor(VAR numero:tnumero):integer;
VAR
num,n,su,i:integer;
BEGIN
su:=0;
OrdenarArray(numero,cont);
FOR i:=1 TO cont DO
BEGIN
n:=numero[i];
num:=n*10;
su:=su+num;
END;
numeroMayor:=su;
END;
PROCEDURE OrdenarArrayMenor(VAR numero:tnumero;cont:integer);
VAR
i,j,aux:integer;
BEGIN
FOR i:=i TO cont DO
BEGIN
FOR j:=1 TO cont DO
BEGIN
IF (numero[j]>numero[j+1])THEN
BEGIN
aux:=numero[j];
numero[j]:=numero[j+1];
numero[j+1]:=aux;
END;
END;
END;
END;
FUNCTION numeroMenor(VAR numero:tnumero):integer;
VAR
num,n,su,i:integer;
BEGIN
su:=0;
OrdenarArrayMenor(numero,cont);
FOR i:=1 TO cont DO
BEGIN
n:=numero[i];
num:=n*10;
su:=su+num;
END;
numeroMenor:=su;
END;
BEGIN
pideEntero(n);
ConvertirEntero(n,cont,numero);
mayor:=numeroMayor(numero);
menor:=numeroMenor(numero);
WRITELN('El mayor numero que se puede for,ar a paritr de los digitos introducidos es',
mayor,' y el menor ',menor);
READLN;
END.
Valora esta pregunta


0