#include #include #include using namespace std; struct complesso { float r; float i; }; complesso coniugato( complesso ); complesso somma( complesso, complesso ); double modulo( complesso ); void stampa( complesso ); complesso prodotto( complesso, complesso ); int main() { ifstream in; in.open("complessi.in"); string s; int k = 0; getline(in, s); while (!in.eof() ) { k++; getline(in, s); } in.clear(); in.seekg(0); complesso *C = new complesso[k]; for ( int i = 0; i < k; i++ ) in >> C[i].r >> C[i].i; in.close(); ofstream out; out.open("complessi.out"); cout << endl << "Coniugato dei complessi con mod sup 3" << endl; out << "Coniugato dei complessi con mod sup 3" << endl; complesso sm = {0,0}; for ( int i = 0; i < k; i++ ) { if ( modulo( C[i] ) > 3 ) { stampa( coniugato( C[i] ) ); cout << endl; out << C[i].r << "\t" << -C[i].i << endl; } if ( C[i].r < 0 ) sm = somma( sm, C[i] ); } cout << endl << "Somma complessi con parte reale negativa" << endl; stampa( sm ); cout << endl; out << endl << "Somma complessi con parte reale negativa" << endl; out << sm.r << "\t" << sm.i << endl; complesso prod = prodotto( prodotto( C[0], C[1]), C[2] ); cout << endl << "Prodotto primi tre complessi" << endl; stampa( prod ); cout << endl; out << endl << "Prodotto primi tre complessi" << endl; out << prod.r << "\t" << prod.i << endl; out.close(); return 0; } // Funzioni sui complessi complesso coniugato( complesso a ) { complesso s = {a.r, -a.i}; return s; } complesso somma( complesso a, complesso b ) { complesso s = {a.r + b.r, a.i + b.i}; return s; } complesso prodotto( complesso a, complesso b ) { complesso s = {a.r*b.r-a.i*b.i, a.r*b.i+a.i*b.r}; return s; } double modulo( complesso a ) { return sqrt(a.r*a.r + a.i*a.i); } void stampa( complesso a ) { cout << a.r << " "; if ( a.i < 0 ) cout << "- i" << -a.i; else cout << "+ i" << a.i; }