Lerne c++ bei schleifenende hilfe.



  • Hello World
    so beginnen viele Programme hier
    meins nicht 😃

    Auch ich habe mich entschlossen eine Programiersprache zu lernen.
    c++ find ich echt bedienerfreundlich für einen null mit Computer zu tun gehabten.

    Ich habe mich viel belesen und versuche echt so viel wie möglich alleine hinzubekommen. Manchmal fehlt es halt am logischen anstoss.

    zu meinen prog. es soll txt eingabe speichern und lesen und immer wieder eine neue eingabe zulassen.

    hier meine frage.

    wie setze ich mein prog in die schleife ?
    ich setze mal den Code hier drunter damit ihr sehen könnt wie weit ich damit bin
    PS es läuft soweit wie ich es will nur nicht in der schleife

    #include <string.h>
    #include <iostream>
    #include <string>
    #include <fstream>
    
    using namespace std;
    
    int main(void)
    {
    
     char ent =false, J;
    do{
    		ifstream eingaben;
    		string zeile;
    		eingaben.open("Adressen.txt");
    		if (eingaben.is_open()) {
    			cout << " Vorhanden Filme sind...\n";
    			while (getline(eingaben, zeile)) {
    
    				cout << " " << zeile << endl;
    			}
    			eingaben.close();
    
    		}
    
    		else {
    			cout << " *+$.Noch keine Filme vorhanden.$+*\n";
    			cout << "\n";
    		}
    		string Adressen;
    		cout << "*********************************************Willkommen*********************************************\n"
    			<< " ****************************************Movie.Adress.Saver****************************************\n"
    			<< "\n"
    			<< "Eingabe: [Name] (Adresse..https...) Enter nicht vergessen \n";
    
    		fstream Adressen1;
    		Adressen1.open("Adressen.txt", ios::out | ios::app);
    
    		getline(cin, Adressen);
    		Adressen1 << Adressen << endl;
    		Adressen1.close();
    		cout << " Weitere Eingabe?\n"
                 << "\t1 J\n"
                 << "\t2 N  : \n";
            cin >> ent;
           while (ent = '1');{
    
    		cout << "Beehren sie uns bald wieder! ;) \n";
    
    		cin.sync();
    		cin.get();
    		return 0;
    }
    

    Nicht beschimpfen was es ist... zum lernen braucht man ein Problem und das kann ich damit klären und erweitern 🙄

    Danke schon mal für die hilfe.


  • Mod

    DeepKey schrieb:

    wie setze ich mein prog in die schleife ?

    So wie gezeigt sollte es gar nicht erst kompilieren. Überprüfe deine Klammersetzung. Zu jedem { gehört genau ein } und umgekehrt. Beachte (und korrigiere entsprechend) die Warnungen des Compilers.



  • wenn du do wegnimmst und unten von 44 - 48 entfernst funktioniert es

    wie setze ich das ganze denn richtig in schleife?



  • so funktioniert er.

    #include <string.h>
    #include <iostream>
    #include <string>
    #include <fstream>
    
    using namespace std;
    
    int main(void)
    {
    
    		ifstream eingaben;
    		string zeile;
    		eingaben.open("Adressen.txt");
    		if (eingaben.is_open()) {
    			cout << " Vorhanden Filme sind...\n";
    			while (getline(eingaben, zeile)) {
    
    				cout << " " << zeile << endl;
    			}
    			eingaben.close();
    
    		}
    
    		else {
    			cout << " *+$.Noch keine Filme vorhanden.$+*\n";
    			cout << "\n";
    		}
    		string Adressen;
    		cout << "*********************************************Willkommen*********************************************\n"
    			<< " ****************************************Movie.Adress.Saver****************************************\n"
    			<< "\n"
    			<< "Eingabe: [Name] (Adresse..https...) Enter nicht vergessen \n";
    
    		fstream Adressen1;
    		Adressen1.open("Adressen.txt", ios::out | ios::app);
    
    		getline(cin, Adressen);
    		Adressen1 << Adressen << endl;
    		Adressen1.close();
    
         cout << "Beehren sie uns bald wieder!";
    
    		cin.sync();
    		cin.get();
    		return 0;
    }
    


  • So geht's richtig:

    do
    {
      // ...
      cout << " Weitere Eingabe?\n"
                 << "\t1 J\n"
                 << "\t2 N  : \n";
      cin >> ent;
    } while (ent == '1');
    


  • ich hab es jetzt so eingebaut

    #include <string.h>
    #include <iostream>
    #include <string>
    #include <fstream>
    
    using namespace std;
    
    int main(void)
    {
        do
        {
         int ent = false, j;
    		ifstream eingaben;
    		string zeile;
    		eingaben.open("Adressen.txt");
    		if (eingaben.is_open()) {
    			cout << " Vorhanden Filme sind...\n";
    			while (getline(eingaben, zeile)) {
    
    				cout << " " << zeile << endl;
    			}
    			eingaben.close();
    
    		}
    
    		else {
    			cout << " *+$.Noch keine Filme vorhanden.$+*\n";
    			cout << "\n";
    		}
    
    		string Adressen;
    		cout << "*********************************************Willkommen*********************************************\n"
    			<< " ****************************************Movie.Adress.Saver****************************************\n"
    			<< "\n"
    			<< "Eingabe: [Name] (Adresse..https...) Enter nicht vergessen \n";
    
    		fstream Adressen1;
    		Adressen1.open("Adressen.txt", ios::out | ios::app);
    
    		getline(cin, Adressen);
    		Adressen1 << Adressen << endl;
    		Adressen1.close();
    
              cout << "Noch eine?\n"
                   << "\t1 J\n"
                   << "\t2 N : ";
              cin  >> ent;
             }while (ent == '1');
              cout << "Beehren sie uns bald wieder!\n";
    
    		cin.sync();
    		cin.get();
    		return 0;
    }
    

    jetzt kommt der fehler den ich nicht verstehe

    In function int main()': 49ent' undeclared (first use this function)
    (Each undeclared identifier is reported only once for each function it appears in.)



  • int main()
    {
      do
      {
        int var_xyz = 1337;
    
        //var_xyz = 123123;
    
      } while( var_xyz != 1337 );
    }
    

    ist falsch, da var_xyz in diesem bereich nicht mehr gültig ist (nicht mehr sichtbar). das sagt dir auch die fehlermeldung

    ->

    int main()
    {
      int var_xyz = 1337;
      do
      {
    
        //var_xyz = 123123;
    
      } while( var_xyz != 1337 );
    }
    


  • zeigt er mir den nächsten fehler in Zeile cin.sync(); und cin.get??
    expected constructor, destructor, or type conversion before '.' token

    Nicht übel nehmen fange an aber da reichen die Infos noch nicht aus.

    die schleife hat er jetzt aber angenommen



  • c++ [...] bedienerfreundlich

    Im Vergleich zu Assembler vielleicht 😃



  • nee habs aber geschafft und vielen vielen dank und jetzt hab ich es auch verstanden. falls mal wieder was sein sollte komme ich nochmal auf euch zurück 👍 😃



  • Wie man eine do-while-Schleife benutzt steht in jedem Lehrbuch. Die Gefahr bei solchen Leuten wie dir ist groß, dass sie wegen jedem ach so kleinen Furz ein Thema aufmachen.

    DeepKey schrieb:

    jetzt hab ich es auch verstanden.

    Im Leben nicht!



  • ist es möglich wenn ein Programm eine txt.datei mit einer Zeile schreibt die Auswählbar zu machen und dann mit Funktionen zu bestücken?

    z.B.

    starte Programm und gebe eine Zeile ein, diese wird mit Enter bestätigt
    Zeile wird in der .txt gespeichert und wieder angezeigt

    jetzt der punkt an den ich nicht weiter komme

    im ideal fall listet er auf mit einer Nummer davor
    z.b

    [1] 1.eingabe
    [1] 2.eingabe
    .
    .usw

    jetzt kann ich auch die Nummer drücken und die Zeile umschreiben oder löschen

    dankend im vorraus für eure ideen 🙂



  • im voraus 😃



  • Ich würde prinzipiell einen vector<string> hernehmen, zu Beginn von einer Datei einlesen und am Ende damit die Datei überschreiben.

    Während das Programm läuft sind dann alle Zeilen im vector<string> gespeichert und du kannst sie ausgeben/ändern/löschen.



  • okay und wie gebe ich den vector den wert der in der zeile schon steht?



  • Einlesen und std::vector::push_back(std::string).



  • Besten dank. und für die die genervt sind von diesen "leichten" fragen

    können uns gerne mal in die küche stellen 😉 10 jahre Erfahrung in einen Bereich lassen dinge die für einen selber als Leichtigkeit existanz sind für andere doch schwieriger erscheinen.



  • DeepKey schrieb:

    10 jahre Erfahrung in einen Bereich lassen dinge die für einen selber als Leichtigkeit existanz sind für andere doch schwieriger erscheinen.

    Das ist prinzipiell zwar richtig, dennoch existiert genug Dokumentation fuer so ziemlich alles.

    Und grundsaetzlich gilt: docs lesen > rumprobieren > ohne probieren "nach hilfe schreien"



  • übe und lerne jetzt nicht erst ne Woche. will auch nicht kopieren und deswegen versuche ich mich an eigene Programme. wenn aber ein Problem nach längeren suchen nicht gelöst wird und das beinhaltet probieren, suche ich Hilfe .
    was soll man denn sonst machen wenn man es nicht versteht. sry hier sitzt kein prof. neben mir der mir meine Fragen beantwortet.

    habe es jetzt so das er mir eine Auflistung macht. nun will ich es nur noch auswählen und direkt im WebBrowser öffnen können und oder eine zeile löschen und aufrücken lassen.

    #include <string.h>
    #include <iostream>
    #include <string>
    #include <fstream>
    #include <vector>
    
    using namespace std;
    
    int main(void)
    {
        int ende = 1;
        do{
    
            		cout << "*****************************************************Willkommen*********************************************************\n"
    			<< " ************************************************Movie.Adress.Saver****************************************************\n"
    			<< "\n";
    
           	cin.sync();
    
            ifstream eingaben;
    		string zeile;
            int z = 1;
            vector <int > zeil (10);
        for (int z= 1 ; z < zeil.size(); z++){
          zeil [z] = z ;
     }
    
            eingaben.open("Adressen.txt");
    
        	if (eingaben.is_open()) {
    			cout << " Vorhanden Filme sind...\n"
                     << "\n";
         for (int z = 1 ; z < zeil.size (); z++){
            while (getline(eingaben, zeile)) {
             cout << zeil [z++] << ": "  << zeile << " " << std::endl;
    
    }
    			eingaben.close();
    }}
    
    		else {
    			cout << " *+$.Noch keine Filme vorhanden.$+*\n";
    			cout << "\n";
    }
                cout << "\n";
                cout << "                           #*'Eingabe: [Name]  (Adresse..https...) Enter nicht vergessen'*# ;) \n";
    
                fstream Adressen1;
    	      	Adressen1.open("Adressen.txt", ios::out | ios::app);
                string Adressen;
    	       	getline(cin, Adressen);
    		    Adressen1 << Adressen << endl;
    	     	Adressen1.close();
    
        cout <<"\n";
        cout << "weitere Adresse \t1 Ja \t2 Nein \n";
        cin >> ende;
        system ("cls");
    
    }while (ende ==1 ); 
    
         cout << "***********************************************Beehren sie uns bald wieder**********************************************\n"
                 "\n"
                 "?????...Taste feur beenden druecken.";
    
    		cin.sync();
    		cin.get();
    		return 0;
    }
    

    Falls einer eine Idee hat nimm ich sie gerne entgegen. Also bisher bin ich zufrieden weil es das macht was ich bisher wollte.

    Ps. Als blutiger Anfänger hab ich zu diesen Code erst 2 wirkliche Fragen gestellt 😉



  • Als blutiger Anfänger hab ich zu diesen Code erst 2 wirkliche Fragen gestellt

    Nenn es wie du willst, dein Geschwafel nervt!


Log in to reply