#include #include typedef struct { double re; double im; } complex; void add(complex* c1, const complex* c2) { c1->re += c2->re; c1->im += c2->im; } void mul(complex* c1, const complex* c2) { c1->re = c1->re*c2->re - c1->im*c2->im; c1->im = c1->re*c2->im + c2->re*c1->im; } void con(complex* c1) { c1->im = -c1->im; } //argc = number of arguments (including exetuable name) int main(int argc, char** argv) { if (argc<3) { printf("Zu wenige Argumente"); exit(1); } FILE* fp1 = fopen(argv[1],"r"); FILE* fp2 = fopen(argv[2],"r"); if (!fp1) { printf("Datei \"%s\" existiert nicht.\n", argv[1]); exit(1); } if (!fp2) { printf("Datei \"%s\" existiert nicht.\n", argv[2]); exit(1); } complex scalar_prod = {0}; complex x,y; while(fscanf(fp1, "%lf + %lfi", &x.re, &x.im) == 2 && fscanf(fp2, "%lf + %lfi", &y.re, &y.im) == 2) { con(&y); mul(&x, &y); add(&scalar_prod, &x); } printf("%f + %fi\n", scalar_prod.re, scalar_prod.im); fclose(fp1); fclose(fp2); }