Universidad de Costa Rica
|
|
|
|
|
Traduzca y compile este programa. Documente su experiencia.
Explique qué hizo, cómo lo hizo y por qué lo
hizo. Para trabajar use el
ambiente de desarrollo DrJava, disponible en
http://www.DrJava.org/
junto con la herramienta de visualización de la ejecución
Jeliot.
// Armstrong.cpp (C) 2010 adolfo@di-mare.com
/** \file Armstrong.cpp
\brief Traducción de \c Armstrong.java.
Contiene todos los componentes principales de un algoritmo:
- Secuenciación
- Asignación y expresiones
- Decisiones if()
- Ciclos for(;;) y while()
- Uso de vectores o matrices
- Subrutinas y parámetros
\author Adolfo Di Mare <adolfo@di-mare.com>
\date 2010
*/
#include <iostream> // cout
void esArmstrong( int N, const int VAL[] , bool res[] );
/** Determina si una lista de números son de Armstrong. */
int main( int argc , char* argv[] ) {
int VEC[] = { 456 , 9 , 555 , 370 , 371 , 12 , 407 , 0 , 1 };
const int DIM = ( sizeof(VEC) / sizeof(VEC[0]) );
bool *B = new bool[DIM]; // vector paralelo a VEC[]
esArmstrong( DIM , VEC , B );
cout << "\nNúmeros de Armstrong:\n";
for ( int i=0; i<DIM; ++i ) {
if ( B[i] ) {
cout << VEC[i] << "\n";
}
}
return 0;
}
/** Retorna <code> res[i]==true </code> si \c VAL[i] es un número de Armstrong.
- 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:
<PRE>
3 3 3
153 == 1 + 5 + 3 == 1^3 + 5^3 + 3^3 == 1 + 125 + 27
</PRE>
- Falla si <code> DIM(VAL) > DIM(res) </code> <br>
<code>#define DIM(VEC) ( sizeof(VEC) / sizeof(VEC[0]) )</code>
*/
void esArmstrong( int N, const int VAL[] , bool res[] ) {
int numero, suma, digito, temp;
for ( int i=0; i<N; ++i ) {
numero = VAL[i]; // recuerda el número
temp = VAL[i]; // le saca todos los dígitos
suma = 0;
while ( temp != 0 ) { // suma de dígitos
digito = temp % 10; // al cubo
suma = suma + (digito * digito * digito);
temp = temp / 10;
}
if ( suma == numero ) {
res[i] = true;
}
else {
res[i] = false;
}
}
}
// Armstrong.cpp
|
Visualización de la Ejecución con Jeliot 1) Jale el Jeliot 2) Jale el programa de Armstrong 3) Ejecución Jeliot 1) Jale el Jeliot - http://cs.joensuu.fi/jeliot/ - Seleccione "Java Web Start" - Abra el programa [Java(TM) Web Start Launcher] - Se descarga jeliot.njlp - Web Start inicia la aplicación y jala el resto del programa - Advertencia de seguridad - Firma digital - [Ejecutar] 2) Jale el programa de Armstrong - En el hojeador (Mozilla, Explorer, Opera, etc.) - http://www.di-mare.com/adolfo/cursos/2009-2/Lab01.java.txt - Seleccione todo ( Select All ) - Copiar ( Copy ) - En Jeliot - Seleccione todo ( Select All ) - Pegar ( Paste ) - Guardar ( Save ) - Nombre de archivo [Lab01.java] [Guardar] 3) Ejecución Jeliot - Compilar - Animar - Velocidad de Animación [----------+---------] - Pausa - Rebobinar - etc. |
| Tiempo de entrega: | 7 días | |
| Modalidad: | Individual |
http://www.di-mare.com/adolfo/p/convpas.htm
http://java.sun.com/docs/codeconv/CodeConventions.pdf
|
Adolfo Di Mare <adolfo@di-mare.com>.
|
|
|