C++ "nicht deklarierter Bezeichner"?

4 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

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.
DLCom 
Fragesteller
 06.01.2015, 19:37

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

0

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 …

DLCom 
Fragesteller
 06.01.2015, 18:36

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 include

using 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;

}

0
DLCom 
Fragesteller
 06.01.2015, 18:40
@DLCom

Das gibt es doch nicht... Hab alles wie oben gemacht, das hier passiert trotzdem. Also, ich habe iostream, stdio.h, cmath, math.h, time.h, iomanip und fstream benutzt. Ich hoffe, das geht so.

0
wolfgang1956  07.01.2015, 08:04
@DLCom

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 …

0

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.

Woher ich das weiß:Berufserfahrung – Softwareentwickler/Projektleiter seit 2012

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.