C++ "nicht deklarierter Bezeichner"?
Hallo, Habe letztens mal ein Programm zur annähernden Berechnung von Pi geschrieben:
include include include include include include includeusing namespace std;
int main() {
long double U; // = Umfang
long double GK; // = Gegenkathete
long double a; // = Winkel Alpha in Grad
long double AK=1; // = Ankathete
long double H; // = Hypotenuse
long double n; // = Anzahl Ecken des Vielecks
long double b; // =zweiter Winkel
long double piAK; // =Verhältnis Umfang zu Ankathete
long double piH; // =Verhältnis Umfang zu Hypotenuse
long double pi; // =Näherungswert für pi
cout << "Wie häufig soll die Operation durchgeführt werden?" << endl;
cin >> n;
U=tan(180/n)*AK*2*n;
b=(n-2)*180*(1/n);
H=(b/2)*(1/cos(b));
piAK=U/AK;
piH=U/H;
pi=(piH+piAK)/2;
cout << piAK << endl;
cout << piH << endl;
cout << pi << endl;
cin.get();
return 0;
}
Wenn ich jetzt aber das Programm kompilieren will, bekomme ich folgende Fehlermeldungen:
1>c:\users\hauptkonto\documents\visual studio 2010\projects\pi\pi\pi_berechnung.cpp(23): error C2065: 'b': nichtdeklarierter Bezeichner 1>c:\users\hauptkonto\documents\visual studio 2010\projects\pi\pi\pi_berechnung.cpp(24): error C2065: 'b': nichtdeklarierter Bezeichner 1>c:\users\hauptkonto\documents\visual studio 2010\projects\pi\pi\pi_berechnung.cpp(24): error C2065: 'b': nichtdeklarierter Bezeichner 1>c:\users\hauptkonto\documents\visual studio 2010\projects\pi\pi\pi_berechnung.cpp(25): error C2065: 'piAK': nichtdeklarierter Bezeichner 1>c:\users\hauptkonto\documents\visual studio 2010\projects\pi\pi\pi_berechnung.cpp(26): error C2065: 'piH': nichtdeklarierter Bezeichner 1>c:\users\hauptkonto\documents\visual studio 2010\projects\pi\pi\pi_berechnung.cpp(27): error C2065: 'pi': nichtdeklarierter Bezeichner 1>c:\users\hauptkonto\documents\visual studio 2010\projects\pi\pi\pi_berechnung.cpp(27): error C2065: 'piH': nichtdeklarierter Bezeichner 1>c:\users\hauptkonto\documents\visual studio 2010\projects\pi\pi\pi_berechnung.cpp(27): error C2065: 'piAK': nichtdeklarierter Bezeichner 1>c:\users\hauptkonto\documents\visual studio 2010\projects\pi\pi\pi_berechnung.cpp(28): error C2065: 'piAK': nichtdeklarierter Bezeichner 1>c:\users\hauptkonto\documents\visual studio 2010\projects\pi\pi\pi_berechnung.cpp(29): error C2065: 'piH': nichtdeklarierter Bezeichner 1>c:\users\hauptkonto\documents\visual studio 2010\projects\pi\pi\pi_berechnung.cpp(30): error C2065: 'pi': nichtdeklarierter Bezeichner ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========
Normalerweise würde ich jetzt sagen, dass der Schlamassel an einer Variabel liegt, die verwendet wird, ohne initialisiert worden zu sein, allerdings ist in diesem Code keine solche Variabel. Weiß einer, wie ich das hier fixen kann?
4 Antworten
Die vier Variablen b, piAK, piH und pi sind "nicht deklariert". Das passt aber offenbar nicht zum Quelltext.
Prüfe mal, ob:
- Die Zeile "b=(n-2)180(1/n);" wirklich Zeile Nummer 23 ist,
- Alle Zeilen im MS-DOS Format (CR LF) getrennt sind.
Ahh danke das mit dem Format war es. Gott sei Dank - du hast mir einen Nachmittag Arbeit gerettet, in dem ich versucht habe, ein passendes Verfahren zu entwickeln. Ok, dann also closed
In der Mathematik sind die Begriffe Gegenkathete und Ankathete üblicherweise mit Dreiecksberechnungen verbunden. Es wäre mir neu, wenn diese jetzt mehr Ecken besäßen; m.a.W. die Variable n, die die Anzahl der Ecken angeben soll ist überflüssig. Oder du erklärst uns mal näher, was da berechnet werden soll …
Wie wäre es, wenn du die Variablen AK als anKathete, GK als gegenKathete, H als hypotenuse … bezeichnen würdest.
Nichts gegen die Abkürzungen aus Physik und Mathematik – RIESIGES ABER:
Allgemeine Bezeichner wie a, b, c, n … verlieren gerne ihre Sinn, wenn die Programmprojekte größer werden. Insbesondere werden sie dann auch gerne für zahlreiche andere Zwecke missbraucht …
Einfach mal folgenden Tipp checken und ggf. das dort empfohlene Buch kaufen: https://www.gutefrage.net/tipp/clean-code Auch wenn die Beispiele in der Programmiersprache Java geschrieben sind, gelten sie sinngemäß für jede Programmiersprache …
Ansonsten weigere ich mich, den Müll zwischen „Fehlermeldungen:“ und „Normalerweise“ zu lesen. Das ist eine Zumutung, wie auch mein Vorgänger geschrieben hat …
Entweder du machst dir die Mühe, Variablen so zu benennen oder du lässt es.
Das
long double U; // = Umfang
long double GK; // = Gegenkathete
long double a; // = Winkel Alpha in Grad
long double AK=1; // = Ankathete
long double H; // = Hypotenuse
long double n; // = Anzahl Ecken des Vielecks
long double b; // =zweiter Winkel
long double piAK; // =Verhältnis Umfang zu Ankathete
long double piH; // =Verhältnis Umfang zu Hypotenuse
long double pi; // =Näherungswert für pi
Ist nicht einmal mehr Assembler-Niveau, sondern eine Zumutung. Übrigens verwenden Compiler die Zahl pi schon als Konstante. Die ist in dessen Mathe-Bibliothek längst definiert!!
Alles wesentliche habe ich schon oben geschrieben …
So wird das niemals was mit einer Programmierer-Karriere …
Das ganze bitte nochmal und dann markieren und den Button für Codebeispiel einfügen drücken oder extern auf Pastebin einfügen. So fehlen Zeilen, das Ganze lässt sich bescheiden lesen und die Zeilennummern werden auch nicht stimmen.
Hallo.
Bitte poste dein Programm nochmal, und zwar diesmal mit jeweils vier Leerzeichen mehr vor jeder Zeile. Ansonsten kann man dein Programm auf gutefrage.net nicht lesen; zum Beispiel kann man momentan nicht sehen, welche "#include"-Dateien verwendet werden.
In dem Programm wird ein virtuelles n-Eck in Dreiecke unterteilt, daher Variable n für die Ecken. Und Verzeihung für die verdammte Hashtag-Erkennung von Gutefrage, hier nun der richtige Code:
include <iostream include <stdio.h> include include <math.h> include <time.h> include includeusing namespace std;
int main() {
}