Ver Mensaje Individual
  #1 (permalink)  
Antiguo 07/09/2013, 14:59
ch_cristopher
 
Fecha de Ingreso: septiembre-2013
Mensajes: 1
Antigüedad: 11 años, 2 meses
Puntos: 0
Programa en c++ dejo de funcionar

Bueno tengo este programa que he estado realizando, es una practica que me dejo el profe aun no esta completo pero tengo un pequeño problema.

Estoy usando una estructura para crear un números complejos y después una clase para crear una matriz llena de números complejos, el problema es en los últimos 2 constructores los cuales tiene 3 y 4 parámetros respectivamente, no me funcionan ya que al ejecutar el programa dice que el .exe dejo de funcionar y se cierra.

Esto me ocurre solo al colocar los constructores ya mencionados, coloque el código de dichos constructores de rojo, supongo yo que es esa parte la que no me deja que funcione bien mi programa.

si alguien tiene una solución a mi problema de antemano gracias

#include <conio.h>
#include <iostream>
using namespace std;

struct complejo
{
int r,i;

complejo()
{
r=0;
i=0;
};

complejo(int a)
{
r=a;
i=0;
};

complejo(int a,int b)
{
r=a;
i=b;
};

void leer(complejo &n)
{
cout<<endl;
cout<<" Ingrese la parte real del numero: ";
cin>>n.r;
cout<<endl;
cout<<" Ingrese la parte imaginaria del numero: ";
cin>>n.i;
};

void imprimir(complejo &n)
{
if(n.i>=0)
{
cout<<endl;
cout<<" El resultado de la operacion es: "<<n.r<<"+"<<n.i<<"i";
}

else
{
cout<<endl;
cout<<" El resultado de la operacion es: "<<n.r<<n.i<<"i";
}
};

void operacion(complejo *a, int n)
{
char opc;
complejo b,c;

cout<<endl;
cout<<" Seleccione la operacion a realizar:"<<endl;
cout<<" A) Suma."<<endl;
cout<<" B) Resta."<<endl;
cout<<" C) Multiplicacion."<<endl;

opc=getch();

switch(opc)
{

case 'a':
case 'A':

b=a[0];

for(int i=1; i<n; i++)
{
c = b+(a[i]);
b=c;
}
b.imprimir(b);
break;

case 'b':
case 'B':
b=a[0];

for(int i=1; i<n; i++)
{
c = b-(a[i]);
b=c;
}
b.imprimir(b);
break;

case 'c':
case 'C':
b=a[0];

for(int i=1; i<n; i++)
{
c = b*(a[i]);
b=c;
}
b.imprimir(b);
break;

default:
cout<<endl;
cout<<" Opcion No Disponible";
break;

}
};

complejo operator + (complejo a)
{
complejo res;

res.r = r + a.r;
res.i = i + a.i;

return res;
};

complejo operator - (complejo a)
{
complejo res;

res.r = r - a.r;
res.i = i - a.i;

return res;
};

complejo operator * (complejo a)
{
complejo res;

res.r = r * a.r;
res.i = i * a.i;

return res;
};

};


class MatrixC
{
private:
int f,c;
complejo **M;
public:

MatrixC()
{
f=0;
c=0;
};

MatrixC(int a1)
{
f=a1;
c=a1;
};

MatrixC(int a1,int a2)
{
f=a1;
c=a2;
};

MatrixC(int a1,int a2, int a3)
{
int i,j;
f=a1;
c=a2;

for(i=0; i<f; i++)
{
for(j=0; j<c; j++)
{
M[i][j].r = a3;
M[i][j].i = a3;
}
}

};

MatrixC(int a1 ,int a2 , int a3 ,int a4)
{
int i,j;
f=a1;
c=a2;

for(i=0; i<f; i++)
{
for(j=0; j<c; j++)
{
M[i][j].r = a3;
M[i][j].i = a4;
}
}

};

void leer(){};
void inicializar(){};
void imprimir(){};

MatrixC operator + (MatrixC){};
MatrixC operator - (MatrixC){};
MatrixC operator * (MatrixC){};
};



int main()
{

MatrixC A;
MatrixC B(3);
MatrixC C(3,4);
MatrixC D(2,4,0);
MatrixC E(5,3,1,2);

getch();
return 0;
}