• Domingo 22 de Diciembre de 2024, 17:43

Autor Tema:  Help Suma de 3 numeros en Hexadecimal  (Leído 1762 veces)

Shadownn

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Help Suma de 3 numeros en Hexadecimal
« en: Lunes 25 de Mayo de 2009, 22:13 »
0
Buenoo .. de antemano gracias.. vine a ver si pueden con este ejercicio yo me rindo xD jaja le eh dado demasiadas vueltas... pq la suma al final me da 000 ?
el error esta en los numero hexa1 hexa2 y hexa3 o no c.. a ver si pueden .. gracias



Código: Pascal
  1.  
  2. program proyecto_dos;
  3. uses
  4. crt;
  5. const
  6. n=3;
  7.  
  8. type
  9. arreglo=array [1..n] of integer;
  10. str5=string[1];
  11.  
  12. var
  13.   hexa:arreglo;
  14.   numerouno,numerodos,numerotres:str5;
  15.   opcion:char;
  16.   i,acarreoo:byte;
  17.   hexaa:char;
  18.   resp:char;
  19.   c:integer;
  20.   hexa1,hexa2,hexa3:char;
  21.   acarreo:char;
  22.  
  23. function validarhexa(hexaa:char):integer;
  24. begin
  25.  if (ord(hexaa)=49)
  26.     then validarhexa:=1
  27.     else
  28.        if (ord(hexaa)=50)
  29.           then validarhexa:=2
  30.           else
  31.             if (ord(hexaa)=51)
  32.                then validarhexa:=3
  33.                else
  34.                              if (ord(hexaa)=52)
  35.                then validarhexa:=4
  36.                else
  37.                                if (ord(hexaa)=53)
  38.                then validarhexa:=5
  39.                 else
  40.                             if (ord(hexaa)=54)
  41.                then validarhexa:=6
  42.                 else
  43.                            if (ord(hexaa)=55)
  44.                then validarhexa:=7
  45.                 else
  46.                            if (ord(hexaa)=56)
  47.                then validarhexa:=8
  48.                 else
  49.                            if (ord(hexaa)=57)
  50.                then validarhexa:=9
  51.                else
  52.                  if (ord(hexaa)=65) or (ord(hexaa)=97)
  53.                     then validarhexa:=10
  54.                     else
  55.                        if (ord(hexaa)>=66) or (ord(hexaa)=98)
  56.                           then validarhexa:=11
  57.                           else
  58.                             if (ord(hexaa)=67) or (ord(hexaa)=99)
  59.                                then validarhexa:=12
  60.                                else
  61.                                  if (ord(hexaa)=68) or (ord(hexaa)=100)
  62.                                    then validarhexa:=13
  63.                                    else
  64.                                        if (ord(hexaa)=69) or (ord(hexaa)=101)
  65.                                            then validarhexa:=14
  66.                                            else
  67.                                                 if (ord(hexaa)=70) or (ord(hexaa)=102)
  68.                                                    then validarhexa:=15
  69.                                                    else validarhexa:=0;
  70.  
  71. end;
  72.  
  73.  
  74. procedure incluir;
  75. begin
  76. writeln('Diga el primer numero hexadecimal:');
  77. readln(numerouno);
  78. writeln('Diga el segundo numero hexadecimal:');
  79. readln(numerodos);
  80. writeln('Diga el tercer numero hexadecimal: ');
  81. readln(numerotres);
  82. gotoxy(10,20);
  83. writeln('NOTA:');
  84. writeln('El numero hexadecimal debe ser de 5 digitos');
  85. readkey;
  86. end;
  87.  
  88.  
  89. procedure inicializar;
  90. begin
  91. hexa1:='"';
  92. hexa2:='"';
  93. hexa3:='"';
  94. end;
  95.  
  96. procedure calculo(c,i:integer;numerouno,numerodos,numerotres:string;var hexa1,hexa2,hexa3:char;var hexa:arreglo);
  97.  
  98. begin
  99. c:=1;
  100. for i:=0 to n do
  101.   begin
  102.   hexa1:=numerouno[c];
  103.   hexa2:=numerodos[c];
  104.   hexa3:=numerotres[c];
  105.   hexa[i]:=validarhexa(hexa1)+validarhexa(hexa2)+validarhexa(hexa3)+validarhexa(acarreo);
  106.   if(hexa[i]>=16)
  107.        then
  108.        begin
  109.        hexa[i]:=hexa[i]-16;
  110.        acarreoo:=validarhexa(acarreo)+ 1;
  111.        end;
  112.     c:=c-1;
  113.     inc(i);
  114.  
  115.   end;
  116.  
  117. writeln('Sumado');
  118. readkey;
  119. end;
  120.  
  121.  
  122. procedure imprimir;
  123. begin
  124. write('Resultado Suma: ');
  125. for i:=1 to n do
  126.     begin
  127.             write(hexa[i]);
  128.      end;
  129. readkey;
  130. end;
  131. procedure menu;
  132. begin
  133. textcolor (black)   ;
  134.    while (opcion<> '4')  do
  135.      begin
  136.          textbackground(white);
  137.           clrscr;
  138.           writeln;
  139.           writeln;
  140.           textcolor(red);
  141.           writeln('               ====== M E N U ======               ');
  142.           textcolor(black);
  143.           writeln;
  144.           writeln;
  145.           writeln('           1... Incluir');
  146.           writeln('           2... Sumar');
  147.           writeln('           3... Imprimir');
  148.           writeln('           4... Salir');
  149.           writeln;
  150.           textcolor(3);
  151.           writeln('Elije una opcion:');
  152.           textcolor(black);
  153.           opcion:=readkey;
  154.              case opcion of
  155.                '1':   incluir;
  156.                '2':   calculo(c,i,numerouno,numerodos,numerotres,hexa1,hexa2,hexa3,hexa);
  157.                '3':   imprimir;
  158.                '4':   begin
  159.                           clrscr;
  160.                           gotoxy(28,8);
  161.                           textcolor(3);
  162.                           writeln('Seguro que desea salir?');
  163.                           textcolor(black);
  164.                           gotoxy(22,10);
  165.                           write('1 = SI');
  166.                           gotoxy(49,10);
  167.                           writeln('2 = NO');
  168.                           gotoxy(28,20);
  169.                           textcolor(red);
  170.                           writeln('Elige una de las opciones');
  171.                           resp:=readkey;
  172.             case resp of
  173.              '1': begin
  174.                           textbackground(64);
  175.                           clrscr;
  176.                           writeln;
  177.                           writeln;
  178.                           writeln;
  179.                           writeln;
  180.                           textcolor(red);
  181.                           write(' GRACIAS,');
  182.                           textcolor(white);
  183.                           writeln(' por usar mi programa.');
  184.                           writeln;
  185.                           writeln(' Programado por : ');
  186.                           writeln(' Torres, Oswaldo        CI: 19590635');
  187.                           writeln('Correo:        Oswaldo_-@live.com');
  188.                           gotoxy(20,20);
  189.                           textcolor(89);
  190.                           writeln('Presione una tecla para finalizar el programa');
  191.                           readkey;
  192.                        end;
  193.                 '2': opcion:='1'
  194.                 else
  195.                     begin
  196.                      clrscr;
  197.                      writeln;
  198.                      writeln;
  199.                      writeln;
  200.                      textcolor(red);
  201.                      writeln('    ERROR: ');
  202.                      textcolor(black);
  203.                      writeln('      Ingresa una de las dos opciones');
  204.                      opcion:='1';
  205.                      gotoxy(20,24);
  206.                      textcolor(89);
  207.                      writeln('Presione una tecla para volver al MENU');
  208.                      textcolor(black);
  209.                      readkey;
  210.                      end;
  211.                   end;
  212.              end   else begin
  213.                           clrscr;
  214.                           textcolor(red);
  215.                           writeln;
  216.                           writeln;
  217.                           writeln('  ERROR:');
  218.                           textcolor(black);
  219.                           writeln('     Por favor introduce una opcion valida');
  220.                           gotoxy(20,20);
  221.                           textcolor(89);
  222.                           writeln('Presione una tecla para volver al MENU');
  223.                           textcolor(black);
  224.                           readkey;
  225.                          end;
  226.               end;
  227.       end;
  228. end;
  229.  
  230. begin {Cuerpo Principal}
  231.           textbackground(blue);
  232.           textcolor(black);
  233.           clrscr;
  234.           writeln;
  235.           writeln;
  236.           writeln;
  237.           writeln;
  238.           writeln;
  239.           writeln;
  240.           write('  00000   00000    00000   0   0   00000   0000  0000000  00000        0000');
  241.           writeln;
  242.           write('  0    0  0    0   0   0    0 0    0      0         0     0   0       0   0');
  243.           writeln;
  244.           write('  00000   00000    0   0     0     0000   0         0     0   0       0   0');
  245.           writeln;
  246.           write('  0       0   0    0   0     0     0      0         0     0   0          0 ');
  247.           writeln;
  248.           write('  0       0     0  00000     0     00000   0000     0     00000       0000000');
  249.           writeln;
  250.           writeln;
  251.           writeln;
  252.           writeln;
  253.           writeln;
  254.           textcolor(white+blink);
  255.           writeln('                                          Presione una tecla para continuar....');
  256.           textcolor(black);
  257.           readkey;
  258.           inicializar;
  259.           menu;
  260.  
  261. end.
  262.  
« última modificación: Sábado 30 de Mayo de 2009, 00:19 por Shadownn »

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Help Suma de 3 numeros en Hexadecimal
« Respuesta #1 en: Martes 26 de Mayo de 2009, 11:39 »
0
Vuelve a editarlo, por favor, y pon lo de code bien (selecciona el código y luego dale a code), y formatea el código para que quede legible.

Shadownn

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: Help Suma de 3 numeros en Hexadecimal
« Respuesta #2 en: Sábado 30 de Mayo de 2009, 00:20 »
0
ya lo puse bien xD..  ahora si lo ven bien ? sigo sin poder ver como lo puedo arreglar :(

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Help Suma de 3 numeros en Hexadecimal
« Respuesta #3 en: Domingo 31 de Mayo de 2009, 14:36 »
0
Vaya follón :P

Aer, ¿qué necesitas hacer exactamente? Me parece que con este código te vas por las ramas un poco...