/* Programma per calcolare somma e prodotto di numeri complessi */ #include #include typedef struct{ double real; double imag; } Complex; Complex * CreaComplex(double a, double b); Complex * SommaComplex(Complex a, Complex b); Complex * MoltiplicaComplex(Complex a, Complex b); int main(){ Complex a, b, *sum, *prod; /* a e b sono Complex, sum e prod sono puntatori a Complex. Prima di usare sum e prod devo allocare memoria per essi, mentre a e b posso usarli immediatamente */ printf("\n Prego inserire parte reale del primo numero complesso:\n"); scanf("%lf", &(a.real)); printf("\n Prego inserire parte immaginaria del primo numero complesso:\n"); scanf("%lf", &(a.imag)); printf("\n Prego inserire parte reale del secondo numero complesso:\n"); scanf("%lf", &(b.real)); printf("\n Prego inserire parte immaginaria del secondo numero complesso:\n"); scanf("%lf", &(b.imag)); sum = SommaComplex(a, b); prod = MoltiplicaComplex(a, b); printf("\nLa somma dei due numeri vale (%.4lf + %.4lf i)\n",sum->real,sum->imag); printf("\nIl prodotto dei due numeri vale (%.4lf + %.4lf i)\n",prod->real,prod->imag); free(sum); free(prod); return 0; } Complex * CreaComplex(double a, double b){ Complex *c; c = (Complex *) calloc(1,sizeof(Complex)); if(c==NULL){ fprintf(stderr,"CreaComplex: Memoria esaurita!"); exit(1); } c->real = a; c->imag = b; return(c); } Complex * SommaComplex(Complex a, Complex b){ Complex * s; s=CreaComplex(a.real+b.real, a.imag+b.imag); return(s); } Complex * MoltiplicaComplex(Complex a, Complex b){ Complex * p; p =CreaComplex((a.real*b.real-a.imag*b.imag),(a.imag*b.real+a.real*b.imag)); return(p); }