Que es lo que esta mal? Ayuda!!!

Iniciado por cinfi, 6 Febrero 2016, 23:17 PM

0 Miembros y 1 Visitante están viendo este tema.

cinfi

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;
}

MAFUS

Pues que tratas una tabla como un array unidimensional y que tratas un array unidimensional como un valor escalar.

cinfi

El problema es al tener una matriz de 6x4 sumar renglones y columnas y obtener el valor en un vector.

etcheverrypablol

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

cinfi

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

_--ziarox--__

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");
   }
   }