[ Foro de Pascal ]

Matrices

08-Sep-2014 23:33
Carolina Sanchez
8 Respuestas

Hola me podrian ayudar con esto?..
- Leer una matriz de 3 por 3 y calcular la suma de cada una de sus filas y columnas,
colocando los resultados en dos vectores, uno para la suma de las filas y otro para la suma
de las columnas.
como hago para sumar las filas y las columnas por separado? Gracias


09-Sep-2014 00:33
Luis Torres (+18)

Aquí tengo el código para que lo analices:


program Matriz3x3;
uses CRT;

var
 mat: array[1..3,1..3] of integer;
 sumaFila: array[1..3] of integer;
 sumaCol: array[1..3] of integer;
 i, j: integer;


BEGIN
 {Inicializamos los dos vectores a cero}
 for i:=1 to 3 do
  Begin
    sumaFila[i]:= 0;
    sumaCol[i]:= 0;
  End;

 {Leemos los datos para la matriz de 3x3}
 for i:=1 to 3 do
  Begin
    for j:=1 to 3 do
     Begin
       write('Introduzca el elemento ',i,',',j,': ');
       readln(mat[i,j]);
     End;
  End;

 {Calculamos la suma de cada fila y cada columna con un solo ciclo for}
 for i:=1 to 3 do
  for j:=1 to 3 do
   Begin
     sumaFila[i]:= sumaFila[i] + mat[i,j];
     sumaCol[i]:= sumaCol[i] + mat[j,i];
   End;

 {Mostramos el vector que contiene la suma de las filas}
 Writeln('VECTOR SUMA DE FILAS: ');
 for i:=1 to 3 do
  Begin
    Writeln(sumaFila[i]);
  End;

 {Mostramos el vector que contiene la suma de las columnas}
 Writeln('VECTOR SUMA DE COLUMNAS: ');
 for j:=1 to 3 do
  Begin
    Write(sumaCol[j]:4);
  End;
 writeln;
 readln;
END.

09-Sep-2014 12:26
Invitado (jorgemadrid)

luis no le hagas las tareas a nadie , mas bien explica porque haces un daño tio, no es lo mismo verlo hecho que intentarlo, asi que pienso que mal de tu parte hacer los programas


09-Sep-2014 12:43
Nacho Cabanes (+84)

Lo siento, pero aquí tengo que defender a Luis. Es un fuente suficientemente comentado como para que la solución sea entendible y quien la reciba pueda llegar más allá del "copiar y pegar".

Yo prefiero dar pistas primero, y ayudar con la solución cuando está claro que ya se ha intentado, pero su solución es clara y ayudará a Carolina... si Carolina realmente quiere aprender.


09-Sep-2014 14:11
Luis Torres (+18)

Al leer la pregunta de Carolina, entendí que ella solo quería una orientación, ella no quería que le hicieran todo el ejercicio, por eso decidí hacer el código completo y comentado, para que ella lo analizara y luego preguntara.

Saludos.


09-Sep-2014 18:10
oscar gomez

muy desafortunada tu intervencion jorgemadrid pues a ti que te da si el compañero resulve los programas para ayudar, sino te gusta pues pon tu solucion o puntos de vista pero no ataques al compañero luis cuando lo que intenta es ayudar, si que es verdad que lo mejor y por experiencia lo digo es hacer uno mismo sus propios programas y no que alguien los haga por que entonces todo sera facil y pues es mal habito esperar que la gente resulva los programas, lo interesante es que sean soluciones propias.


12-Sep-2014 22:36
Carolina Sanchez

Hola muchas gracias por ayudarme.. a continuacion pondre el codigo que yo intente pero que no funciona y no me doy cuenta por que razon.. tiene procedimientos porque  los programas que debo hacer tienen que tener procedimientos o funciones..


program ejercicio2;
uses
 crt;
type
 matriz= array [1..3,1..3] of integer;
 fila= array[1..3] of integer;
 columna= array[1..3] of integer;
var
 mat: matriz;
 sumafila: fila;
 sumacolumna:columna;
 i,j: integer;


procedure carga (var mat: matriz);
 begin
 writeln ('Ingrese valores');
  for i:=1 to 3 do
   for j:= 1 to 3 do
    readln (mat[i,j]);
 end;  
 
 procedure suma (var sumafila:fila; sumacolumna:columna; mat:matriz);
 begin
  for i:=1 to 3 do
   for j:=1 to 3 do
   begin
     sumaFila[i]:= sumaFila[i] + mat[i,j];
     sumaColumna[i]:= sumaColumna[i] + mat[j,i];
   end;
 end;
 
 begin
 carga (mat);
 suma (sumafila,sumacolumna,mat);
  Writeln('VECTOR SUMA DE FILAS: ');
 for i:=1 to 3 do
  Begin
    Writeln(sumaFila[i]);
  End;
  Writeln('VECTOR SUMA DE COLUMNAS: ');
 for j:=1 to 3 do
  Begin
    Writeln(sumacolumna[j]);
  End; 
 
 end.




13-Sep-2014 03:38
Luis Torres (+18)

En el procedimiento "suma", te faltó declarar el parámetro sumacolumna como un parámetro por referencia, o sea no le colocaste la palabra reservada "var" por delante; al ser un parámetro por valor no afectará a la variable que está en el cuerpo principal del programa.

Otra cosa que deberías agregar es un "readln" al final del programa para que éste se detenga y puedas observar los resultados.

Saludos.


15-Sep-2014 17:18
Carolina Sanchez

Muchas gracias por su ayuda! :)






(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.)