Benutzernamen und Pin Prüfung mit Variablen aus der Datenbank-Wie geht das?
-
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 ausWarum 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; }
-
- Benutze std::string
- Lern den Umgang mit IO-Streams. Wer reinterpret_cast für sowas braucht, der hat nicht mehr alle Tassen im Schrank.
- goto, sleep, clrscr ... Ohne Worte.
-
Noch mal, wenn
int main()im Quelltext steht, sollte das nur genau ein mal im Quelltext eines Projekts stehen.

#include "Funktionpin.cpp"ist in einem Quelltext suboptimal.
Da erstellt man eine Main.cpp, eine Funktionpin.cpp und eventuell weitere xy.cpp.
Diese compiliert man dann nacheinander und linkt die Objektdateien dann zusammen zu einem Programm.Ich gehe also davon aus das du "deinen" Quelltext nicht verstanden hast.
Wenn du meinen letzten Beitrag begriffen hättest, wäre dir vielleicht aufgefallen das der erste Quelltextabschnitt deines letzten Beitrags da drin angeschnitten worden ist.
Oder glaubst du, das wir dir hier den kompletten Quelltext einstellen? So was mach ich eventuell Heiligabend, wenn ich gut drauf bin

MfG f.-th.