Universidad de Costa Rica
Escuela de Ciencias de la
Computación e Informática
Profesor Adolfo Di Mare
CI-1201
I Semestre 1999
[<=] [home] [<>] [\/] [=>]
CI-1201 Programación II

Tarea #2 [solución]

Traducción de un programa Pascal a C++

PROGRAM Armstrong;
{ RESULTADO
  Determina cuantos números son de Armstrong, desde 1 hasta N.
  - Un número es de Armstrong si la suma de los dígitos que lo
    componen elevados al cubo es igual al número.
  - Por ejemplo 153 es un número de Armstrong porque
           3    3    3
    153 = 1  + 5  + 3  = 1^3 + 5^3 + 3^3  }

CONST  n = 3000;

VAR
numero, suma,
digito, temp : INTEGER;

begin
  WriteLn('Numeros encontrados (1 .. 3000)');
  WriteLn(' que son de Armstrong:');
  WriteLn;
  for numero:=1 to n do begin
    suma:=0;
    temp:=numero;
     WHILE temp <> 0 DO BEGIN  { suma de digitos }
   digito:= temp MOD 10;      { al cubo }
   suma:= suma+(digito*digito*digito);
   temp:= temp DIV 10
    END;
IF suma = numero then
      WriteLn(numero,' Suma de su digitos al cubo ', suma);
  end;{ FOR }
  ReadLn;
END. { Armstrong }
Figura 1: Armstrong.pas

      Traduzca al lenguaje C++ el programa Armstrong.pas que aparece en la Figura 1. Para realizar esta tarea, obtenga primero el programa GSAR.exe de Internet. Este programa sirve para sustituir una hilera por otra en archivos. A diferencia de otros programas que realizan esta misma tarea, GSAR.exe puede trabajar con archivos que no contienen exclusivamente texto.

:: PAS-C.bat ==> Convierte código Pascal a C [SUPER-BURDO]
:: USA el programa GSAR.exe para remplazar hileras:
:: ftp://ftp.simtel.net/pub/simtelnet/msdos/txtutl/gsar110.zip

gsar -oi     "-s{"        "-r/*"               %1
gsar -oi     "-s}"        "-r*/"               %1
gsar -oi      -sBEGIN      -r{                 %1
gsar -oi      -sEND        -r}                 %1
gsar -oi      -s};         -r}                 %1
gsar -oi      -sTYPE       -rclass             %1
gsar -oi      -sOBJECT     -rclass             %1
gsar -oi      -sWHILE      -rwhile             %1
gsar -oi     "-sIF "      "-rif ("             %1
gsar -oi     "-s THEN"    "-r) "               %1
gsar -oi      -sELSE       -relse              %1
gsar -oi      -sNIL        -rNULL              %1
gsar -oi      -sINTEGER    -rint               %1
gsar -oi      -sPOINTER    -rvoid              %1
gsar -oi     "-s = "      "-r == "             %1
gsar -oi      -s::=         -r=                %1
gsar -oi      -sREPEAT    "-rdo {"             %1
gsar -oi     "-sUNTIL "   "-r} while NOT ("    %1
gsar -oi      -sOR        "-r||"               %1
gsar -oi     "-sF||"      "-rfor ("            %1
gsar -oi     "-s DO"      "-r ;.;.)"           %1
gsar -oi      -s^.        "-r->"               %1
gsar -oi     "-s<>"        -r!=                %1
gsar -oi      -sEXIT       -rreturn            %1
gsar -oi      -sAND        -r&&                %1
gsar -oi      -sDIV       "-r/"                %1

:: PAS-C.bat ==> Fin de archivo
Figura 2: PAS-C.bat

      Luego de imprimir la documentación de su programa, y entregarla en clase, envíe su trabajo a los asistentes del curso por correo electrónico. Para esto, haga un archivo empacado .zip cuyo nombre sea su número de carnet. Incluya en ese archivo lo siguiente:

  1. Un documento en formato HTML que describa el trabajo que realizó. Incluya el nombre del compilador que usó.
  2. El código fuente de su programa.
  3. El código ejecutable de su programa.

      Debe darle formato adecuado a su programa C++. Recuerde que lo usual en C++ es indentar cada construcción sintáctica cuatro espacios cada construcción sintáctica. Si lo desea, para escribir su programa puede usar como referencia estas convenciones Pascal:

Di Mare, Adolfo
"Convenciones de Programación para Pascal"; Reporte técnico ECCI-01-88; ECCI-UCR; 1988.
      http://www.di-mare.com/adolfo/p/convpas.htm

      Después de la fecha de entrega del programa, puede usted instalar en su cuenta personal su solución (no instale antes su solución en Internet, pues en ese caso sería usted culpable de facilitar la copia de su trabajo, y en consecuencia se haría acreedor a la sanción respectiva).

      Las cuentas de computador en la ECCI se asignan de acuerdo al número de carnet. Por ejemplo, si su carnet es el número 95-28-09, para entregar su tarea usted debe crear el archivo 952809.zip para enviarlo por correo electrónico a los asistentes del curso.

      Luego haga en su cuenta personal un subdirectorio llamado public_html, que es bajo el que se instalan todas sus páginas Internet. Por ejemplo, si su solución está en el archivo HTML llamado "OLP/t3sol952809.htm", entonces usted debe instalar esa página en el archivo
      public_html/OLP/t3sol952809.htm
de su cuenta. Luego, para acceder esa página Internet, debe entrar a este sitio:
      http://anubis.ecci.ucr.ac.cr/~e952809/OLP/t3sol952809.htm

      Como todas las cuentas de estudiante son la letra "e" seguida del número de carnet, para el estudiante de carnet "952809" la cuenta es "e952809". Para indicarle al servidor Internet a cuál cuenta entrar se usa el caracter "~" (Alt-126), seguido del nombre de la cuenta: "~e952809".

[mailto:] Hilda Pineda y Mario Tenorio

Tiempo de entrega: 1 Semana
Modalidad: Individual

Soluciones

[mailto:] Adolfo Di Mare <adolfo@di-mare.com>.
Copyright © 1999
Derechos de autor reservados © 1999
[home] <> [/\]