Ver Mensaje Individual
  #1 (permalink)  
Antiguo 19/03/2009, 10:07
Nurecillo
 
Fecha de Ingreso: marzo-2009
Mensajes: 5
Antigüedad: 15 años, 2 meses
Puntos: 0
cambio de tipo de datos en c

Hola a todos
A ver si alguien puede echarle un vistacito rapido a mi programa y decirme donde puede estar el posible fallo.
El obejtivo principal del programa es que a introducir por linea de comandos (MS-Dos) una orden, tras dos matrices, las sume (por ej: programa.exe suma 111 111 111 222 222 222)

es decir que si la primera matriz es:
111
111
111

y la segunda:
222
222
222

y el resultado debe ser la suma de las dos matrices:
333
333
333

creo que mi problema es pasar el tipo de datos de char (que son las de ms-dos) a otro de tipo float.
si alguien tiene alguna idea de donde esta el problema seria de muchisima ayuda.
Aqui va el programa:

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

void SumarMatrices(float **m1,float **m2,float **m3,int n)
{
int i, j;
for (i=0; i<n; i++)
{
for (j=0; j<n; j++)
{
if((m1[i][j]<=9)&&(m2[i][j]<=9))
{
m3[i][j]= m1[i][j] + m2[i][j];
}
}
}
}

void MostrarMatriz(float **m,int n)
{
int i, j;
for (i=0; i<n; i++)
{
for (j=0; j<n; j++)
{
printf("%f", m[i][j]);
}
}
}

int main(int argc, char *argv[])
{
int n, i, j;
float **m1, **m2, **m3;
void **r;
if(strcmp(argv[1], "suma")==0)
{
n=((argc-2)/2);
m1 =(float **)malloc(n*sizeof(float *));
if(m1==NULL)
{
return -1;
}
m2 =(float **)malloc(n*sizeof(float *));
if(m2==NULL)
{
return -1;
}
m3 =(float **)malloc(n*sizeof(float *));
if (m3==NULL)
{
return -1;
}
for (i=0; i<n; i++)
{
for (j=0; j<n; j++)
{
m1[i][j] = (float)argv[i+2][j];
m2[i][j] = (float)argv[i+2+n][j];
}
}
SumarMatrices(m1, m2, m3, n);
MostrarMatriz(m3,n);
}


system("PAUSE");
return 0;
}


gracias de antemano.