Hola!

Registrándote como bakuno podrás publicar, compartir y comunicarte en privado con otros bakuos :D

Regístrame ya!

Ayuda con C, arreglos apuntadores!!!

daniel_tv

Bovino Milenario
Desde
31 Jul 2007
Mensajes
1.381
Ayuda con C, apuntadores, matrices dinamicas!!!

Hermanos bakunos, vengo humildemente a solicitar su ayuda :(:

estaba yo programando alegremente un programita sencillo de suma de matrices con arreglos y me salio, pero el problema es que yo no lo necesitaba con matrics dinamicas, y cuando lo empece a pasar, me salio un problema, para pedir las matrices, el programa se ejecuta con normalidad, pero al querer guardar los datos empieza el problema, ya estuve un buen rato pensandole y estudiandole, pero nada mas no veo el meollo del asunto...

Si alguien pudiera explicarme cual es el error de mi codigo se lo agradeceria infinitamente!!! xD apenas estoy aprendiendo apuntadores y si ademas de la explicacion pudieran pasar una buena guia de apuntadores se los agradeceria aun mas :) jajaja bueno, les dejo el codigo y el archivo por si encuentran un ratito libre para ayudar a este bovino desamparado.... de antemano gracias!!!!

ARCHIVO ".C" : http://www.mediafire.com/?dmnm2qjmkie

#include <stdlib.h>
#include <stdio.h>

int ingres_A();
int ingres_B();
int suma();
int valor();

int **A, **B, **C;
int m, n, s, t, i, j, x, y;

main(){
char OPT;
do{
menu();
OPT=getche();
switch(OPT){
case 'a':
case 'A':
ingres_A();
break;
case 'b':
case 'B':
ingres_B();
break;
case 'c':
case 'C':
suma();
break;
}
}while(OPT!='s' && OPT!='S');
}

menu(){
system("CLS");
printf("\n\tSUMA DE MATRICES DE ORDEN M x N");
printf("\n\n\tSelecciona: ");
printf("\n\n\ta) Ingresar matriz A");
printf("\n\n\tb) Ingresar matriz B");
printf("\n\n\tc) Calcular A + B");
printf("\n\n\ts) Salir");
valor();
}


ingres_A(){

system ("CLS");
printf ("\nIngresar matriz A.");
printf ("\n\n\tIngrese el orden m x n de la matriz.");
printf ("\n\n\tm: ");
scanf ("%d", &m);
printf ("\n\tn: ");
scanf ("%d", &n);

A = (int **) calloc (m, sizeof (int*));

for (i=0;i<m;i++){
A = (int*) malloc (n * sizeof (int));
}


for (i=0;i<m;i++){
for (j=0;j<n;j++){
printf("\nIngrese termino %d,%d: ", i+1, j+1);
scanf ("%d", *(A+i)+j);
}
}
}


ingres_B(){

system ("CLS");
printf ("Ingresar matriz B.");
printf ("\n\n\tIngrese el orden m x n de la matriz.");
printf ("\n\n\tm: ");
scanf ("%d", &s);
printf ("\n\tn: ");
scanf ("%d", &t);

B = (int **) calloc (s, sizeof (int*));

for (i=0;i<s;i++){
B= (int*) malloc (t * sizeof (int));
}


for (i=0;i<s;i++){
for (j=0;j<t;j++){
printf("\nIngrese termino %d,%d: ", i+1, j+1);
scanf ("%d", *(B+i)+j);
}
}
}



suma(){

int uno, dos;

system ("CLS");
if (m!=s||n!=t){
printf("\tLas matrices no son conformables para la adicion.");
printf("\n\n\tIntente con nuevas matrices.");
getchar();
}
else{
uno=m;
dos=n;
printf("\nCalculo de A + B");
printf("\n\nA + B:\n\n");
for(x=0;x<uno;x++){
for (y=0;y<dos;y++){
*(*(C+x)+y)=*(*(A+x)+y)+*(*(B+x)+y);
printf("%d ", *(*(C+x)+y));
}
printf("\n");
}
}
system("PAUSE");
}

valor(){
printf("\n\n\nVALORES DE A Y B:");
printf("\n\nMatriz A:\n\n");
for (i=0;i<m;i++){
for (j=0;j<n;j++){
printf("%d ", *(*(A+i)+j));
}
printf("\n");
}
printf("\n\nMatriz B:\n\n");
for (i=0;i<s;i++){
for (j=0;j<t;j++){
printf("%d ", *(*(B+i)+j));
}
printf("\n");
}
}
 
Volver
Arriba