Matrices

Iniciado por yesid1718, 23 Octubre 2016, 04:32 AM

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

yesid1718

Tengo un codigo en c y en este creo una matriz la imprimo y la sumo luego los valores de las fila pares e impares se guardan en vectores diferentes hasta esta parte todo esta bien pero al sumar los vectores no me aparecen bien los valores de la suma correctamente me aparecen unos números largos todo extraños y no se cual es el error porfavor me podrian ayudar con este tema.?

engel lex

sin ver tu codigo puede ser que sumaste mal, fallaste colocando algo en las matrices ya que no tiene claridad de como se usan, estás imprimiendo lo que no debes, nunca las inicializaste.... las posibilidades son muchas...

si colocas tu codigo usa las etiquetas GeSHi
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

yesid1718

#2
#include<stdio.h>
#include<conio.h>

//Declaracion de funciones

void llenar_matriz( int A[10][10] , int , int);
void imprimir_matriz(int A[10][10] , int , int);
void llenar_vectorpar(int B[25], int A[10][10], int, int );
void llenar_vectorimpar(int G[25], int A[10][10], int, int );
void suma_vectorA(int A[25] , int, int );
void sumar_matriz(int A[10][10] , int , int);


// programa principal

void main(){

//zona de declaración de variables locales

int f;
int g;
int A[10][10];
int B[25];
int G[25];

printf("ingrese el nuemro de filas \n");
scanf("%d",&g);
printf("ingrese el nuemro de columnas \n");
scanf("%d",&f);

llenar_matriz (A,g, f);
   imprimir_matriz (A, g, f);
   sumar_matriz(A,g,f);
   llenar_vectorpar(B,A, g, f);
   llenar_vectorimpar(G,A, g, f);
   suma_vectorA( B, g,f );
   suma_vectorA( G, g,f );
   
  getch();
 
}

void llenar_matriz (int A[10][10] , int g , int f)

{

int fila,columna;


for (fila=0; fila<=g; fila++)
{
for (columna=0; columna<=f; columna++)
{

printf ("digite el valor en la posicion %d %d", fila, columna);
scanf("%d", &A[fila][columna]);
}
printf("\n");
}

}

void sumar_matriz(int A[10][10] , int g , int f ){

int fila,columna;
int Ac=0 ;



for (fila=0; fila<=g; fila++)
{
for (columna=0; columna<=f; columna++)
{

Ac= A[fila][columna] + Ac ;
}

}
printf("\nla suma de la matriz es:\n ");
printf ("\n%d\n", Ac);

}


void imprimir_matriz( int A[10][10], int g , int f ) {

int fila,columna;

 for (fila=0; fila<=g; fila++)
{
for (columna=0; columna<=f; columna++)
{

printf ("\t %d", A[fila][columna]);

}
printf("\n ");
}




}



void  llenar_vectorpar(int B[25], int A[10][10], int g , int  f) {

 int fila,columna;

printf("\nvector para las filas par\n");
 for (fila=0; fila<=g; fila++) {

for (columna=0; columna<=f; columna++){
if(fila % 2 == 0) {


B[fila]=A[fila][columna];
printf("%d\n",B[fila]);

                    }

                                      }

}

}

void llenar_vectorimpar(int G[25], int A[10][10], int g, int f ){

int fila,columna;

printf("\nvector para las filas impar\n\n");
 for (fila=0; fila<=g; fila++) {

for (columna=0; columna<=f; columna++){
if(fila % 2 != 0) {


G[fila]=A[fila][columna];
printf("%d\n",G[fila]);

                    }

                                      }

}

}

void suma_vectorA(int B[25] , int g, int f) {

int Ac=0;
int i;


for ( i=0 ; i<=g ; i++){

Ac= B[i] + Ac ;

}

printf( "\nla suma de los valores del vector para filas pares es:\n ");
printf("\n%d\n", Ac);

}




Este es el código no se que tengo mal te agradeceria que me ayudaras.



Mod: Los códigos deben ir en etiquetas GeSHi

engel lex

#3
ahora corre tu código y muestra una captura de pantalla a ver el resultado

aunque de antemano en los for veo unos menor o igual, que deberian ser solo menor que

y en general, main debe ser tipo int y retornar 0...
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

yesid1718

#4

engel lex

fijate el error que te digo (en tiempo de ejecución)

filas: 1, columnas: 1
vector:
1 2
3 4


en ese vector cuento 2 filas y 2 columnas

el error está en

void  llenar_vectorpar(int B[25], int A[10][10], int g , int  f) {

 int fila,columna;

printf("\nvector para las filas par\n");
 for (fila=0; fila<=g; fila++) {

for (columna=0; columna<=f; columna++){
if(fila % 2 == 0) {


B[fila]=A[fila][columna];
printf("%d\n",B[fila]);

                    }

                                      }

}
}


cuando llenas B o G, saltas la posición... es decir en ese segmento, nunca llenas B[1] por ejemplo, asi que cuando llegas a llenar vector y accedes a B[1], contiene basura como es de esperar
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.