Problem mit Bußgeldberechner



  • Na!

    ich habe da ein Problem, und zwar sitz ich gerade in der Schule und wir sollen ein Bußgeldberechner programmieren.
    Ist ja alles schön und gut, aber es funktioniert nicht so wie es funktionieren soll...

    vllt könnt ihr mir ja helfen !?!?!

    wär ja mal echt cool...

    mfg Sunnyboy2004

    #include <iostream.h>
    #include <fstream.h>
    #include <stdio.h>
    int satz_zahl = 0;
    
    //===================================================
    			struct adressen
    			 {
         					char vorname[50];
    						char nachname[50];
             				char strasse[25];
          					char hnummer[15];
    						char ort[25];
    						char plz[10];
    						char telefon[15];
    						char handy[20];
    						char eMail[20];
    						char bday[10];
    						char bort[15];
    						float geschw;
    						float hgesch;
    
    			};
    		struct adressen adressdaten[10];
    
    //===================================================
    
    //--------------------------------------------------
    
    		// Eingabe der Adressen
    
    		void adr_ein(int index)
    
    			{
    
    						   cout << "!!! Alle Angaben bitte OHNE LEERZEICHEN eingeben !!!" << endl;
    						   cout << "= = = = = = = = = = = = = = = = = = = = = = = = = = ="<<endl;
    						   cout << endl;
    						   cout << endl;
    						   cout << endl;
    
    						   cout << "Vorname:\t\t";
    						   cin  >> adressdaten[index].vorname;
    						   cout << endl;
    
    						   cout << "Nachname:\t\t";
    						   cin  >> adressdaten[index].nachname;
    						   cout << endl;
    
    						   cout << "Strasse:\t\t";
    						   cin  >> adressdaten[index].strasse;
    						   cout << endl;
    
    						   cout << "Hausnummer:\t\t";
    						   cin >> adressdaten[index].hnummer;
    						   cout << endl;
    
    						   cout << "Ort:\t\t\t";
    						   cin  >> adressdaten[index].ort;
    						   cout << endl;
    
    						   cout << "Postleitzahl:\t\t";
    						   cin  >> adressdaten[index].plz;
    						   cout << endl;
    
    						   cout << "Geburtsort:\t\t";
    						   cin  >> adressdaten[index].bort;
    						   cout << endl;
    
    						   cout << "Geburtstag:\t\t";
    						   cin  >> adressdaten[index].bday;
    						   cout << endl;
    
    						   cout << "Telefon:\t\t";
    						   cin  >> adressdaten[index].telefon;
    						   cout << endl;
    
    						   cout << "Handy:\t\t\t";
    						   cin  >> adressdaten[index].handy;
    						   cout << endl;
    
    						   cout << "eMail:\t\t\t";
    						   cin  >> adressdaten[index].eMail;
    						   cout << endl;
    
    						   cout << "Erlaubte Geschwindigkeit:\t\t\t";
    						   cin  >> adressdaten[index].hgesch;
    						   cout << endl;
    
    						   cout << "Gefahrene Geschwindigkeit:\t\t\t";
    						   cin  >> adressdaten[index].geschw;
    						   cout << endl;
    
    			}
    
    //--------------------------------------------------
    
    		// Adressdaten anzeigen lassen
    
    		int v_ueber;
    
    		void adr_zeig(int index)
    			{
    									   cout << "Vorname:\t\t";
    									   cout << adressdaten[index].vorname;
    										cout << endl;
    
    									   cout << "Nachname:\t\t";
    									   cout << adressdaten[index].nachname;
    										cout << endl;
    
    									   cout << "Strasse:\t\t";
    									   cout << adressdaten[index].strasse;
    										cout << endl;
    
    									   cout << "Hausnummer:\t\t";
    									   cout << adressdaten[index].hnummer;
    										cout << endl;
    
    									   cout << "Ort:\t\t\t";
    									   cout << adressdaten[index].ort;
    										cout << endl;
    
    									   cout << "Postleitzahl:\t\t";
    									   cout << adressdaten[index].plz;
    									   cout << endl;
    
    									   cout << "Geburtsort:\t\t";
    									   cout << adressdaten[index].bort;
    									   cout << endl;
    
    									   cout << "Geburtstag:\t\t";
    									   cout << adressdaten[index].bday;
    									   cout << endl;
    
    									   cout << "Telefon:\t\t";
    									   cout << adressdaten[index].telefon;
    										cout << endl;
    
    									   cout << "Handy:\t\t\t";
    									   cout << adressdaten[index].handy;
    										cout << endl;
    
    									   cout << "eMail:\t\t\t";
    									   cout << adressdaten[index].eMail;
    									   cout << endl;
    
    										cout << "Erlaubte Geschwindigkeit:\t\t\t";
    										cout << adressdaten[index].hgesch;
    										cout << endl;
    
    										cout << "Gefahrene Geschwindigkeit:\t\t\t";
    										cout << adressdaten[index].geschw;
    										cout << endl << endl;
    
    										// Bußgeldausgabe
    
    											//Rechnung
    
    									v_ueber = adressdaten[index].geschw - adressdaten[index].hgesch;
    
    										if (v_ueber>0 && v_ueber<=20)
    											cout<<"Bußgeld: 25 Euro!\n";
    
    										if (v_ueber>20 && v_ueber<=40)
    											cout<<"Bußgeld: 50 Euro!\n";
    
    										if (v_ueber>40)
    											cout<<"Bußgeld: 80 Euro und 3 Punkte in Flensburg!\n";
    											cout<<endl<<endl<<endl;
    
    		}
    
    //--------------------------------------------------
    
    	// Adressdaten lesen
    
    		int adr_lesen()
    			{
    						   fstream datei;
    						   datei.open("SPEICHER.dat", ios::in);
    						   datei >> satz_zahl;
    	    				   cout << "In der Datei befinden sich " << satz_zahl << " Datens\x84tze" << endl;
    
    	for (int i=0; i<=satz_zahl; i++)
    			 {
    							datei  >> adressdaten[i].vorname;
    							datei  >> adressdaten[i].nachname;
    							datei  >> adressdaten[i].strasse;
    							datei  >> adressdaten[i].hnummer;
    							datei  >> adressdaten[i].ort;
    							datei  >> adressdaten[i].plz;
    							datei  >> adressdaten[i].bort;
    							datei  >> adressdaten[i].bday;
    							datei  >> adressdaten[i].telefon;
    							datei  >> adressdaten[i].handy;
    							datei  >> adressdaten[i].eMail;
    							datei  >> adressdaten[i].hgesch;
    							datei  >> adressdaten[i].geschw;
    
    		     }
    
    	   datei.close();
    
    			return satz_zahl;
       }
    
    //--------------------------------------------------
    
       // Adressdaten speichern
    
    		void adr_speicher()
    			{
    						   fstream datei;
    						   datei.open("SPEICHER.dat", ios::out);
    						   datei << satz_zahl << endl;
    
    		for (int i=0; i<=satz_zahl; i++)
    			{
    
    							datei  << adressdaten[i].vorname << endl;
    							datei  << adressdaten[i].nachname << endl;
    							datei  << adressdaten[i].strasse << endl;
       							datei  << adressdaten[i].hnummer << endl;
    							datei  << adressdaten[i].ort << endl;
    							datei  << adressdaten[i].plz << endl;
    							datei  << adressdaten[i].bort << endl;
    							datei  << adressdaten[i].bday << endl;
    							datei  << adressdaten[i].telefon << endl;
    							datei  << adressdaten[i].handy << endl;
    							datei  << adressdaten[i].eMail << endl;
    							datei  << adressdaten[i].hgesch << endl;
    							datei  << adressdaten[i].geschw << endl;
    
    			}
    
    		   datei.close();
    	}
    
    //**************************************************************
    
    		// Hauptfunktion
    
    		int main()
    	{
    
    			// Alle Daten aus der Datei in die Tabelle übernehmen
    				adr_lesen();
    
    				int wahl;
    					do
    			{
       							cout << "Programm zur Adressverwaltung" << endl << endl;
    							cout << " 1) Daten eingeben" << endl;
    							cout << " 2) Daten anzeigen" << endl;
    							cout << " 5) Programmende" << endl;
    							cin >> wahl;
    
    				switch(wahl)
    					{
    
    							case 1:
    							{
    
    								adr_ein(satz_zahl);
    								satz_zahl++;
    
    							break;
    							}
    
    							case 2:
           						{
    
    								int ind = 0;
    								cout << "Welchen Datensatz zwischen 1 und " << satz_zahl<< " m\x94";
    								cout<<"chten Sie sehen?  " ;
    								cin >> ind;
    								adr_zeig(ind-1);
    
    							break;
    							}
    
    					}
    
    			}
    						while (wahl != 5);
    
    							adr_speicher();
    
    			return 0;
    
    	}
    


  • Wie wärs denn, wenn du uns sagt was nicht funktioniert?



  • Sunnyboy2004 schrieb:

    Ist ja alles schön und gut, aber es funktioniert nicht so wie es funktionieren soll...

    eine genauere fehlerbeschreibung wär schon nicht schlecht 😉



  • Sunnyboy2004 schrieb:

    Na!

    ich habe da ein Problem, und zwar sitz ich gerade in der Schule und wir sollen ein Bußgeldberechner programmieren.
    Ist ja alles schön und gut, aber es funktioniert nicht so wie es funktionieren soll...

    Wenn du noch dazuschreibst, WAS nicht funktioniert, wäre das extrem hilfreich. Ich habe zumindest keine Lust, Seitenweise Code durchzuarbeiten auf der Suche nach möglichen Fehlerstellen.

    Aber was jetzt schon auffällt - verwende statt der char[]-Elemente lieber std::string, sonst bekommst du Probleme bei überlangen Eingaben (streams prüfen nicht, ob im Eingabefeld genug Platz ist für das, was sie eintragen können).



  • ja sry hatte pause... also es ist ja so, das ich die eingabe mache, aber dann bei der ausgabe, zeigt er mir schonmal den geburtsort nicht mit an obwohl es alles wie bei den anderen ist!!!

    und wenn ich mir die dateien anzeigen lasse, nachdem ich das prog neu gestartet habe ist ab der e-mail adresse alles nach oben verschoben und meine lehrerin weiß auch nicht was es ist, finds lustig, na egal...

    mfg



  • Hi!

    Komisch, wenn ich das Programm teste kann ich keinen der genannten Fehler entdecken. 😉 Musst nur kurz genuge Infos eingeben! 🙂

    grüße



  • char email[20];
    

    also das ist definitiv zu wenig Platz für eine vernünftige Email-Adresse. Und wie ich bereits sagte, solltest du lieber std::string verwenden anstelle der char-Arrays.

    Und beim Gevurtsort dürfte auch das Problem sein, daß du mit der Eingabe des Geburtsdatums den Anfang des nächsten Elements überschreibst (der String "09.05.2006" benötigt 11 Zeichen, also landet das letzte \0 im bort-Feld).



  • ja hast du recht, habe das jetzt alles mal geändert und es geht, auch bei neustart des programms, find ich cool...

    danke..^^

    ABER

    wir sollen jetzt anstatt "cin" noch "cin.get" iwie einbauen...

    ja und es wäre nett wenn ihr mir da nochmal helfen würdet 🙂

    danke

    mfg



  • Was meinst du mit "irgendwie einbauen"? Ich würde dir auf jeden Fall empfehlen, die Stringwerte per "getline(cin,adressdaten[index].feld);" einzulesen - da brauchst du dir auch keine Gedanken mehr um das "Alle Angaben bitte OHNE LEERZEICHEN eingeben" machen 😉



  • ja hast du ja schon erklärt!

    aber das haben wir bereits versucht und es geht nicht weil dann eine zeile übersprungen wird, hmmz...

    ja und sonst ist eigentlich alles okay, bis auf die leerzeichen..^^^

    hmmz... 😕

    muss ich nochmal iwie versuchen, aber kann nicht verprechen das es klappt, könnt ihr das nicht mal versuchen? o_O

    hehe... 😕

    mfg


Anmelden zum Antworten