"Bezeichner wurde nicht gefunden" in C++. Warum?

5 Antworten

Mehrere gaaaanz kurze Anmerkungen, nach Wichtigkeit sortiert:

  1. Lerne erst mal richtig die Grundlagen von C++.
  2. Auch ein sog. "pre-compiled Header" benötigt eine dazu gehörige sog. Übersetzungseinheit.
  3. Zwischen "namespace" und "::std" fehlt ein Leerzeichen.
  4. Die char-Variable ist oberhalb des Gültigkeitsbereichs definiert, in dem sie genutzt wird, also lieber in die Schleife Verschieben.
  5. Den Namen dieser Variablen lieber mit Kleinbuchstaben beginnen ...
  6. ... und sowohl diesen, als auch alle anderen Bezeichner, auf Englisch übersetzen, also "menu", "encrypt", "decrypt", usw.
  7. Variablen (vor allem POD-Typen!!!) IMMER initialisieren, auch wenn es unnötig erscheint, da dadurch langfristig Sicherheitslücken vermieden werden, und der Compiler unnötige Initialisierungen sowieso wegoptimiert.
  8. Endlosschleifen wie "for (;;) ..." oder auch "while (true) ..." sind Igittipfui und du solltest dir so etwas abgewöhnen. Es gibt zwar gaaaanz wenige Algorithmen, bei denen es wirklich sinnvoll ist, auf eine Abbruchbedingung zu verzichten, aber dein Code gehört definitiv nicht dazu.
  9. Der "leere" default-Zweig im switch() ist unnötig, aber ich persönlich finde das sehr guten Stil, da er anzeigt, dass sich der Entwickler über weitere mögliche Fälle bewusst ist.
  10. Das break; nach dem default-Zweig ist ebenfalls unnötig, aber m. M. n. ebenfalls guter Stil, da es Konsequenz und Disziplin ausdrückt. Außerdem vermeidet man dadurch C&P-Fehler, die hin und wieder gerne mal vorkommen.
  11. Und jetzt zu deinem eigentlichen Problem: Die Bezeichner "verschlüsseln" und "entschlüsseln" werden erst NACH deiner main() Funktion definiert, und sind demnach dem Compiler auch erst danach bekannt. Inmitten von main() meldet der Compiler dann natürlich einen Fehler, weil er mit den Bezeichnern nichts anfangen kann. Gewöhne dir am besten Prototypen in Headerdateien an!
  12. Verzichte als Anfänger auf vorkompilierte Headerdateien! Die haben zwar Vorteile, aber auch enorme Nachteile, von denen du noch gar nichts ahnst!

So, ich denke, das wars erst mal. :)

Woher ich das weiß:
Berufserfahrung

Mittlerweile habe ich ein anderes Problem und zwar muss ich einen Wert zurückgeben aber das will ich eigentlich nicht. Verschluesseln soll eigentlich so ein art zweites Main sein, und entschluesseln so ein art drittes Main. Wisst ihr wie ich mein?

(Ich bin ein totaler Anfänger in c++)

3

Dann beherzige Punkt 1 aus meiner Antwort! :)

Wirklich, du wirst nicht weiter kommen und bei jedem Pippifax hier nachfragen müssen, wenn du nicht wenigstens die absoluten Grundlagen im Blut hast!

Viel Erfolg! :)

0

Wahrscheinlich, weil Du die beiden Funktionen benutzt, bevor sie definiert sind.

Arduino delay für eine Sekunde?

Hallo, ich wollte eine Uhr für einen display programmieren und diese mit einer Fernbedinung ansteuern. Nur habe ich ein Problem, meine Uhr ist etwas langsamer als eine normale Uhr (Atomuhr). Obwohl ich einen Delay von 1000 habe.

ich bin im besitz des Arduino elegoo Mega 2560

Falls es interessant ist, kopiere ich hier den kompletten code:

#include <LiquidCrystal.h>

#include "IRremote.h"

LiquidCrystal lcd(7, 8, 9, 10, 11, 12);

int offTimer;

int onTimer;

int s=15; //sekunden

int m=49; //minuten

int h=19; //stunden

int tag=3; //tage

int monat=6; //monate

int jahr=2018; //Jahr

int receiver = 6;

int lcdsize[] = {16, 2};

IRrecv irrecv(receiver);    

decode_results results;    

void translateIR() // takes action based on IR code received

// Beschreibt Remote-IR-Codes

{

 switch(results.value)

 {

 case 0xFFA25D: onTimer++; offTimer=0; break;

 case 0xFFE21D: offTimer++; onTimer=0; break;

 case 0xFF629D: Serial.println("VOL+"); break;

 case 0xFF22DD: Serial.println("FAST BACK");   break;

 case 0xFF02FD: Serial.println("PAUSE");   break;

 case 0xFFC23D: Serial.println("FAST FORWARD");  break;

 case 0xFFE01F: Serial.println("DOWN");   break;

 case 0xFFA857: Serial.println("VOL-");   break;

 case 0xFF906F: Serial.println("UP");   break;

 case 0xFF9867: Serial.println("EQ");   break;

 case 0xFFB04F: Serial.println("ST/REPT");   break;

 case 0xFF6897: Serial.println("0");   break;

 case 0xFF30CF: Serial.println("1");   break;

 case 0xFF18E7: Serial.println("2");   break;

 case 0xFF7A85: Serial.println("3");   break;

 case 0xFF10EF: Serial.println("4");   break;

 case 0xFF38C7: Serial.println("5");   break;

 case 0xFF5AA5: Serial.println("6");   break;

 case 0xFF42BD: Serial.println("7");   break;

 case 0xFF4AB5: Serial.println("8");   break;

 case 0xFF52AD: Serial.println("9");   break;

 case 0xFFFFFFFF: Serial.println(" REPEAT");break; 

 default:

   Serial.println(" other button  ");

 }

}

void setup() {

irrecv.enableIRIn(); // Startet den Empfänger

lcd.begin(lcdsize[0], lcdsize[1]);

}

void loop() {

 if (irrecv.decode(&results)) // Haben wir ein IR-Signal erhalten?

 {

   translateIR();

   irrecv.resume(); // Erhalte den nächsten Wert

 } 

 delay(990);

 lcd.clear();

 lcd.setCursor(0, 0);

 lcd.print("----");

 if(h<10){

 lcd.print("0");

 }

 lcd.print(h);

 lcd.print(":");

 if(m<10){

 lcd.print("0");

 }

 lcd.print(m);

 lcd.print(":");

 if(s<10){

 lcd.print("0");

 }

 lcd.print(s);

 lcd.print("----");

 lcd.setCursor(0, 1);

 if(tag<10){

 lcd.print("0");

 }

 lcd.print(tag);

 lcd.print(".");

 if(monat<10){

 lcd.print("0");

 }

 lcd.print(monat);

 lcd.print(".");

 lcd.print(jahr);

 s++;

 if(s>=60){

 m++;

 s=0;

 }

 if(m>=60){

 h++;

 m=0;

 }

 if(h>=24){

 tag++;

 h=0;

 }

 if(tag==31&monat==4){

 monat++;

 tag=1;

 }

 if(tag==31&monat==6){

 monat++;

 tag=1;

 }

 if(tag==31&monat==9){

 monat++;

 tag=1;

 }

ab hier kommen noch ca. 40 weitere Zeilen.

...zur Frage

Welche IDE sollte ich für C++ benutzen?

Hey ich wollte mal wieder anfangen die Programmiersprache C++ zu lernen, weil ich schon mal angefangen hatte aber später keine Zeit mehr dafür hatte.

Also welche IDE sollte ich am besten benutzen dafür?

...zur Frage

Für was braucht man den Befehl in c++?

Für was ist dieser Befehl in c++ , und für was braucht man ihn ??? : #include Was bedeutet der befehl Windows.h ???

...zur Frage

c++ lineare Suche?

ich muss eine klasse ergänzen um die Methode seqsuch(..) fur die sequentielle suche nach einer ganzen Zahl im Feld Die Methode erhält die gesuchte Zahl als parameter wir die Zahl gefunden wird der Index der gefundenen Zahl zurückgeliefert oder -1 wenn die Zahl nicht gefunden wird. kann jemand mir helfen es geht nicht ?

#include <iostream>

#include <cstdlib>

#include <conio.h>

#include <ctime>

using namespace std;

class CZahlen{

private:

  int maxZuf;

  int groesse;

  int anzahl;

  int feld[5000];

public:

  void start()

  {

    anzahl = 0;

    groesse = 5000;

    maxZuf = 100000;

    for(int i= groesse; i>0; i--) feld[i]=0;

  }

  void zufallszahlen(int gz){

    if(gz>groesse)

    {

      cout << "Fehler das Array ist nicht groß genug!" << endl;

      getch();

    }

    else{

      for(int i=0; i<gz;i++){

        feld[i]=rand()%(maxZuf+1);

        anzahl = i;

      }

    }

  }

  void ausgeben()

  {

    if(anzahl==0)

      cout << "Das Array ist leer!" << endl;

    for(int i=0; i<anzahl; i++)

      cout << feld[i] << ", ";

  }

  int seqSuch(int x)

  {

    int pos=0;

    bool gefunden=false;

    do

    {

      if(feld[pos]==x)

      {

        gefunden=true;

      }

    }while (gefunden=false && pos<anzahl);

    if(gefunden=true)

    {

      return pos;

    }

    else

    {

      return -1;

    }

  }

};

int main()

{

  srand(time(NULL));

  CZahlen z1,test;

  z1.start();

  z1.zufallszahlen(10);

  z1.ausgeben();

  cout<<endl;

  z1.zufallszahlen(20);

  z1.ausgeben();

  cout<<endl;

  

  cout<<z1.seqSuch(8);

  cout<< "-- Ende --" <<endl;

}

...zur Frage

Welche Programmiersprache sollte ich erlernen?

Sehr geehrte Gemeinde,

Also es ist so. Ich interessiere mich für das Erlernen wie man Programme bzw. Anwendungen, Scripts und sonstiges schreibt. Ich plane eine konkrete Ausbildung in einer dieser Sprachen zu machen.

Ich bin sehr interessiert daran und weiß auch das es schwer wird, das ist keine Frage.

Ich hab allerdings jetzt keine richtige Ahnung in welcher Sprache ich mein Wissen aufbauen bzw. einen Lehrgang starten soll.

Ich habe mich schon ein wenig informiert und kenne vom Namen folgende gebräuchlichen Programmiersprachen, mit einer von denen ich mich dann auch weiterbilden möchte:

C, C++, C#, Java, Visual Basic oder Visual Basic for Applications (VBA).

Des Weiteren bin an Python interessiert, weil eines meiner persönlichen Lieblingsprogramme in Python geschrieben ist. Mit Python möchte ich aber keinen Lehrgang belegen.

Es wird sich ausschließlich um eine der oberen Programmiersprachen handeln.

Kann jemand von euch, der sich vielleicht schon mit der ein oder anderen oder sogar mehreren von denen auskennt, mir Tipps geben, welche Programmiersprache, die besten Möglichkeiten (auch in der Zukunft) gibt bzw. was für Einschränkungen bei diesen bestehen?

Ich möchte einmal hochleistungsfähige Programme schreiben.

Auf der Einfachheit liegt überhaupt kein Betrachtungspunkt.

Es kann also schwer sein, wenn es dafür entsprechend flexible Möglichkeiten bietet.

Bei Java habe ich schon gehört, dass man hiermit plattformübergreifende Applikationen schreiben kann.

Vielen Dank für Eure/deine Hilfe.

...zur Frage

C++ Array umgekehrt ausgeben

Wie gebe ich diesen Array umgekehrt aus ? Also Es soll mit 15 anfangen und mit 1 aufhören.

include

include

int main(){

int Zahlen[15]; int i;

cout << "Tabelle mit 15 Zufallszahlen" << endl; cout << "~~~~~~~~~~~~~~~~~~~~~~~~~~~~" << endl;

for(i=0 ; i<15 ; i++){ Zahlen[i] = rand(); cout << "Zahl Nummer " << i+1 << ": " << Zahlen[i] << endl; }

getchar(); return 0; }

...zur Frage

Was möchtest Du wissen?