blutiger Anfänger kommt nicht klar =P
-
Hi zusammen.
Wie aus der Überschrift leicht zu erkennen, bin ich gerade erst angefangen mit C zu programmieren.
Zu meinem Problem:
Mein eigentliches Ziel ist es mit C die Resonanzfrequenz in einem Schwingkreis auszurechnen.
Klappt natürlich nicht :pMein erster Versuch sieht so aus:
#include<stdio.h> #include<math.h> void main() { int a,b,c; //Rechenhilfen int L,C; //"echte" Variablen float f; L=a/1000; // für L in mH C=b/1000000; // für C in mykroF f=c/1000; // für f in kHz printf("RESONANZFREQUENZ\nBitte geben Sie den Wert der Spule in mH ein:\n"); fflush(stdin); scanf("%d",&a); printf("Bitte geben Sie den Wert des Kondesators in yF ein:\n"); fflush(stdin); scanf("%d",&b); f=1/(2*M_PI*sqr(L*C)); printf("Die Resonanzfrequenz f ist gleich %5.1lf kHz",f); }
Mein Problem ist zunächst dass ich mir nicht sicher bin welchen Datentyp ich verwenden muss und wie ich Pi und die Wurzel richtig einbinde.
Ich habe mir schon einige Skripte und Themen in Foren durchgelesen, allerdings versteh ich meistens nur Bahnhof
Für die Wurzel habe ich mal etwas nur zum testen geschrieben:
#include<stdio.h> #include<math.h> void main() { double a; double b; fflush(stdin); scanf("%f",&a); b=sqrt(a); printf("%d\n\n",b); }
Habe schon alles mögliche Versucht, komme aber einfach nicht dahinter warum da immer 0 oder Quatsch rauskommt.
Vielleicht kann mir von euch jemand sagen was ich falsch mache?!
Schon mal vielen Dank im Voraus
schönen Gruß
-
printf("%d\n\n",b);
Du willst ein double (b) ausgeben, der Platzhalter %d steht aber für einen Integer.
-
Belli schrieb:
printf("%d\n\n",b);
Du willst ein double (b) ausgeben, der Platzhalter %d steht aber für einen Integer.Genauer für "decimal", damit kann man sich besser merken, wofür das 'd' steht. Ist aber das gleiche wie "%i" für integer.
-
Hast du schon mal daran gedacht, deine Eingaben auch zur Probe mal auszugeben.
%f beiscanf
ist für float. Fürdouble
brauchst du %lf.
das gilt nur für scanf.
Bei printf ist der Formatspecifier für float und für double %f.
(die meisten machen ja aus Unwissenheit %lf für double, aber %lf für float sieht man echt selten).Deine Zeilen 8-10 haben keinen Effekt, da die Variablen an der Stelle noch keinen gültigen Wert haben.
Das Programm wird der Reihe nach abgearbeitet.
DasL=a/1000;
ist eine Zuweisung, die einmal durchgeführt wird.
Das ist keine irgendwie geartete Definition für L.
Wenn du a danach änderst, ändert sich nichts an L.
-
Wow super das ging ja fix
printf("%d\n\n",b);
Du willst ein double (b) ausgeben, der Platzhalter %d steht aber für einen Integer.OK das habe ich soweit verstanden. setze ich an der Stelle aber ein %f (wenn ich das richtig verstanden habe eine Gleitkommazahl)
kommt in der Ausgabe, wenn ich zB "16", eintippe nur:
-1.#IND00
Was wäre das Richtige?
-
Ahhhh Dirk hats schon gelöst
Danke, das Wurzel Programm funzt schonmal
Ich versuche mal es ins eigentliche Programm umzusetzen.
Nochmal Danke Ihr seid echt fix
-
Uuuuund da bin ich schon wieder
Soweit so gut. Jetzt hab ich nur noch das Problem dass ich mein Pi nicht reinbekomme.
Ich versuche es zur Zeit mit M_PI, allerdings klappt das nicht so richtig.
Als Fehler bekomme ich dann :
error C2065:'M_PI': nichtdeklarierter Bezeichner
IntelliSense: Der Bezeichner""M_PI"" ist nicht definiert.Klar ich könnte mir das über #define selbst basteln, aber wenn ich schon <math.h> benutze kann ich doch auch ein fertiges Pi benutzen oder?
Ich habe schon gelesen das es da wohl Unterschiede gibt womit man programmiert.
Ich nutze Visual Studio 2010.nochmal der code
#include<stdio.h> #include<math.h> void main() { double a,b,c; //Rechenhilfen double L,C; //"echte" Variablen double f; printf("RESONANZFREQUENZ\nBitte geben Sie den Wert der Spule in mH ein:\n"); fflush(stdin); scanf("%lf",&a); printf("Bitte geben Sie den Wert des Kondesators in yF ein:\n"); fflush(stdin); scanf("%lf",&b); L=a/1000; // für L in mH C=b/1000000; // für C in mykroF c=1/(2*M_PI*sqrt(L*C)); f=c/1000; // für f in kHz printf("Die Resonanzfrequenz f ist gleich %5.1f kHz",f); }
-
Für VS bietet sich die MSDN als Hilfe an.
Wenn du bei google nach "MSDN M_PI" suchst findest du die Seite http://msdn.microsoft.com/en-us/library/4hwaceh6%28v=vs.100%29.aspx
und da stehtmsdn schrieb:
Math Constants are not defined in Standard C/C++. To use them, you must first define _USE_MATH_DEFINES and then include cmath or math.h.
Das sieht dann so aus:
#define _USE_MATH_DEFINES #include <math.h>
-
Aber wenn wir schon beim Standard sind:
Wegen void main(): http://www.c-plusplus.net/forum/viewtopic.php?t=39346
und
fflush(stdin): http://www.c-plusplus.net/forum/viewtopic.php?t=39349
-
Ah OK.
Ich dachte mit dem include <math.h> wäre es getan.Hab es jetzt reingeschrieben und siehe da: funktioniert perfekt
Zu den anderen beiden Sachen kann ich nicht viel sagen.
Das ist gerade erst meine 4. Aufgabe seit "Hallo Welt"
Denke mal dass sowas in nächster Zeit dazu kommen wird. Daher nice to knowNochmal Danke für die super Hilfe