Autor |
Mensaje |
andrea_r
Nivel 5

Edad: 30
Registrado: 25 Feb 2011
Mensajes: 138
Carrera: Industrial

|
|
Gente, tengo un ejercicio de Pascal que nadie en mi grupo ha podido resolver y tenemos que presentarlo el fin de semana . Nos piden desarrollar un programa en Pascal que solicite al usuario (que no comete errores de tipeo) el ingreso desde el teclado de un número entero entre 1 y 3999 y exhiba en pantalla su representación romana, utilizando solamente tipos de datos: integer, real y char, y calculo que sin usar matrices ni cadenas. ¿Alguna idea de cómo encarar este ejercicio? Yo estuve pensando utilizar un "bucle", aunque con Case of quedaría muy largo. Entiendo que para utilizar For y While hay que usar cadenas/matrices, entonces planeaba usar el Repeat... ¿qué piensan?
|
|
|
|
|
|
 |
    |
 |
koreano
Nivel 9

Registrado: 15 Jul 2010
Mensajes: 1796
Carrera: No especificada

|
|
Tenes que usar mod/div para desacoplar el número en las únidades básicas del sistema romano, repitiendo las cantidades para que se correspondan con el decimal. Por ejemplo, 3 es 3 veces 1, que en romano es I. Entonces te queda III. Obviamente tenes que probar de las unidades mas grandes a la mas chica... 1000 -> 500 -> 100...
|
|
|
|
|
|
|
    |
 |
Kartlan
Nivel 5

Edad: 42
Registrado: 09 Ago 2005
Mensajes: 176
Ubicación: Once
Carrera: Informática

|
|
andrea_r escribió:
|
... Entiendo que para utilizar For y While hay que usar cadenas/matrices, entonces planeaba usar el Repeat ...
|
No es así. El for, while y repeat son 3 formas de encarar la estructura del bucle.
La diferencia entre el while y el repeat es que la condición de corte se chequea antes o después de la primera iteración.
Esto imprime dos veces el mensaje.
Código:
|
integer i := 1;
repeat
writeln("hola...");
i := i+1;
until i = 2;
|
Esto no imprime una vez el mensaje.
Código:
|
integer i := 1;
while (i < 2);
begin
writeln("hola...");
i := i+1;
end;
|
El for por otra parte, es una simplificación de una estructura en while muy común que es la de recorrer una secuencia de números ordenada (para arriba o para abajo).
Código:
|
for i:= 1 to 2 do
begin
writeln("hola...");
end;
|
Es casi-casi lo mismo que:
Código:
|
integer i:=1;
while (i <= 2) do
begin
writeln("hola...");
i := i+1;
end;
|
Despues con lo que te dejo el koreano deberia alcanzar para plantearlo... igual cualquier cosa volve a preguntar.
|
|
|
|
|
|
 |
       |
 |
|
|
Ver tema siguiente
Ver tema anterior
Podés publicar nuevos temas en este foro No podés responder a temas en este foro No podés editar tus mensajes en este foro No podés borrar tus mensajes en este foro No podés votar en encuestas en este foro No Podéspostear archivos en este foro No Podés bajar archivos de este foro
|
Todas las horas son ART, ARST (GMT - 3, GMT - 2 Horas)
Protected by CBACK CrackerTracker365 Attacks blocked.
|
|
[ Tiempo: 0.2327s ][ Pedidos: 20 (0.1779s) ] |