Pascal/Turbo Pascal - Iniciandome en Pascal, DUDA

 
Vista:

Iniciandome en Pascal, DUDA

Publicado por Javitxu (6 intervenciones) el 08/03/2006 23:28:57
Hola. Hoy he empezado a hacer mis primeros programitas en pascal y me he topado con un ejercicio tontisimo pero q no se como hacerlo. Dice lo siguiente:

Escribir un programa que lea un entero positivo n y genere la
siguiente matriz cuadrada (n*n)

Ejemplo:
Introduzca el tamaño de la matriz: 10
La matriz cuadrada generada es:
1 2 3 4 5 6 7 8 9 10
2 3 4 5 6 7 8 9 10 1
3 4 5 6 7 8 9 10 1 2
4 5 6 7 8 9 10 1 2 3
5 6 7 8 9 10 1 2 3 4
6 7 8 9 10 1 2 3 4 5
7 8 9 10 1 2 3 4 5 6
8 9 10 1 2 3 4 5 6 7
9 10 1 2 3 4 5 6 7 8
10 1 2 3 4 5 6 7 8 9

El caso es q hago esto y solo me sale una linea y no se como hacer para q salga el resto de líneas

program matrizcuadrada;

var n,i: integer;

begin
writeln('Introduzca el tamanio de la matriz: ');
readln(n);
writeln('La matriz cuadrada generada es: ');
for i:=1 to n do
write(i);
readln;
end.

Imagino q habrá q hacer un bucle q abarque ese FOR, pero no se como hacerlo. Si alguien puede ayudarme se lo agradecería
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Iniciandome en Pascal, DUDA

Publicado por micropais (209 intervenciones) el 09/03/2006 08:50:24
-Usa dos bucles uno dentro de otro , uno podria encargarse de las filas y el otro de las columnas.
-Si siges teniendo problemas postea ,que para eso estamos.

SALUDOS
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Iniciandome en Pascal, DUDA

Publicado por Javitxu (6 intervenciones) el 09/03/2006 10:09:21
Muchas gracias por tu respuesta micropais. He hecho lo que tú me dices, meter un bucle dentro de otro y ha quedado lo siguiente

***********************************
program matrizcuadrada;

var n,i,j: integer;

begin
writeln('Introduzca el tamanio de la matriz: ');
readln(n);
writeln('La matriz cuadrada generada es: ');
i:=1;
j:=1;
for i:=1 to n do begin
for j:=1 to n do begin
write(j,' ');
end;
writeln('');
end;
readln;
end.
************************************

Y el resultado que obtengo es n lineas de 1 a n. Por ejemplo, pongo n=5 y sale esto:

1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5

Lo que tiene q salir, según el enunciado, es

1 2 3 4 5
2 3 4 5 1
3 4 5 1 2
4 5 1 2 3
5 1 2 3 4

Intento cambiar uno de los FOR por un WHILE j<=n y voy incrementando j en 1, pero pasan 2 cosas, o sale igual que antes, o sale un bucle infinito. Estoy atascado en esto, por favor, si alguien puede decirme qué hacer....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Iniciandome en Pascal, DUDA

Publicado por micropais (209 intervenciones) el 10/03/2006 10:43:26
hola Javitxu.
para que te animes un poco , te diré que este código no ha salido a la primera
siempre sale practicando y aislando el codigo y sobre todo facilitando el
visionado para ver realmente que te hace falta para aproximarte .
si en la pantalla ves solo numeros te liaras , he separado la vision mediante
mediante los simbolos . - + para ver de donde proceden
leete los comentarios y lo entenderás mejor .
SALUDOS __MICROPAIS__
_____________________________________________
var n,i,j: integer;

begin
writeln('Introduzca el tamanio de la matriz: ');
readln(n);{}
writeln('La matriz cuadrada generada es: ');
{i:=1; { no es necesario inicializar en bucles for }
{j:=1; { no es necesario inicializar en bucles for }
{
el . pertenece al primer bucle
el - muestra segundo bucle normal
el + muestra segundo bucle clausula else
}

for i:=1 to n do
begin
write(i,'.');
for j:=i+1 to n+i-1 do
begin
if j<=n then write('-',j) else write('+',j-n);
end;
writeln;
end;
readln;
end.
_____________________________________________
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Iniciandome en Pascal, DUDA

Publicado por alma (1 intervención) el 05/04/2006 01:57:25
¿cuantas filas y columnas tiene en total pascal?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar