Cual es el error? no compila :(
#include <stdio.h>
int main()
{
int a[6][4], vecrenglon[6]={0}, veccolumna[4]={0};
int i,j;
for(i=0;i<6;i++){
for(j=0;j<4;j++){
printf("Ingresa cada valor de la matriz %d,%d: ",i+1,j+1);
scanf("%d", &a[j]);
}
}
printf("\nMatriz final:\n\n");
//Ciclo de impresion de la matriz dada
for(i=0;i<6;i++){
for(j=0;j<4;j++){
printf("%d\t",a[j]);
}
printf("\n");
}
//calcular la suma de cada renglon y guardar en el arreglo renglon
for(i=0;i<6;i++){
for(j=0;j<4;j++)
vecrenglon=vecrenglon+a[j];
}
//Calcular la suma de cada columna y guardar en el arreglo veccolunma
for(j=0;j<4;j++){
for(i=0;i<6;i++)
veccolumna[j]=veccolumna[j]+a[j];
}
printf("\n\nVector renglones = (");
//Ciclo para impresion de vecrenglon[6]
for(i=0;i<6;i++){
printf("%d", vecrenglon);
if(i!=5)
printf(", ");
}
printf(")\n");
printf("Vector columnas = (");
//Ciclo para la impresion de veccolumna[4]
for(i=0;i<4;i++){
printf("%d", veccolumna);
if(i!=3)
printf(", ");
}
printf(")\n\n");
system("pause");
return 0;
}
Pues que tratas una tabla como un array unidimensional y que tratas un array unidimensional como un valor escalar.
El problema es al tener una matriz de 6x4 sumar renglones y columnas y obtener el valor en un vector.
Hola cinfi.
Observando tu código, deduzco que lo que quieres hacer es cargar una matriz de 4x6 con el primer ciclo for y con el segundo mostrarla. Pues, compilando únicamente esa parte del programa, te encontrarás que esas líneas no hacen eso.
Observa el siquiente código:
#include <stdio.h>
int main(){
int a[4][6], vecrenglon[6]={0}, veccolumna[4]={0};
int i,j;
for(i=0;i<4;i++){
for(j=0;j<6;j++){
printf("Ingresa cada valor de la matriz %d,%d: ",i+1,j+1);
scanf("%d", &a[i][j]);
}
}
printf("\nMatriz final:\n\n");
//Ciclo de impresion de la matriz dada
for(i=0;i<4;i++){
for(j=0;j<6;j++){
printf("%d\t",a[i][j]);
}
printf("\n");
}
system("pause");
return 0;
}
Por un lado, verás que en los primeros dos ciclos for anidados, el primero se utiliza para moverse en las columnas (de arriba para abajo). Al ejecutarse una sola vez este for, abrás cargado 1 renglón. El segundo for hace referencia a las columnas.
Por otro lado, observa que al momento de leer, yo he utilizado las dos variables: i y j.En tu caso, vos sólo utilizaste la j.
Como ejemplo te muestro la siguiente ejecución de esa parte del código:
Ingresa cada valor de la matriz 1,1: 1
Ingresa cada valor de la matriz 1,2: 1
Ingresa cada valor de la matriz 1,3: 1
Ingresa cada valor de la matriz 1,4: 1
Ingresa cada valor de la matriz 1,5: 1
Ingresa cada valor de la matriz 1,6: 1
Ingresa cada valor de la matriz 2,1: 2
Ingresa cada valor de la matriz 2,2: 2
Ingresa cada valor de la matriz 2,3: 2
Ingresa cada valor de la matriz 2,4: 2
Ingresa cada valor de la matriz 2,5: 2
Ingresa cada valor de la matriz 2,6: 2
Ingresa cada valor de la matriz 3,1: 3
Ingresa cada valor de la matriz 3,2: 3
Ingresa cada valor de la matriz 3,3: 3
Ingresa cada valor de la matriz 3,4: 3
Ingresa cada valor de la matriz 3,5: 3
Ingresa cada valor de la matriz 3,6: 3
Ingresa cada valor de la matriz 4,1: 4
Ingresa cada valor de la matriz 4,2: 4
Ingresa cada valor de la matriz 4,3: 4
Ingresa cada valor de la matriz 4,4: 4
Ingresa cada valor de la matriz 4,5: 4
Ingresa cada valor de la matriz 4,6: 4
Matriz final:
1 1 1 1 1 1
2 2 2 2 2 2
3 3 3 3 3 3
4 4 4 4 4 4
Presione una tecla para continuar . . .
Tienes que entender bien esta parte antes de continuar.
Saludos
El error que me marcaba era en el system("pause"); y en el retorn 0;
Entiendo lo que me dices y muchas gracias. checare ambas estructuras ya que la tuya es mas pequeña y podría ahorrar línea de código.
Me gustaría ver si tuvieras alguno que resuelva transpuesta de matiz, te lo agradeceria.
Saludos
este es el codigo para la transpuesta
#include <stdio.h>
void llenado(int n, int m, int matriz[n][m], int matriz2[m][n]);
void imprimir(int n, int m, int matriz[n][m]);
void transpuesta(int n, int m, int matriz2[m][n]);
int main()
{
int n,m;
printf("Dame el numero de filas: ");
scanf("%d",&n);
printf("Dame el numero de columnas: ");
scanf("%d",&m);
int matriz[n][m];
int matriz2[m][n];
llenado(n,m,matriz,matriz2);
printf("\nMATRIZ\n");
imprimir(n, m, matriz);
printf("\nMATRIZ TRANSPUESTA\n");
transpuesta(n, m, matriz2);
return 0;
}
void llenado(int n, int m, int matriz[n][m], int matriz2[m][n])
{
int i,j;
for(i=0;i<n;i++)
for(j=0;j<m;j++)
{
printf("Dame el valor de %d %d:",i+1,j+1);
scanf("%d",&matriz[i][j]);
matriz2[j][i]=matriz[i][j];
}
}
void imprimir(int n, int m, int matriz[n][m])
{
int i, j;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
printf("%d ", matriz[i][j]);
}
printf("\n");
}
}
void transpuesta(int n, int m, int matriz2[m][n])
{
int i,j;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
printf("%d ", matriz2[i][j]);
}
printf("\n");
}
}