[ Foro de Pascal ]

Novato.Ayuda con Bucle FOR Encadenado

18-Jul-2010 00:31
rm659 Novato
6 Respuestas

 Hola, soy nuevo y me está trayendo de cabeza solucionar el ejercicio propuesto del Tema 6.2: Bucle FOR encadenados.
 El problema es que no consigo que me aparezca la palabra "Hola" en fila de a 3 y en columna de a 4 SIMULTÁNEAMENTE.
 El ejercicio dice lo siguiente:

Ejercicio propuesto: Crea un programa que escriba 3 líneas, cada una de las cuales contendrá 4 veces la palabra "Hola".

 Aquí lo que tengo hecho hasta ahora, ¿que tengo mal?:

program T6.2_Ej_2_Bucles_FOR_Encadenados;
       uses crt;

var
 saludo: string[4];
 fila, columna: integer;

begin
 clrscr;
 saludo := 'Hola';

  for fila := 1 to 4 do
    for columna := 1 to 3 do
      writeln (' ' ,saludo);
      readln();
end.


18-Jul-2010 01:39
rm659 Novato

Perdón. Quería decir 'En Filas de 4 y columnas de 3'.


18-Jul-2010 02:19
Nacho Cabanes (+32)

Te falta corregir 4 detalles:

- Si son 3 filas, el primer "for" acabaría en 3.

- Si son 4 columnas por fila, el segundo "for" llegaría hasta cuatro.

- Si tras cada saludo no quieres que avance, deberás usar "write" en vez de "writeLn".

- Si al final de cada fila sí debe avanzar, hay dos órdenes que se repiten (el "for" que escribe las columnas y el "writeLn" que avanza), así que tendrás que encerrarlas en un bloque "begin..end"


18-Jul-2010 03:41
rm659 Novato

No consigo aclararme dónde situar exáctamente el begin..end. Ando un poco perdido. ¿Podrías ponerme ese fragmento de código para salir de dudas? Tengo curiosidad por ver cómo es, porque llevo horas y nada. Gracias de antemano.


18-Jul-2010 18:43
rm659 Novato

Bueno, lo máximo que he conseguido ha sido éste resultado:

Hola Hola Hola Hola Hola
Hola Hola Hola Hola Hola
Hola Hola Hola Hola Hola

Haga lo que haga me termina saliendo siempre una columna o una fila de más; en este caso me sobra una columna y ya no se me ocurre nada más. Aquí os pego el código que he hecho, a ver si alguien pudiera decirme qué estoy haciendo mal:


program T6_2_Ej_2_Bucles_FOR_Encadenados;
       uses crt;

var
 saludo: string[4];
 fila, columna: byte;

begin
 clrscr;
 saludo := 'Hola';

    for fila := 1 to 3 do
      begin
      write (' ' ,saludo);
        for columna := 1 to 4 do
          write (' ' ,saludo);
       writeln;
       end;
  readln();
end.



19-Jul-2010 13:43
Antonio P.G.

Hola.

Fíjate que cuando empiezas a hacer una fila, escribes la palabra "Hola" y luego 4 "Hola"s más con el bucle secundario. Borra ese primer saludo que está antes del bucle a ver qué pasa.

¡Ciao!


19-Jul-2010 21:09
rm659 Novato

¡Genial! Muchas gracias.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)