Pascal/Turbo Pascal - mayor y menor entero que se puede formar

 
Vista:
sin imagen de perfil

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.
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

mayor y menor entero que se puede formar

Publicado por ramon (2158 intervenciones) el 05/12/2012 17:09:53
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
{Mira a ver si esto te ayuda }
 
 
 program numeros;
   uses
      crt;
   var
     numax, numin : integer;
     cx, cn : string[12];
     nume : integer;
 
   procedure entranumero;
   begin
       write('  Entre N§ : ');
       readln(nume);
   end;
 
   procedure asignayordena;
   var
      caden : string[18];
      t, y : integer;
      camb : char;
   begin
      str(nume,caden);
      for t := 1 to length(caden) do
        for y := length(caden) downto t do
        if caden[t] > caden[y] then
        begin
            camb := caden[t];
            caden[t] := caden[y];
            caden[y] := camb;
        end;
        cn := caden;
        for t := 1 to length(caden) do
        for y := length(caden) downto t do
        if caden[t] < caden[y] then
        begin
            camb := caden[t];
            caden[t] := caden[y];
            caden[y] := camb;
        end;
          cx := caden;
   end;
 
   procedure presentaresultados;
   begin
       writeln(' El Numero Mayor Es : ',cx);
       writeln(' El Numero Menor Es : ',cn);
   end;
 
   begin
       clrscr;
       entranumero;
       asignayordena;
       clrscr;
       presentaresultados;
       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
sin imagen de perfil

mayor y menor entero que se puede formar

Publicado por M2 (15 intervenciones) el 05/12/2012 20:49:52
Muchas gracias Ramon pero lo tengo que realizar con arrays
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

mayor y menor entero que se puede formar

Publicado por ramon (2158 intervenciones) el 06/12/2012 13:16:14
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
65
66
67
68
69
70
71
72
73
74
75
76
{Vale mira pasado a un array de enteros todo es lo que tu quieras que sea yo te pongo las bases
tu tienes que  hacer el resto}
 
 program numeros;
   uses
      crt;
   var
     numax, numin : integer;
     cx, cn : string[12];
     nuto, nume : integer;
     mayor, menor : array[1..12] of integer;
 
   procedure entranumero;
   begin
       write('  Entre N§ : ');
       readln(nume);
   end;
 
   procedure asignayordena;
   var
      caden : string[18];
      t, y : integer;
      camb : char;
   begin
      str(nume,caden);
      nuto := length(caden);
      for t := 1 to length(caden) do
        for y := length(caden) downto t do
        if caden[t] > caden[y] then
        begin
            camb := caden[t];
            caden[t] := caden[y];
            caden[y] := camb;
        end;
        cn := caden;
        for t := 1 to length(caden) do
        for y := length(caden) downto t do
        if caden[t] < caden[y] then
        begin
            camb := caden[t];
            caden[t] := caden[y];
            caden[y] := camb;
        end;
          cx := caden;
   end;
 
   procedure presentaresultados;
   var
        i : integer;
   begin
        for i := 1 to nuto do
       begin
        mayor[i] := ord(cx[i]) - 48;
         menor[i] := ord(cn[i]) - 48;
      end;
       writeln(' El N§ Mayor Es : ');
       for i := 1 to nuto do
        begin
       write(mayor[i]);
       end;
       writeln;
       writeln(' El N§ Menor Es : ');
       for i := 1 to nuto do
        begin
       write(menor[i]);
       end;
   end;
 
   begin
       clrscr;
       entranumero;
       asignayordena;
       clrscr;
       presentaresultados;
       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