Komplex rechnern. R und C paralel zu R und L ??? ausgabe in excel format
-
Ich weiss nicht mehr weiter. bei mir macht der das tan irgendwie falsch und ich bekomme keine übergabe an excel hin. bzw. ich bin zu doof das als txt datei zu speichern. die txt kann ich ja dann in excel importieren und damit weiter arbeiten. unten mal der quellcode hoffe ihr könnt mir helfen.
gruß Patrick
#include <stdio.h> #include <math.h> #include <conio.h> float real(float,float,float,float,float); float imag(float,float,float,float,float); void main() { float r1, r2, l, c, fstart, fende, fschritt; float w, flauf, rez, imz, tanphi, phi; printf("Bitte geben Sie R1 ein: "); scanf("%f",&r1); printf("Bitte geben Sie R2 ein: "); scanf("%f",&r2); printf("Bitte geben Sie L ein: "); scanf("%f",&l); printf("Bitte geben Sie C ein: "); scanf("%f",&c); printf("Bitte geben Sie f-Start ein: "); scanf("%f",&fstart); printf("Bitte geben Sie f-Ende ein: "); scanf("%f",&fende); printf("Bitte geben Sie f-Schritt ein: "); scanf("%f",&fschritt); printf(" f | w | Re(z) | Im(z) | z | tan(PHI) | PHI \n"); printf("------+-------+-------+-------+---------------+----------+------\n"); for (flauf=fstart; flauf <= fende; flauf = flauf + fschritt) { w = 2.*M_PI*flauf; rez = real(r1,r2,l,c,w); imz = imag(r1,r2,l,c,w); tanphi = imz / rez; phi = atan(tanphi) * 180; printf("%5.1f | %5.1f | %5.1f | %5.1f | %5.1f+j*%5.1f | %5.3f | %5.1f \n",flauf,w,rez,imz,rez,imz,tanphi,phi); } getch(); } float real(float r1,float r2,float l,float c,float w) { return(((r1+r2+l/c)*(r1+r2)+(w*l*r2-r1/(w*c))*(w*l-1/(w*c))) / (pow(r1+r2,2)+pow(w*l-1/(w*c),2))); } float imag(float r1,float r2,float l,float c,float w) { return(((w*l*r2-r1/(w*c))*(r1+r2)-(r1*r2+l/c)*(w*l-1/w*c)) / (pow(r1+r2,2)+pow(w*l-1/(w*c),2))); }
-
Kuckuck !
Eventuell musst du noch die Oder-Operatoren näher zusammenrücken, bzw. durch ';' ersetzen oder so.
#include <stdio.h> #include <math.h> #include <conio.h> float real(float,float,float,float,float); float imag(float,float,float,float,float); void main() { float r1, r2, l, c, fstart, fende, fschritt; float w, flauf, rez, imz, tanphi, phi; FILE* fp = NULL; printf("Bitte geben Sie R1 ein: "); scanf("%f",&r1); printf("Bitte geben Sie R2 ein: "); scanf("%f",&r2); printf("Bitte geben Sie L ein: "); scanf("%f",&l); printf("Bitte geben Sie C ein: "); scanf("%f",&c); printf("Bitte geben Sie f-Start ein: "); scanf("%f",&fstart); printf("Bitte geben Sie f-Ende ein: "); scanf("%f",&fende); printf("Bitte geben Sie f-Schritt ein: "); scanf("%f",&fschritt); printf(" f | w | Re(z) | Im(z) | z | tan(PHI) | PHI \n"); printf("------+-------+-------+-------+---------------+----------+------\n"); fp = fopen("test.txt", "w" ); if ( !fp ) return 1; for (flauf=fstart; flauf <= fende; flauf = flauf + fschritt) { w = 2.*3.14*flauf; rez = real(r1,r2,l,c,w); imz = imag(r1,r2,l,c,w); tanphi = imz / rez; phi = atan(tanphi) * 180; printf("%5.1f | %5.1f | %5.1f | %5.1f | %5.1f+j*%5.1f | %5.3f | %5.1f \n",flauf,w,rez,imz,rez,imz,tanphi,phi); fprintf( fp, "%5.1f | %5.1f | %5.1f | %5.1f | %5.1f+j*%5.1f | %5.3f | %5.1f \n",flauf,w,rez,imz,rez,imz,tanphi,phi); } fclose(fp); getch(); } float real(float r1,float r2,float l,float c,float w) { return(((r1+r2+l/c)*(r1+r2)+(w*l*r2-r1/(w*c))*(w*l-1/(w*c))) / (pow(r1+r2,2)+pow(w*l-1/(w*c),2))); } float imag(float r1,float r2,float l,float c,float w) { return(((w*l*r2-r1/(w*c))*(r1+r2)-(r1*r2+l/c)*(w*l-1/w*c)) / (pow(r1+r2,2)+pow(w*l-1/(w*c),2))); }
Gruß,
p.
-
atan arbeitet im Bogenmaß, also ist deine Umrechnung ins Gradmaß falsch. Außerdem macht der atan nicht die notwendige Fallunterscheidung nach negativer/positiver Realteil (beachte: der Tangens ist nur pi-periodisch und atan liefert Werte aus [-pi/2, pi/2]) und gibt dir in manchen Fällen einen um pi falschen Winkel.
Wie man in C Dateien öffnet und benutzt, liest Du am besten nochmal in deinem Tutorial oder Buch nach, so schwierig ist das nicht. Wenn Du ein kleines, übersichtliches Beispiel für dein Dateiproblem gebaut hast, kannst Du auch die Herren aus dem C-Forum befragen.
FILE *out =fopen("blubb.txt", "w"); ... fprintf(out, /* hier alles wie bei printf */); ... fclose(out);
-
Zum importieren in Excel eignen sich auch .csv dateien sehr gut...