Benutzernamen und Pin Prüfung mit Variablen aus der Datenbank-Wie geht das?



  • Hi, bin c++ Anfänger und habe eine Aufgabe ein Programm so zu schreiben, das es sowohl den Benutzernamen erkennt als auch den Pin! und das ganze soll 2x passieren, nach der dritten fehlerhaften Eingabe soll das Programm geschlossen werden. Aber es läuft nicht habe mehrere Sachen versucht es läuft aber nicht. Zudem habe ich Probleme die Nutzer zu unterscheiden. hat jemand eine Idee ohne es in Klasse zu packen.

    [//Die Datenbank

    #include <iostream.h>
    #include <fstream.h>
    int main()
    {
    int Punkte[69],i,Aufgabenanzahl[69];
    char Name[69][100];
    char Pin[69][12];
    //int Lehrer[69];
    char Anwender[69][20];
    ofstream Abspeichern;
    for(i=1;i<=2;i++)
    {
    Punkte[i]=0;
    Aufgabenanzahl[i]=0;
    cout<<"Gib den "<<i<<". Namen ein: ";
    cin >>Name[i];
    cout<<"Gib den "<<i<<". Pin ein: ";
    cin >>Pin[i];
    cout<< "Ist "<<i<<" ein Lehrer oder Schüler?"; //(wenn ja gib eine 1 ein, wenn nicht eine 0)
    cin >>Anwender[i];
    /if( Eingabe[i] =='j' ) // Bedingung
    {
    Lehrer[i]=1; // wahr-Block
    }
    else
    {
    Lehrer[i]=0; // falsch-Block
    }
    /
    }
    Abspeichern.open("Rechnerei.dat",ios::out | ios::binary);
    Abspeichern.write(reinterpret_cast<char*>(Punkte),69sizeof(int));
    Abspeichern.write(reinterpret_cast<char
    >(Aufgabenanzahl),69sizeof(int));
    Abspeichern.write(reinterpret_cast<char
    >(Name),69sizeof(char[100]));
    Abspeichern.write(reinterpret_cast<char
    >(Pin),69sizeof(char[100]));
    Abspeichern.write(reinterpret_cast<char
    >(Anwender),69*sizeof(char[100]));
    Abspeichern.close();
    return 0;
    }

    // Die Funktion
    bool pineingabe(char richtigepin[12])
    { char eingabepin[12];
    int Versuch,i;
    char Pin [69][12];
    !strcmp(eingabepin,Pin[i]);
    bool ergebnis;
    Versuch=0;
    top:
    cout << "Bitte die Pin eingeben: "; // Ausgabe
    cin >> eingabepin; // Eingabe

    if( Versuch <2 ) // Bedingung
    {
    Versuch++;

    if( eingabepin==richtigepin ) // Bedingung
    { ergebnis=true; // wahr-Block
    cout<< " Vielen Dank für Ihre Anmeldung.";
    sleep(2);
    clrscr();
    }
    else
    {//ergebnis= false;
    cout<< "Die "<<Versuch<<".Eingabe war nicht korrekt. Bitte Versuchen Sie es erneut.";
    sleep(2);
    clrscr();
    goto top;
    }

    }
    else
    {
    cout<< " Die Logindaten sind verkehrt! \n Es ist keine weitere Eingabe möglich!";
    sleep(2);
    ergebnis = false;
    //exit(0);
    // falsch-Block
    }

    return (ergebnis);
    }

    //Das Programm
    #include <iostream.h>
    #include <conio.h>
    #include <fstream.h>
    #include <dos.h>
    #include "Funktionpin.cpp"

    /*bool pineingabe(int richtigepin)
    { int eingabepin;
    bool ergebnis;
    cout << "Bitte die Pin eingeben: "; // Ausgabe
    cin >> eingabepin; // Eingabe
    if( eingabepin==richtigepin ) // Bedingung
    { ergebnis=true; // wahr-Block
    }
    else
    {ergebnis= false;
    }
    return (ergebnis);
    } */

    int main()
    {
    int Punkte[69],Aufgabenanzahl[69],i,Auswahl;
    char Name[69][100], Anmeldename[100],Anwender[69][20],Lehrer[20];
    char Pin[69][12],Anmeldepin[12],eingabepin[12];
    //string Ausgabepinname="unbekannte Pin";
    //Variablen nur zum Rechnen:
    int zahl1, zahl2, ergebnis, loesung,n;
    char wiederholung, Ende;
    string note;
    int prozente;

    // Hier beginnt das Einlesen der Daten.
    ifstream Einlesen;
    Einlesen.open("Rechnerei.dat",ios::in | ios::binary);
    Einlesen.read(reinterpret_cast<char*>(Punkte),69sizeof(int));
    Einlesen.read(reinterpret_cast<char
    >(Aufgabenanzahl),69sizeof(int));
    Einlesen.read(reinterpret_cast<char
    >(Name),69sizeof(char[100]));
    Einlesen.read(reinterpret_cast<char
    >(Pin),69sizeof(char[100]));
    Einlesen.read(reinterpret_cast<char
    >(Anwender),69*sizeof(char[100]));
    Einlesen.close();
    //Hier endet das Einlesen der Daten.

    cout << "Herzlich Wilkommen beim Mathetrainer 01/2011"; // Ausgabe
    //Hier beginnt das Anmelden.
    gotoxy (30,12);

    cout << "Geben Sie Ihren Namen ein: ";
    cin >> Anmeldename;
    //cout << "Geben Sie Ihren Pin ein: ";
    //cin >> Anmeldepin; //clrscr ();

    for(i=1;i<=69;i++)
    {

    if(!strcmp(Anmeldename,Name[i]) )
    {

    cout<< "Anmeldename gefunden\n";
    bool pin;
    pin=pineingabe(pin);
    if( pin==true ) // Bedingung
    {
    cout<<"Programm läuft!"; // wahr-Block
    }
    n=i;
    }

    }

    /if( Ausgabepinname != "unbekannte Pin" )
    { cout <<" Name: " << Ausgabepinname;
    }
    else
    { cout <<" Fehler: " << Ausgabepinname;
    }
    /

    //Definition Lehrer / Schüler
    //xy:
    //if( Lehrer == Anwender[i] ) // Bedingung
    //{

    cout<<"Guten Tag Lehrer " << Name[i]; sleep (1); clrscr(); gotoxy(20,2);
    cout << " Willkommen im Hauptmenü!!" << endl << endl << endl << endl << endl << endl; // Ausgabe: Begrüßung im Menü
    sleep (3); // wahr-Block
    do
    {
    cout << "\t1.\t Einen neuen Nutzer anlegen.\n" ; // Ausgabe
    cout << "\t2.\t Ergebnisse einsehen.\n" ; // Ausgabe
    cout << "\t3.\t Zurücksetzungsoption.\n" ; // Ausgabe
    cout << "\t4.\t Ergebnissübersicht der Gruppe.\n" ; // Ausgabe
    cout << "\t5.\t Durchschnitsleistung der Gruppe.\n" ; // Ausgabe
    cout << "\t6.\t Programm beenden.\n" ; // Ausgabe
    cout << "\n\n\t\t Bitte treffen Sie Ihre Auswahl:\t" ; // Ausgabe
    cin >> Auswahl; // Eingabe
    switch( Auswahl ) // Auswahlausdruck
    { case 1 : break; // Fall 1
    case 2 : break; // Fall 2
    case 3 : break; // Fall n
    case 4 : for( i=1 ;i<=69 ;i++ )// Aus Aufgaeb 710
    {
    cout<< i <<"Name :\t"<<Name[i]<<"Aufgaben :\t"<<Aufgabenanzahl[i]<<"\t"<<Punkte[i]<<" Punkte von "<<Aufgabenanzahl[i]<<"möglichen"<<endl;
    // Schleifenkörper-Block
    }

    break; // Fall 1
    case 5 : break; // Fall 2
    case 6 : cout<< "Sind Sie sicher das Sie das Progamm beenden wollen? (j/n)" ;
    cin>> Ende;
    break; // Fall n
    default: ; cout << " Die Eingabe war nicht korreket, bitte wählen Sie einen der Punkte 1-6.";
    Ende = 'n'; // sonst-Fall
    }

    } while(Ende != 'j' ); // Solange-Bedingung
    /*}
    else
    { // falsch-Block

    //Hier beginnt das Rechenprogramm.
    randomize();
    Aufgabenanzahl[n];
    do
    {

    if (Aufgabenanzahl[n]<5)
    {
    clrscr ();
    gotoxy (20,10);
    Aufgabenanzahl[n]++;
    zahl1 = random(100);
    zahl2 = random(100);
    ergebnis = zahl1 + zahl2;
    cout << "Aufgabe " << Aufgabenanzahl[n] << " von 100" << endl;
    gotoxy (25,15);
    cout << zahl1 << " + " << zahl2 << " = "; // Ausgabe
    //clrscr ();
    cin >> loesung;
    if( loesung == ergebnis ) // Bedingung
    {
    clrscr ();
    gotoxy (25,11);
    cout << "Das hast Du richtig gerechnet."; // wahr-Block
    Punkte[n] = Punkte[n] + 1;
    cout << " Du erhälst 1 Punkt" << endl; sleep (1);
    }
    else
    {
    clrscr (); sleep (1);
    cout << "Das hast Du leider falsch gerechnet" << endl; sleep (2); // falsch-Block
    }
    clrscr(); gotoxy (25,11);
    if(Aufgabenanzahl[n]<5 ) // Bedingung
    {
    cout << "Möchtest Du eine weitere Aufgabe rechnen (j/n)? ";
    cin >> wiederholung; // wahr-Block
    }
    else
    {
    wiederholung = 'n';
    cout<< "Das Maximum ist erreicht"; // falsch-Block
    }

    }
    else
    {
    clrscr (); sleep (1);
    wiederholung = 'n';
    cout << "Es ist keine weitere Aufgabe möglich. Du hast 100 von 100 Aufgaben gerechnet." << endl; // 100 Aufgaben sind erreicht
    }
    }
    while (wiederholung == 'j');
    cout << "Dein Gesamtpunktestand beträgt: " << Punkte[n] << endl;
    //cout << "Dein Gesamtpunktestand beträgt: " << Punkte << endl <<endl;
    prozente = Punkte[n]100/Aufgabenanzahl[n];
    cout << "Du hast "<< prozente << " Prozent erreicht!";
    if(prozente < 26 ){note = "ungenügend";}
    else
    { if(prozente < 51 ){note = "mangelhaft";}
    else
    {if(prozente < 66 ){note = "ausreichend";}
    else
    {if(prozente < 81 ){note = "befriedigend";}
    else
    { if(prozente < 95 ){note = "gut";}
    else { note = "sehr gut";}
    }
    }
    }
    }
    cout << " Das entspricht der Note " <<note;
    getchar();
    }
    /
    ofstream Abspeichern;
    Abspeichern.open("Rechnerei.dat",ios::out | ios::binary);
    Abspeichern.write(reinterpret_cast<char
    >(Punkte),69sizeof(int));
    Abspeichern.write(reinterpret_cast<char
    >(Aufgabenanzahl),69sizeof(int));
    Abspeichern.write(reinterpret_cast<char
    >(Name),69sizeof(char[100]));
    Abspeichern.write(reinterpret_cast<char
    >(Pin),69sizeof(char[100]));
    Abspeichern.write(reinterpret_cast<char
    >(Anwender),69*sizeof(char[100]));
    Abspeichern.close();
    clrscr (); gotoxy (25,10);
    cout << "Das Programm wird nun beendet"; // Ausgabe
    sleep (2);
    clrscr ();
    gotoxy (25,12);
    cout << "Auf Wiedersehn, bis zum nächsten Mal."; // Ausgabe
    sleep (2);
    //getchar();
    return 0;
    }
    ]

    zum Compilieren nehme ich den CPPTrain2
    Habe auch noch eine 2. Variante Allerdings sieht die nicht viel anders aus.
    #include <iostream.h>
    #include <conio.h>
    #include <fstream.h>
    #include <dos.h>
    #include "Funktionpin.cpp"

    /*bool pineingabe(int richtigepin)
    { int eingabepin;
    bool ergebnis;
    cout << "Bitte die Pin eingeben: "; // Ausgabe
    cin >> eingabepin; // Eingabe
    if( eingabepin==richtigepin ) // Bedingung
    { ergebnis=true; // wahr-Block
    }
    else
    {ergebnis= false;
    }
    return (ergebnis);
    } */

    int main()
    {
    int Punkte[69],Aufgabenanzahl[69],i,Auswahl;
    char Name[69][100], Anmeldename[100],Anwender[69][20],Lehrer[20];
    char Pin[69][12],Anmeldepin[12];
    //string Ausgabepinname="unbekannte Pin";
    //Variablen nur zum Rechnen:
    int zahl1, zahl2, ergebnis, loesung,n;
    char wiederholung, Ende;
    string note;
    int prozente;
    int Versuch;

    // Hier beginnt das Einlesen der Daten.
    ifstream Einlesen;
    Einlesen.open("Rechnerei.dat",ios::in | ios::binary);
    Einlesen.read(reinterpret_cast<char*>(Punkte),69sizeof(int));
    Einlesen.read(reinterpret_cast<char
    >(Aufgabenanzahl),69sizeof(int));
    Einlesen.read(reinterpret_cast<char
    >(Name),69sizeof(char[100]));
    Einlesen.read(reinterpret_cast<char
    >(Pin),69sizeof(char[100]));
    Einlesen.read(reinterpret_cast<char
    >(Anwender),69*sizeof(char[100]));
    Einlesen.close();
    //Hier endet das Einlesen der Daten.
    Versuch=0;
    cout << "Herzlich Wilkommen beim Mathetrainer 01/2011"; // Ausgabe
    //Hier beginnt das Anmelden.
    gotoxy (30,12);
    top:
    cout << "Geben Sie Ihren Namen ein: ";
    cin >> Anmeldename;
    cout << "Geben Sie Ihren Pin ein: ";
    cin >> Anmeldepin; //clrscr ();

    for(i=1;i<=69;i++)
    {

    if(!strcmp(Anmeldename,Name[i]) )
    { n=i;
    for( i=1;i<=69;i++)
    {

    if( Versuch <2 ) // Bedingung
    {
    Versuch++;
    if(!strcmp(Anmeldepin,Pin[i]) )//( Anmeldepin == Pin[i] )
    {
    cout << " Heidihoh";
    }
    else
    {//ergebnis= false;
    cout<< "Die "<<Versuch<<".Eingabe war nicht korrekt. Bitte Versuchen Sie es erneut.";
    sleep(2);
    clrscr();
    goto top;
    }
    }
    else
    {
    cout<< " Die Logindaten sind verkehrt! \n Es ist keine weitere Eingabe möglich!";
    sleep(2);
    exit(0);
    } // falsch-Block
    }

    /cout<< "Anmeldename gefungen\n";
    bool pin;
    pin=pineingabe(Pin);
    if( pin==true ) // Bedingung
    {
    cout<<"Programm läuft!"; // wahr-Block
    }
    /

    }

    }

    /if( Ausgabepinname != "unbekannte Pin" )
    { cout <<" Name: " << Ausgabepinname;
    }
    else
    { cout <<" Fehler: " << Ausgabepinname;
    }
    /

    //Definition Lehrer / Schüler
    //xy:
    //if( Lehrer == Anwender[i] ) // Bedingung
    //{

    cout<<"Guten Tag Lehrer " << Name[i]; sleep (1); clrscr(); gotoxy(20,2);
    cout << " Willkommen im Hauptmenü!!" << endl << endl << endl << endl << endl << endl; // Ausgabe: Begrüßung im Menü
    sleep (3); // wahr-Block
    do
    {
    cout << "\t1.\t Einen neuen Nutzer anlegen.\n" ; // Ausgabe
    cout << "\t2.\t Ergebnisse einsehen.\n" ; // Ausgabe
    cout << "\t3.\t Zurücksetzungsoption.\n" ; // Ausgabe
    cout << "\t4.\t Ergebnissübersicht der Gruppe.\n" ; // Ausgabe
    cout << "\t5.\t Durchschnitsleistung der Gruppe.\n" ; // Ausgabe
    cout << "\t6.\t Programm beenden.\n" ; // Ausgabe
    cout << "\n\n\t\t Bitte treffen Sie Ihre Auswahl:\t" ; // Ausgabe
    cin >> Auswahl; // Eingabe
    switch( Auswahl ) // Auswahlausdruck
    { case 1 : break; // Fall 1
    case 2 : break; // Fall 2
    case 3 : break; // Fall n
    case 4 : for( i=1 ;i<=69 ;i++ )// Aus Aufgabe 710
    { if ((Aufgabenanzahl[i]==0)&&(Punkte[i]==0))
    {
    cout<< "Keine Ergebnisse vorhanden";
    }
    else
    {
    cout<< i <<"Name :"<<Name[i]<<"Aufgaben :"<<Aufgabenanzahl[i]<<"\t"<<Punkte[i]<<"Punkte von "<<Aufgabenanzahl[i]<<"möglichen"<<endl;

    } // Schleifenkörper-Block
    }

    break; // Fall 1
    case 5 : break; // Fall 2
    case 6 : cout<< "Sind Sie sicher das Sie das Progamm beenden wollen? (j/n)" ;
    cin>> Ende;
    break; // Fall n
    default: ; cout << " Die Eingabe war nicht korreket, bitte wählen Sie einen der Punkte 1-6.";
    Ende = 'n'; // sonst-Fall
    }

    } while(Ende != 'j' ); // Solange-Bedingung
    /*}
    else
    { // falsch-Block

    randomize();
    Aufgabenanzahl[n];
    do
    {

    if (Aufgabenanzahl[n]<5)
    {
    clrscr ();
    gotoxy (20,10);
    Aufgabenanzahl[n]++;
    zahl1 = random(100);
    zahl2 = random(100);
    ergebnis = zahl1 + zahl2;
    cout << "Aufgabe " << Aufgabenanzahl[n] << " von 100" << endl;
    gotoxy (25,15);
    cout << zahl1 << " + " << zahl2 << " = "; // Ausgabe
    //clrscr ();
    cin >> loesung;
    if( loesung == ergebnis ) // Bedingung
    {
    clrscr ();
    gotoxy (25,11);
    cout << "Das hast Du richtig gerechnet."; // wahr-Block
    Punkte[n] = Punkte[n] + 1;
    cout << " Du erhälst 1 Punkt" << endl; sleep (1);
    }
    else
    {
    clrscr (); sleep (1);
    cout << "Das hast Du leider falsch gerechnet" << endl; sleep (2); // falsch-Block
    }
    clrscr(); gotoxy (25,11);
    if(Aufgabenanzahl[n]<5 ) // Bedingung
    {
    cout << "Möchtest Du eine weitere Aufgabe rechnen (j/n)? ";
    cin >> wiederholung; // wahr-Block
    }
    else
    {
    wiederholung = 'n';
    cout<< "Das Maximum ist erreicht"; // falsch-Block
    }

    }
    else
    {
    clrscr (); sleep (1);
    wiederholung = 'n';
    cout << "Es ist keine weitere Aufgabe möglich. Du hast 100 von 100 Aufgaben gerechnet." << endl; // 100 Aufgaben sind erreicht
    }
    }
    while (wiederholung == 'j');
    cout << "Dein Gesamtpunktestand beträgt: " << Punkte[n] << endl;
    prozente = Punkte[n]100/Aufgabenanzahl[n];
    cout << "Du hast "<< prozente << " Prozent erreicht!";
    if(prozente < 26 ){note = "ungenügend";}
    else
    { if(prozente < 51 ){note = "mangelhaft";}
    else
    {if(prozente < 66 ){note = "ausreichend";}
    else
    {if(prozente < 81 ){note = "befriedigend";}
    else
    { if(prozente < 95 ){note = "gut";}
    else { note = "sehr gut";}
    }
    }
    }
    }
    cout << " Das entspricht der Note " <<note;
    getchar();
    }
    /
    ofstream Abspeichern;
    Abspeichern.open("Rechnerei.dat",ios::out | ios::binary);
    Abspeichern.write(reinterpret_cast<char*>(Punkte),69sizeof(int));
    Abspeichern.write(reinterpret_cast<char
    >(Aufgabenanzahl),69sizeof(int));
    Abspeichern.write(reinterpret_cast<char
    >(Name),69sizeof(char[100]));
    Abspeichern.write(reinterpret_cast<char
    >(Pin),69sizeof(char[100]));
    Abspeichern.write(reinterpret_cast<char
    >(Anwender),69*sizeof(char[100]));
    Abspeichern.close();
    clrscr (); gotoxy (25,10);
    cout << "Das Programm wird nun beendet"; // Ausgabe
    sleep (2);
    clrscr ();
    gotoxy (25,12);
    cout << "Auf Wiedersehn, bis zum nächsten Mal."; // Ausgabe
    sleep (2);
    //getchar();
    return 0;
    }

    Über Tips Hilfen und Anregungen wäre ich sehr dankbar.



  • Niemand liest das durch. Poste es erneut zwischen [cpp] und [/cpp].



  • Danos schrieb:

    Hi, bin c++ Anfänger und habe eine Aufgabe ein Programm so zu schreiben, das es sowohl den Benutzernamen erkennt als auch den Pin! und das ganze soll 2x passieren, nach der dritten fehlerhaften Eingabe soll das Programm geschlossen werden. Aber es läuft nicht habe mehrere Sachen versucht es läuft aber nicht. Zudem habe ich Probleme die Nutzer zu unterscheiden. hat jemand eine Idee ohne es in Klasse zu packen.

    //Die Datenbank
    
    #include <iostream.h>
    #include <fstream.h>
    int main()
    {
      int Punkte[69],i,Aufgabenanzahl[69];
      char Name[69][100];
      char Pin[69][12];
      //int Lehrer[69];
      char Anwender[69][20];
      ofstream Abspeichern;
      for(i=1;i<=2;i++)
      {
        Punkte[i]=0;
        Aufgabenanzahl[i]=0;
        cout<<"Gib den "<<i<<". Namen ein: ";
        cin >>Name[i];
        cout<<"Gib den "<<i<<". Pin ein: ";
        cin >>Pin[i];
        cout<< "Ist "<<i<<" ein Lehrer oder Schüler?"; //(wenn ja gib eine 1 ein, wenn nicht eine 0)
        cin >>Anwender[i];
        /*if( Eingabe[i] =='j'  )   // Bedingung
        { 
          Lehrer[i]=1;       // wahr-Block
        }
        else
        {  
          Lehrer[i]=0;      // falsch-Block
        }*/
      }
      Abspeichern.open("Rechnerei.dat",ios::out | ios::binary);
      Abspeichern.write(reinterpret_cast<char*>(Punkte),69*sizeof(int));
      Abspeichern.write(reinterpret_cast<char*>(Aufgabenanzahl),69*sizeof(int));
      Abspeichern.write(reinterpret_cast<char*>(Name),69*sizeof(char[100]));
      Abspeichern.write(reinterpret_cast<char*>(Pin),69*sizeof(char[100]));
      Abspeichern.write(reinterpret_cast<char*>(Anwender),69*sizeof(char[100]));
      Abspeichern.close();
      return 0;
    }
    
    // Die Funktion
    bool pineingabe(char richtigepin[12])
    { char eingabepin[12];
      int Versuch,i;
      char Pin [69][12];
      !strcmp(eingabepin,Pin[i]);
      bool ergebnis;
      Versuch=0;
      top:
      cout << "Bitte die Pin eingeben: "; // Ausgabe
      cin >> eingabepin; // Eingabe
          
         if( Versuch <2 )   // Bedingung
         {
             Versuch++;
             
            if( eingabepin==richtigepin )   // Bedingung
            { ergebnis=true;       // wahr-Block
              cout<< " Vielen Dank für Ihre Anmeldung.";
              sleep(2);
              clrscr();
            }
            else
            {//ergebnis= false;
             cout<< "Die "<<Versuch<<".Eingabe war nicht korrekt. Bitte Versuchen Sie es erneut.";
             sleep(2);
             clrscr();
             goto top;
            }
            
         }
         else
         {
           cout<< " Die Logindaten sind verkehrt! \n Es ist keine weitere Eingabe möglich!";
           sleep(2);
           ergebnis = false;
           //exit(0); 
                 // falsch-Block
         }
     
          return (ergebnis);
    }
    
    //Das Programm
    #include <iostream.h>
    #include <conio.h>
    #include <fstream.h>
    #include <dos.h>
    #include "Funktionpin.cpp"
    
    /*bool pineingabe(int richtigepin)
    { int eingabepin;
      bool ergebnis;
      cout << "Bitte die Pin eingeben: "; // Ausgabe
      cin >> eingabepin; // Eingabe
      if( eingabepin==richtigepin )   // Bedingung
      { ergebnis=true;       // wahr-Block
      }
      else
      {ergebnis= false;
      } 
      return (ergebnis);
    } */
    
    int main()
    {
      int Punkte[69],Aufgabenanzahl[69],i,Auswahl;
      char Name[69][100], Anmeldename[100],Anwender[69][20],Lehrer[20];
      char Pin[69][12],Anmeldepin[12],eingabepin[12];
      //string Ausgabepinname="unbekannte Pin";
      //Variablen nur zum Rechnen:
      int zahl1, zahl2, ergebnis, loesung,n;
      char wiederholung, Ende;
      string note;
      int prozente;
      
    
    // Hier beginnt das Einlesen der Daten.
      ifstream Einlesen;
      Einlesen.open("Rechnerei.dat",ios::in | ios::binary);
      Einlesen.read(reinterpret_cast<char*>(Punkte),69*sizeof(int));
      Einlesen.read(reinterpret_cast<char*>(Aufgabenanzahl),69*sizeof(int));
      Einlesen.read(reinterpret_cast<char*>(Name),69*sizeof(char[100]));
      Einlesen.read(reinterpret_cast<char*>(Pin),69*sizeof(char[100]));
      Einlesen.read(reinterpret_cast<char*>(Anwender),69*sizeof(char[100]));
      Einlesen.close();
    //Hier endet das Einlesen der Daten.
     
      cout << "Herzlich Wilkommen beim Mathetrainer 01/2011"; // Ausgabe
    //Hier beginnt das Anmelden.
      gotoxy (30,12);
      
      cout << "Geben Sie Ihren Namen ein: ";
      cin >> Anmeldename;
      //cout << "Geben Sie Ihren Pin ein: ";
      //cin >> Anmeldepin; //clrscr ();
       
        for(i=1;i<=69;i++)
          {            
                          
                            if(!strcmp(Anmeldename,Name[i]) )
                            { 
                             
                             cout<< "Anmeldename gefunden\n";
                             bool pin;
                             pin=pineingabe(pin);
                             if( pin==true )   // Bedingung
                             { 
                             cout<<"Programm läuft!";       // wahr-Block
                             } 
                              n=i;
                            } 
                           
          }
          
          
     
     
     /*if( Ausgabepinname != "unbekannte Pin" )   
     { cout <<"  Name: " << Ausgabepinname;       
     }
     else
     { cout <<"  Fehler: " << Ausgabepinname;
     }*/ 
     
     //Definition Lehrer / Schüler
     //xy:
     //if( Lehrer == Anwender[i] )   // Bedingung
     //{    
              
            cout<<"Guten Tag Lehrer " << Name[i]; sleep (1); clrscr(); gotoxy(20,2);
            cout << " Willkommen im Hauptmenü!!" << endl << endl << endl << endl << endl << endl; // Ausgabe: Begrüßung im Menü
            sleep (3);  // wahr-Block
            do
            { 
              cout << "\t1.\t Einen neuen Nutzer anlegen.\n" ; // Ausgabe
              cout << "\t2.\t Ergebnisse einsehen.\n" ; // Ausgabe
              cout << "\t3.\t Zurücksetzungsoption.\n" ; // Ausgabe
              cout << "\t4.\t Ergebnissübersicht der Gruppe.\n" ; // Ausgabe
              cout << "\t5.\t Durchschnitsleistung der Gruppe.\n" ; // Ausgabe
              cout << "\t6.\t Programm beenden.\n" ; // Ausgabe
              cout << "\n\n\t\t Bitte treffen Sie Ihre Auswahl:\t" ; // Ausgabe
              cin >> Auswahl; // Eingabe
              switch( Auswahl )          // Auswahlausdruck
              { case  1 :   break; // Fall 1
                case  2 :   break; // Fall 2
                case  3 :   break;  // Fall n
                case  4 :   for( i=1 ;i<=69  ;i++  )// Aus Aufgaeb 710
                            { 
                             cout<< i <<"Name :\t"<<Name[i]<<"Aufgaben :\t"<<Aufgabenanzahl[i]<<"\t"<<Punkte[i]<<" Punkte von "<<Aufgabenanzahl[i]<<"möglichen"<<endl;
                                   // Schleifenkörper-Block
                            }
                
                
                break; // Fall 1
                case  5 :   break; // Fall 2
                case  6 :   cout<< "Sind Sie sicher das Sie das Progamm beenden wollen? (j/n)" ;
                            cin>> Ende;
                            break;  // Fall n
               default:  ;  cout << " Die Eingabe war nicht korreket, bitte wählen Sie einen der Punkte 1-6.";
                            Ende = 'n';    // sonst-Fall
              }
                       
            } while(Ende != 'j' ); // Solange-Bedingung
     /*}
     else
     {        // falsch-Block
     
    //Hier beginnt das Rechenprogramm.
      randomize();
      Aufgabenanzahl[n];
      do
      {  
               
        if (Aufgabenanzahl[n]<5)
        {   
           clrscr ();
           gotoxy (20,10);
           Aufgabenanzahl[n]++;
           zahl1 = random(100);
           zahl2 = random(100);
           ergebnis = zahl1 + zahl2;
           cout << "Aufgabe " <<  Aufgabenanzahl[n] << " von 100" << endl;
           gotoxy (25,15);  
           cout << zahl1 << " + " << zahl2 << " = "; // Ausgabe
           //clrscr ();
           cin >> loesung;
           if( loesung == ergebnis )   // Bedingung
           { 
           clrscr (); 
           gotoxy (25,11);
           cout << "Das hast Du richtig gerechnet.";  // wahr-Block
           Punkte[n] = Punkte[n] + 1;
           cout << " Du erhälst 1 Punkt" << endl; sleep (1);
           }
           else
           { 
           clrscr (); sleep (1);
           cout << "Das hast Du leider falsch gerechnet" << endl; sleep (2);      // falsch-Block
           }
           clrscr(); gotoxy (25,11);
           if(Aufgabenanzahl[n]<5  )   // Bedingung
           { 
             cout << "Möchtest Du eine weitere Aufgabe rechnen (j/n)? ";
             cin >> wiederholung;       // wahr-Block
           }
           else
           { 
             wiederholung = 'n';
             cout<< "Das Maximum ist erreicht";       // falsch-Block
           }
           
        }   
        else   
        {
         clrscr (); sleep (1);
         wiederholung = 'n';
         cout << "Es ist keine weitere Aufgabe möglich. Du hast 100 von 100 Aufgaben gerechnet." << endl;       // 100 Aufgaben sind erreicht
        }
      }
      while (wiederholung == 'j');
      cout << "Dein Gesamtpunktestand beträgt: " << Punkte[n] << endl;
      //*cout << "Dein Gesamtpunktestand beträgt: " << Punkte << endl <<endl;
      prozente = Punkte[n]*100/Aufgabenanzahl[n];  
      cout << "Du hast "<< prozente << " Prozent erreicht!";
      if(prozente < 26 ){note = "ungenügend";}
      else
      { if(prozente < 51 ){note = "mangelhaft";}
        else 
        {if(prozente < 66 ){note = "ausreichend";}
         else
         {if(prozente < 81 ){note = "befriedigend";}
          else
          { if(prozente < 95 ){note = "gut";}
            else { note = "sehr gut";}
         }
        }
       }
      }   
      cout << " Das entspricht der Note " <<note;
      getchar(); 
     }*/ 
      ofstream Abspeichern;
      Abspeichern.open("Rechnerei.dat",ios::out | ios::binary);
      Abspeichern.write(reinterpret_cast<char*>(Punkte),69*sizeof(int));
      Abspeichern.write(reinterpret_cast<char*>(Aufgabenanzahl),69*sizeof(int));
      Abspeichern.write(reinterpret_cast<char*>(Name),69*sizeof(char[100]));
      Abspeichern.write(reinterpret_cast<char*>(Pin),69*sizeof(char[100]));
      Abspeichern.write(reinterpret_cast<char*>(Anwender),69*sizeof(char[100]));
      Abspeichern.close();
      clrscr (); gotoxy (25,10);
      cout << "Das Programm wird nun beendet"; // Ausgabe
      sleep (2);
      clrscr ();
      gotoxy (25,12);
      cout << "Auf Wiedersehn, bis zum nächsten Mal."; // Ausgabe
      sleep (2);
      //getchar();
      return 0;
    }
    ]
    
    zum Compilieren nehme ich den CPPTrain2
    Habe auch noch eine 2. Variante Allerdings sieht die nicht viel anders aus.
    #include <iostream.h>
    #include <conio.h>
    #include <fstream.h>
    #include <dos.h>
    #include "Funktionpin.cpp"
    
    /*bool pineingabe(int richtigepin)
    { int eingabepin;
      bool ergebnis;
      cout << "Bitte die Pin eingeben: "; // Ausgabe
      cin >> eingabepin; // Eingabe
      if( eingabepin==richtigepin )   // Bedingung
      { ergebnis=true;       // wahr-Block
      }
      else
      {ergebnis= false;
      } 
      return (ergebnis);
    } */
    
    int main()
    {
      int Punkte[69],Aufgabenanzahl[69],i,Auswahl;
      char Name[69][100], Anmeldename[100],Anwender[69][20],Lehrer[20];
      char Pin[69][12],Anmeldepin[12];
      //string Ausgabepinname="unbekannte Pin";
      //Variablen nur zum Rechnen:
      int zahl1, zahl2, ergebnis, loesung,n;
      char wiederholung, Ende;
      string note;
      int prozente;
      int Versuch;
    
    // Hier beginnt das Einlesen der Daten.
      ifstream Einlesen;
      Einlesen.open("Rechnerei.dat",ios::in | ios::binary);
      Einlesen.read(reinterpret_cast<char*>(Punkte),69*sizeof(int));
      Einlesen.read(reinterpret_cast<char*>(Aufgabenanzahl),69*sizeof(int));
      Einlesen.read(reinterpret_cast<char*>(Name),69*sizeof(char[100]));
      Einlesen.read(reinterpret_cast<char*>(Pin),69*sizeof(char[100]));
      Einlesen.read(reinterpret_cast<char*>(Anwender),69*sizeof(char[100]));
      Einlesen.close();
    //Hier endet das Einlesen der Daten.
      Versuch=0;
      cout << "Herzlich Wilkommen beim Mathetrainer 01/2011"; // Ausgabe
    //Hier beginnt das Anmelden.
      gotoxy (30,12);
      top:
      cout << "Geben Sie Ihren Namen ein: ";
      cin >> Anmeldename;
      cout << "Geben Sie Ihren Pin ein: ";
      cin >> Anmeldepin; //clrscr ();
      
       
        for(i=1;i<=69;i++)
          {            
                          
                            if(!strcmp(Anmeldename,Name[i]) )
                            { n=i;
                             for( i=1;i<=69;i++)
                             { 
                             
                              if( Versuch <2 )   // Bedingung
                              {
                                Versuch++;
                               if(!strcmp(Anmeldepin,Pin[i]) )//( Anmeldepin == Pin[i] )
                               { 
                                cout << " Heidihoh";      
                               }
                               else
                               {//ergebnis= false;
                               cout<< "Die "<<Versuch<<".Eingabe war nicht korrekt. Bitte Versuchen Sie es erneut.";
                               sleep(2);
                               clrscr();
                               goto top;
                               }
                              }
                              else
                              {
                               cout<< " Die Logindaten sind verkehrt! \n Es ist keine weitere Eingabe möglich!";
                               sleep(2);
                               exit(0); 
                              } // falsch-Block
         }
                                
                                
                             
                             
                              
     
                             
                             /*cout<< "Anmeldename gefungen\n";
                             bool pin;
                             pin=pineingabe(Pin);
                             if( pin==true )   // Bedingung
                             { 
                             cout<<"Programm läuft!";       // wahr-Block
                             }*/ 
                            
                            } 
                           
          }
          
          
     
     
     /*if( Ausgabepinname != "unbekannte Pin" )   
     { cout <<"  Name: " << Ausgabepinname;       
     }
     else
     { cout <<"  Fehler: " << Ausgabepinname;
     }*/ 
     
     //Definition Lehrer / Schüler
     //xy:
     //if( Lehrer == Anwender[i] )   // Bedingung
     //{    
              
            cout<<"Guten Tag Lehrer " << Name[i]; sleep (1); clrscr(); gotoxy(20,2);
            cout << " Willkommen im Hauptmenü!!" << endl << endl << endl << endl << endl << endl; // Ausgabe: Begrüßung im Menü
            sleep (3);  // wahr-Block
            do
            { 
              cout << "\t1.\t Einen neuen Nutzer anlegen.\n" ; // Ausgabe
              cout << "\t2.\t Ergebnisse einsehen.\n" ; // Ausgabe
              cout << "\t3.\t Zurücksetzungsoption.\n" ; // Ausgabe
              cout << "\t4.\t Ergebnissübersicht der Gruppe.\n" ; // Ausgabe
              cout << "\t5.\t Durchschnitsleistung der Gruppe.\n" ; // Ausgabe
              cout << "\t6.\t Programm beenden.\n" ; // Ausgabe
              cout << "\n\n\t\t Bitte treffen Sie Ihre Auswahl:\t" ; // Ausgabe
              cin >> Auswahl; // Eingabe
              switch( Auswahl )          // Auswahlausdruck
              { case  1 :   break; // Fall 1
                case  2 :   break; // Fall 2
                case  3 :   break;  // Fall n
                case  4 :   for( i=1 ;i<=69  ;i++  )// Aus Aufgabe 710
                            { if ((Aufgabenanzahl[i]==0)&&(Punkte[i]==0))
                              {
                               cout<< "Keine Ergebnisse vorhanden";
                              }
                              else
                              { 
                              cout<< i <<"Name :"<<Name[i]<<"Aufgaben :"<<Aufgabenanzahl[i]<<"\t"<<Punkte[i]<<"Punkte von "<<Aufgabenanzahl[i]<<"möglichen"<<endl;
                              
                              }     // Schleifenkörper-Block
                            }
                            
                
                break; // Fall 1
                case  5 :   break; // Fall 2
                case  6 :   cout<< "Sind Sie sicher das Sie das Progamm beenden wollen? (j/n)" ;
                            cin>> Ende;
                            break;  // Fall n
               default:  ;  cout << " Die Eingabe war nicht korreket, bitte wählen Sie einen der Punkte 1-6.";
                            Ende = 'n';    // sonst-Fall
              }
                       
            } while(Ende != 'j' ); // Solange-Bedingung
     /*}
     else
     {        // falsch-Block
     
      randomize();
      Aufgabenanzahl[n];
      do
      {  
               
        if (Aufgabenanzahl[n]<5)
        {   
           clrscr ();
           gotoxy (20,10);
           Aufgabenanzahl[n]++;
           zahl1 = random(100);
           zahl2 = random(100);
           ergebnis = zahl1 + zahl2;
           cout << "Aufgabe " <<  Aufgabenanzahl[n] << " von 100" << endl;
           gotoxy (25,15);  
           cout << zahl1 << " + " << zahl2 << " = "; // Ausgabe
           //clrscr ();
           cin >> loesung;
           if( loesung == ergebnis )   // Bedingung
           { 
           clrscr (); 
           gotoxy (25,11);
           cout << "Das hast Du richtig gerechnet.";  // wahr-Block
           Punkte[n] = Punkte[n] + 1;
           cout << " Du erhälst 1 Punkt" << endl; sleep (1);
           }
           else
           { 
           clrscr (); sleep (1);
           cout << "Das hast Du leider falsch gerechnet" << endl; sleep (2);      // falsch-Block
           }
           clrscr(); gotoxy (25,11);
           if(Aufgabenanzahl[n]<5  )   // Bedingung
           { 
             cout << "Möchtest Du eine weitere Aufgabe rechnen (j/n)? ";
             cin >> wiederholung;       // wahr-Block
           }
           else
           { 
             wiederholung = 'n';
             cout<< "Das Maximum ist erreicht";       // falsch-Block
           }
           
        }   
        else   
        {
         clrscr (); sleep (1);
         wiederholung = 'n';
         cout << "Es ist keine weitere Aufgabe möglich. Du hast 100 von 100 Aufgaben gerechnet." << endl;       // 100 Aufgaben sind erreicht
        }
      }
      while (wiederholung == 'j');
      cout << "Dein Gesamtpunktestand beträgt: " << Punkte[n] << endl;
      prozente = Punkte[n]*100/Aufgabenanzahl[n];  
      cout << "Du hast "<< prozente << " Prozent erreicht!";
      if(prozente < 26 ){note = "ungenügend";}
      else
      { if(prozente < 51 ){note = "mangelhaft";}
        else 
        {if(prozente < 66 ){note = "ausreichend";}
         else
         {if(prozente < 81 ){note = "befriedigend";}
          else
          { if(prozente < 95 ){note = "gut";}
            else { note = "sehr gut";}
         }
        }
       }
      }   
      cout << " Das entspricht der Note " <<note;
      getchar(); 
     }*/ 
      ofstream Abspeichern;
      Abspeichern.open("Rechnerei.dat",ios::out | ios::binary);
      Abspeichern.write(reinterpret_cast<char*>(Punkte),69*sizeof(int));
      Abspeichern.write(reinterpret_cast<char*>(Aufgabenanzahl),69*sizeof(int));
      Abspeichern.write(reinterpret_cast<char*>(Name),69*sizeof(char[100]));
      Abspeichern.write(reinterpret_cast<char*>(Pin),69*sizeof(char[100]));
      Abspeichern.write(reinterpret_cast<char*>(Anwender),69*sizeof(char[100]));
      Abspeichern.close();
      clrscr (); gotoxy (25,10);
      cout << "Das Programm wird nun beendet"; // Ausgabe
      sleep (2);
      clrscr ();
      gotoxy (25,12);
      cout << "Auf Wiedersehn, bis zum nächsten Mal."; // Ausgabe
      sleep (2);
      //getchar();
      return 0;
    }
    

    Über Tips Hilfen und Anregungen wäre ich sehr dankbar.



  • Über 500 Zeilen Code ohne einen Hinweis, wo du Probleme hast - da dürfte es schwer sein jemanden zu finden, der sich überhaupt dein Programm ansieht.



  • EOutOfResources schrieb:

    Niemand liest das durch. Poste es erneut zwischen [cpp] und [/cpp].

    Wie meinst du das?

    Erklär mir bitte wie ich es optisch am besten darstellen kann.



  • Das Problem ist direkt nach dem Anmeldeteil!

    das nicht erkannt wird das der Anwender und der Pin zusammengehören.
    bzw das Pintool garnicht funzt. warum auch immer habe keine ahnung wie ich die Übergabe und Übernahme so definieren kann das es funtkioniert.

    Desweitern habe ich irgendwie keine Idee wie ich es anstellen soll das Lehre und Schüler über die If els Verzweigung getrennt werden.

    Das ist mein gesamter Quelltext

    zeilen 1 - 40 ist die Datenbank für das Programm.

    Zeile 42 - 83 ist meine Pinfunktion

    Zeile 85 - 302 ist das Programm mit der pinfunktion die leider nicht läuft.
    Warum auch immer.

    und von Zeile 304 - 559 ist das Programm ohne Funktion - läuft allerdings auch nicht. Entweder ich kann mich anmelden mit Name und pin/ bzw mit egal was ich eingebe oder ich kann eingeben was ich will und es ist immer falsch.



  • Das ist so ziemlich das schlimmste, was mir jemals untergekommen ist. Das ist kein C++, das ist auch kein C, das ist einfach nur Scheiße.

    Bitte erklär uns kurz und verständlich, was das Ding tun soll, dann kann man versuchen, dir Ratschläge zu geben. Mir ist nicht klar, was das Ding tun soll.



  • 314159265358979 schrieb:

    das ist einfach nur Scheiße.

    Da muss ich dem guten Herr Pi leider recht geben. Viele Casts, Sprungbefehle, nicht existierende Header ( <iostream.h> ), rohe Arrays, mehrdeutige Zahlen (69 😃 ), Mehrdeutigkeit bei Bezeichnern, kein Vertrauen auf RAII, unlokale Deklarationen, Rechtschreibefehler, unnötige sleep -Befehle, Unwissenheit über implizite Konvertierungen und Operatorprioritäten und einen schlechten Codestil hast du...



  • EOutOfResources schrieb:

    314159265358979 schrieb:

    das ist einfach nur Scheiße.

    Da muss ich dem guten Herr Pi leider recht geben. Viele Casts, Sprungbefehle, nicht existierende Header ( <iostream.h> ), rohe Arrays, mehrdeutige Zahlen (69 😃 ), Mehrdeutigkeit bei Bezeichnern, kein Vertrauen auf RAII, unlokale Deklarationen, Rechtschreibefehler, unnötige sleep -Befehle, Unwissenheit über implizite Konvertierungen und Operatorprioritäten und einen schlechten Codestil hast du...

    An statt Objektiv zu beurteilen und zu hinterfragen was für einen kenntniss stand man hat - wird genadenlos alles schlecht gemacht.

    Ich weiss selber das , mein Program vom Aufbau her noch nicht das schönste ist, und anstatt zu sagen das ist unnötig und das ist "Scheiße", wäre mir mit gezielten Fragen und Lösungsansätzen mehr geholfen.

    Ich habe weder Programmierung studiert noch mache ich das Professionell - wenn due wissen würdest welchen Wissenstand ich habe, würdest du wahrscheinlich ein wenig anders Argumentiern.

    **Das Programm soll von 2 Arten von Anwendern zu benutzen sein.
    Es sollen min 15 Anwender so definiert werden das Sie max 100 Additionsaufgaben rechnen können, nach jeder Aufgabe Ihren Punktestand erfahren und gefragt werden ob Sie noch eine weitere Aufgabe rechnen wollen. Nach der 100. Aufgabe ist Schluss und der Anwender Schüler erhält seine Bewertung.

    Die 2. Art von Anwendern soll:
    1. nicht rechnen!
    2. nach einzelnen Schülern suchen können,
    3. neue Schüler anlegen können,
    4. die Variablen Aufgabenanzahl und Punkte sollen zurückzusetzen sein,
    5. der durchschnitt der Gruppe Schüler soll Abrufbar sein,
    6. die Ergebnisse aller Schüler soll angezeigt werden,

    Beide Arten von Anwendern haben einen Anmeldenamen und ein Kennwort/Passsword/PIN - diese sollen geprüft werden und spätesten nach der dritten fehlerhaften Eingabe ist Schluss (für heute).**



  • Hab es überflogen.
    Mit welchem Compiler willst du den Quelltext übersetzen?

    Ja, es gibt mir bekannte Compiler, die das so haben wollten. Aber heute wird mit denen nur selten etwas gemacht.

    Also warum C++ im Stil der 90er und für den damaligen Marktführer auf dem Gebiet?

    MfG f.-th.



  • f.-th. schrieb:

    Hab es überflogen.
    Mit welchem Compiler willst du den Quelltext übersetzen?

    Ja, es gibt mir bekannte Compiler, die das so haben wollten. Aber heute wird mit denen nur selten etwas gemacht.

    Also warum C++ im Stil der 90er und für den damaligen Marktführer auf dem Gebiet?

    MfG f.-th.

    Ich Nutze den CPPTrain2
    hier der Link dazu:
    http://www.t-cassebaum.de/

    Ja, warum - weil er seinen Zweck erfüllt, os ist und mit für den Anfang empfohlen wurde.



  • Der gute Herr Cassebaum lebt im letzten Jahrtausend. iostream.h ist seit 1998 nicht mehr im Standard enthalten. Wenn du C++ lernen möchtest, kaufe dir ein gutes Buch, sonst verplemperst du deine Zeit! Die Frage nach einem guten Buch wird hier im Forum immer wieder gestellt, wenn du die Suchfunktion benutzt solltest du also genug Vorschläge finden.



  • Also wurdest du in deine Schule/deinem Lehrinstitut dazu angehalten CPPTrain2 zu nutzen? CPPTrain2 ist ja nur eine IDE wo du den Quelltext eingibst oder erstellst, wenn ich das nicht falsch gelesen hab.

    Wenn der Compiler der free bcc ist, der kann auch modernen Quelltext übersetzen.

    Schau mal ob dein CPPTrain2 mit so etwas klar kommt:

    #include <iostream>  // so sehen Header heute aus
    
    using namespace std; // oder, wenn das nicht gewollt std:: entsprechend ergänzen
    
    int main()
    {
      cout << "Hello World!" << endl;
      cout << "Welcome to C++ Programming" << endl; 
    }
    

    Hast du in deine Unterlagen auch nur die alten Beispiele?

    MfG f.-th.



  • #include <iostream.h>  // so sehen Header heute aus
    
    using namespace std; // oder, wenn das nicht gewollt std:: entsprechend ergänzen
    
    int main()
    {
      cout << "Hello World!" << endl;
      cout << "Welcome to C++ Programming" << endl;
      getchar();
    }
    

    so funktioniert es - ohne getchar(); schließt es sofort.

    Ja in meinen Aufzeichnungen sind mehr oder weniger nur Dinge von den Anfängen von C++ enthalten - das nötigste!

    Zum Anfang der lehrphase programmierung hieß es, wir sollen keine Programme programmieren nur lesen und verstehen.
    Und dann zum Abschluss so eine Aufgabe!



  • Danos schrieb:

    #include <iostream.h>  // so sehen Header heute aus
    

    Warum hast du jetzt doch wieder ein .h eingefügt? So sehen Header eben nicht aus!



  • #include <iostream>  // so sehen Header heute aus
    


  • #include <iostream> // so sehen Header heute aus

    using namespace std; // oder, wenn das nicht gewollt std:: entsprechend ergänzen
    
    int main()
    {
      cout << "Hello World!" << endl;
      cout << "Welcome to C++ Programming" << endl;
      getchar();
    }
    

    Sorry - So ist es korrekt! 😃



  • Bei der IDE ist Volkards C++ Kurs dabei, wo auch noch iostream.h verwendet wurde. 😃



  • "schließt sofort" -> die Beiträge hier im Forum können wir kaum noch zählen 😃

    Ihr sollt Consolen-Programme auch auf der Console ausführen 👍

    So zurück zur Basis.

    Hier mal ein wenig Quelltext:

    // Additionsaufgabengenerator
    
    #include <iostream>
    #include <string>
    
    using namespace std;
    
    struct person
    {
    	string name;
    	int pinnummer;		// wenn andere Zeichen oder Buchstaben möglich sein sollen -> ändern
    	bool sl;			// schüler/lehrer;
    	int heutenichtmehr; // nach Fehleingabe Tageszahl - sonst 0
    } nutzer;
    
    void dummy()  // nur zum Test
    {
    	nutzer.name = "maier";
    	nutzer.pinnummer = 1234;
    	nutzer.sl = 1;
    	nutzer.heutenichtmehr = -3;
    }
    
    int nutzerident()
    {
    	int versuch = 0;
    	string nname;
    	int pinn;
    	do
    	{
    		cout << "Bitte geben sie ihren Namen ein: ";
    		cin >> nname;
    		cout << endl << "Pin eingeben: ";
    		cin >> pinn;
    		if(nutzer.name == nname)
    		{
    		    versuch = 3;
                nutzer.heutenichtmehr = 0;
            }
            else
            {
                versuch++;
    		    // Datum in Struct eintragen -> ergänzen
                nutzer.heutenichtmehr = 31;  // 31 -> Dummy
            }
        } while (versuch < 3);
    	return (nutzer.heutenichtmehr);
    
    }
    
    void lehrer()
    {
        cout << "Lehrerfunktion" << endl;
        // Gruppen, Schüler + Aufgaben -> ideal auch auf Funktionsgruppen teilen
    }
    
    void schueler()
    {
        cout << "Schülerfunktion" << endl;
        // Gruppen, Schüler + Aufgaben -> ideal auch auf Funktionsgruppen teilen
    }
    
    int main()
    {
    	cout << "Additionsaufgabengenerator" << endl << endl;
    	dummy();
    	cout << "Nutzeridentifikation" << endl;
    	if(!nutzerident())
    	{
    	    cout << "Nutzer identifiziert" << endl;
    	    if(nutzer.sl)
                lehrer();
            else
                schueler(); // ue damit es einfacher wird ? <- Ansichtssache
    	}
    	else
    	{
    	    cout << "Identifikation fehlerhaft" << endl << "Programm beendet";
    		// Konsequenz, wenn nicht identifiziert
    	}
    }
    

    hoffe mal das kein grosser Bock drin ist und das halbwegs den Kenntnissen des Betragserstellers entgegen kommt. Der Quellcode löst noch nicht die ganze Aufgabe. Ein wenig Arbeit soll ja noch bleiben. 😃

    Auf Konsole testen, hatte ich schon geschrieben 😕

    MfG f.-th.



  • Schön und gut - allerdings ist somit mein Problem nicht behoben meine Datenbank sieht so aus.

    #include <iostream>
    #include <fstream>
    int main()
    {
      int Punkte[69],i,Aufgabenanzahl[69];
      char Name[69][100];
      char Pin[69][12];
      //int Lehrer[69];
      char Anwender[69][20];
      ofstream Abspeichern;
      for(i=1;i<=2;i++)
      {
        Punkte[i]=0;
        Aufgabenanzahl[i]=0;
        cout<<"Gib den "<<i<<". Namen ein: ";
        cin >>Name[i];
        cout<<"Gib den "<<i<<". Pin ein: ";
        cin >>Pin[i];
        cout<< "Ist "<<i<<" ein Lehrer oder Schüler?"; //(wenn ja gib eine 1 ein, wenn nicht eine 0)
        cin >>Anwender[i];
        /*if( Eingabe[i] =='j'  )   // Bedingung
        { 
          Lehrer[i]=1;       // wahr-Block
        }
        else
        {  
          Lehrer[i]=0;      // falsch-Block
        }*/
      }
      Abspeichern.open("Rechnerei.dat",ios::out | ios::binary);
      Abspeichern.write(reinterpret_cast<char*>(Punkte),69*sizeof(int));
      Abspeichern.write(reinterpret_cast<char*>(Aufgabenanzahl),69*sizeof(int));
      Abspeichern.write(reinterpret_cast<char*>(Name),69*sizeof(char[100]));
      Abspeichern.write(reinterpret_cast<char*>(Pin),69*sizeof(char[100]));
      Abspeichern.write(reinterpret_cast<char*>(Anwender),69*sizeof(char[100]));
      Abspeichern.close();
      return 0;
    }
    

    meine Funktion :

    bool pineingabe(char richtigepin[12])
    { char eingabepin[12];
      int Versuch,i;
      char Pin [69][12];
      !strcmp(eingabepin,Pin[i]);
      bool ergebnis;
      Versuch=0;
      top:
      cout << "Bitte die Pin eingeben: "; // Ausgabe
      cin >> eingabepin; // Eingabe
    
         if( Versuch <2 )   // Bedingung
         {
             Versuch++;
    
            if( eingabepin==richtigepin )   // Bedingung
            { ergebnis=true;       // wahr-Block
              cout<< " Vielen Dank für Ihre Anmeldung.";
              sleep(2);
              clrscr();
            }
            else
            {//ergebnis= false;
             cout<< "Die "<<Versuch<<".Eingabe war nicht korrekt. Bitte Versuchen Sie es erneut.";
             sleep(2);
             clrscr();
             goto top;
            }
    
         }
         else
         {
           cout<< " Die Logindaten sind verkehrt! \n Es ist keine weitere Eingabe möglich!";
           sleep(2);
           ergebnis = false;
           //exit(0); 
                 // falsch-Block
         }
    
          return (ergebnis);
    }
    

    Und das ist das Programm:
    Und hier Funktionieren die Übernahme und Übergabewerte für die Funktion nicht!
    Kann mir bitte dort jemand weiterhelfen. Und einen Vorschlag machen für die Unterteilung lehrer/Schüler?

    #include <iostream>
    #include <conio>
    #include <fstream>
    #include <dos>
    #include "Funktionpin.cpp"
    
    int main()
    {
      int Punkte[69],Aufgabenanzahl[69],i,Auswahl;
      char Name[69][100], Anmeldename[100],Anwender[69][20],Lehrer[20];
      char Pin[69][12],Anmeldepin[12],eingabepin[12];
      //string Ausgabepinname="unbekannte Pin";
      //Variablen nur zum Rechnen:
      int zahl1, zahl2, ergebnis, loesung,n;
      char wiederholung, Ende;
      string note;
      int prozente;
    
    // Hier beginnt das Einlesen der Daten.
      ifstream Einlesen;
      Einlesen.open("Rechnerei.dat",ios::in | ios::binary);
      Einlesen.read(reinterpret_cast<char*>(Punkte),69*sizeof(int));
      Einlesen.read(reinterpret_cast<char*>(Aufgabenanzahl),69*sizeof(int));
      Einlesen.read(reinterpret_cast<char*>(Name),69*sizeof(char[100]));
      Einlesen.read(reinterpret_cast<char*>(Pin),69*sizeof(char[100]));
      Einlesen.read(reinterpret_cast<char*>(Anwender),69*sizeof(char[100]));
      Einlesen.close();
    //Hier endet das Einlesen der Daten.
    
      cout << "Herzlich Wilkommen beim Mathetrainer 01/2011"; // Ausgabe
    //Hier beginnt das Anmelden.
      gotoxy (30,12);
    
      cout << "Geben Sie Ihren Namen ein: ";
      cin >> Anmeldename;
      //cout << "Geben Sie Ihren Pin ein: ";
      //cin >> Anmeldepin; //clrscr ();
    
        for(i=1;i<=69;i++)
          {            
    
                            if(!strcmp(Anmeldename,Name[i]) )
                            { 
    
                             cout<< "Anmeldename gefunden\n";
                             bool pin;
                             pin=pineingabe(pin);
                             if( pin==true )   // Bedingung
                             { 
                             cout<<"Programm läuft!";       // wahr-Block
                             } 
                              n=i;
                            } 
    
          }
    
     /*if( Ausgabepinname != "unbekannte Pin" )   
     { cout <<"  Name: " << Ausgabepinname;       
     }
     else
     { cout <<"  Fehler: " << Ausgabepinname;
     }*/ 
    
     //Definition Lehrer / Schüler
     //xy:
     //if( Lehrer == Anwender[i] )   // Bedingung
     //{    
    
            cout<<"Guten Tag Lehrer " << Name[i]; sleep (1); clrscr(); gotoxy(20,2);
            cout << " Willkommen im Hauptmenü!!" << endl << endl << endl << endl << endl << endl; // Ausgabe: Begrüßung im Menü
            sleep (3);  // wahr-Block
            do
            { 
              cout << "\t1.\t Einen neuen Nutzer anlegen.\n" ; // Ausgabe
              cout << "\t2.\t Ergebnisse einsehen.\n" ; // Ausgabe
              cout << "\t3.\t Zurücksetzungsoption.\n" ; // Ausgabe
              cout << "\t4.\t Ergebnissübersicht der Gruppe.\n" ; // Ausgabe
              cout << "\t5.\t Durchschnitsleistung der Gruppe.\n" ; // Ausgabe
              cout << "\t6.\t Programm beenden.\n" ; // Ausgabe
              cout << "\n\n\t\t Bitte treffen Sie Ihre Auswahl:\t" ; // Ausgabe
              cin >> Auswahl; // Eingabe
              switch( Auswahl )          // Auswahlausdruck
              { case  1 :   break; // Fall 1
                case  2 :   break; // Fall 2
                case  3 :   break;  // Fall n
                case  4 :   for( i=1 ;i<=69  ;i++  )// Aus Aufgaeb 710
                            { 
                             cout<< i <<"Name :\t"<<Name[i]<<"Aufgaben :\t"<<Aufgabenanzahl[i]<<"\t"<<Punkte[i]<<" Punkte von "<<Aufgabenanzahl[i]<<"möglichen"<<endl;
                                   // Schleifenkörper-Block
                            }
    
                break; // Fall 1
                case  5 :   break; // Fall 2
                case  6 :   cout<< "Sind Sie sicher das Sie das Progamm beenden wollen? (j/n)" ;
                            cin>> Ende;
                            break;  // Fall n
               default:  ;  cout << " Die Eingabe war nicht korreket, bitte wählen Sie einen der Punkte 1-6.";
                            Ende = 'n';    // sonst-Fall
              }
    
            } while(Ende != 'j' ); // Solange-Bedingung
     /*}
     else
     {        // falsch-Block
    
    //Hier beginnt das Rechenprogramm.
      randomize();
      Aufgabenanzahl[n];
      do
      {  
    
        if (Aufgabenanzahl[n]<5)
        {   
           clrscr ();
           gotoxy (20,10);
           Aufgabenanzahl[n]++;
           zahl1 = random(100);
           zahl2 = random(100);
           ergebnis = zahl1 + zahl2;
           cout << "Aufgabe " <<  Aufgabenanzahl[n] << " von 100" << endl;
           gotoxy (25,15);  
           cout << zahl1 << " + " << zahl2 << " = "; // Ausgabe
           //clrscr ();
           cin >> loesung;
           if( loesung == ergebnis )   // Bedingung
           { 
           clrscr (); 
           gotoxy (25,11);
           cout << "Das hast Du richtig gerechnet.";  // wahr-Block
           Punkte[n] = Punkte[n] + 1;
           cout << " Du erhälst 1 Punkt" << endl; sleep (1);
           }
           else
           { 
           clrscr (); sleep (1);
           cout << "Das hast Du leider falsch gerechnet" << endl; sleep (2);      // falsch-Block
           }
           clrscr(); gotoxy (25,11);
           if(Aufgabenanzahl[n]<5  )   // Bedingung
           { 
             cout << "Möchtest Du eine weitere Aufgabe rechnen (j/n)? ";
             cin >> wiederholung;       // wahr-Block
           }
           else
           { 
             wiederholung = 'n';
             cout<< "Das Maximum ist erreicht";       // falsch-Block
           }
    
        }   
        else   
        {
         clrscr (); sleep (1);
         wiederholung = 'n';
         cout << "Es ist keine weitere Aufgabe möglich. Du hast 100 von 100 Aufgaben gerechnet." << endl;       // 100 Aufgaben sind erreicht
        }
      }
      while (wiederholung == 'j');
      cout << "Dein Gesamtpunktestand beträgt: " << Punkte[n] << endl;
      //*cout << "Dein Gesamtpunktestand beträgt: " << Punkte << endl <<endl;
      prozente = Punkte[n]*100/Aufgabenanzahl[n];  
      cout << "Du hast "<< prozente << " Prozent erreicht!";
      if(prozente < 26 ){note = "ungenügend";}
      else
      { if(prozente < 51 ){note = "mangelhaft";}
        else 
        {if(prozente < 66 ){note = "ausreichend";}
         else
         {if(prozente < 81 ){note = "befriedigend";}
          else
          { if(prozente < 95 ){note = "gut";}
            else { note = "sehr gut";}
         }
        }
       }
      }   
      cout << " Das entspricht der Note " <<note;
      getchar(); 
     }*/ 
    //Hier beginnt das Abmelden/Abspeichern.
      ofstream Abspeichern;
      Abspeichern.open("Rechnerei.dat",ios::out | ios::binary);
      Abspeichern.write(reinterpret_cast<char*>(Punkte),69*sizeof(int));
      Abspeichern.write(reinterpret_cast<char*>(Aufgabenanzahl),69*sizeof(int));
      Abspeichern.write(reinterpret_cast<char*>(Name),69*sizeof(char[100]));
      Abspeichern.write(reinterpret_cast<char*>(Pin),69*sizeof(char[100]));
      Abspeichern.write(reinterpret_cast<char*>(Anwender),69*sizeof(char[100]));
      Abspeichern.close();
    //Da kommt nur noch das dicke Ende.
      clrscr (); gotoxy (25,10);
      cout << "Das Programm wird nun beendet"; // Ausgabe
      sleep (2);
      clrscr ();
      gotoxy (25,12);
      cout << "Auf Wiedersehn, bis zum nächsten Mal."; // Ausgabe
      sleep (2);
      //getchar();
      return 0;
    }
    

Anmelden zum Antworten