Fehler bei Funktionsaufruf mit cout



  • Golfi1812 schrieb:

    Nein, ich möchte ein Programm schreiben, dass einen Satz nach seiner richtigkeit überprüft.

    Wie gesagt, ein ehrgeiziges Projekt - noch nicht einmal MS Word kriegt das immer richtig hin.
    (PS: Ist der Satz "Fische fliegen" für dirch eigentlich richtig?)



  • Topic schrieb:

    Hi, setz mal
    ein

    int sub_verb()
    

    vor die main()

    Eher ein

    int sub_verb();
    

    , sonst kommt er gleich und beschwert sich über neue Fehlermeldungen vom Compiler 😉

    Wenn du mehrere Funktionen hast, eignen sich auch Header und die dazu passenden Implementationsdateien anstatt alles in eine Datei zu hauen.
    Und wenn dein Projekt größer wird, würde ich mir auch mal was anderes wegen den globalen Variablen überlegen, denn wenn du da Tausende von hast, ist das gar kein guter Stil.

    Lg freeG



  • Habs hinbekommen:

    #include "../../../std_lib_facilities.h"
    #include "conio.h"
    
    	vector<string>substantive;
    	vector<string>konjunktion;
    	vector<string>verben;
    
    	void init()
    	{
    		substantive.push_back("Vögel");
    		substantive.push_back("Computer");
    		substantive.push_back("Fische");
    
    		konjunktion.push_back("und");
    		konjunktion.push_back("aber");
    		konjunktion.push_back("oder");
    
    		verben.push_back("fliegen");
    		verben.push_back("rechnen");
    		verben.push_back("schwimmen");
    	}
    
    	bool substantiv(string w)
    	{
    		for(int i = 0; i<substantive.size(); ++i)
    			if (w==substantive[i]) return true;
    		return false;	
    	}
    
    	bool verb(string w)
    	{
    		for(int i = 0; i<verben.size(); ++i)
    			if (w==verben[i]) return true;
    		return false;
    	}
    
    	bool konjunktionen(string w)
    	{
    		for(int i = 0; i<konjunktion.size(); ++i)
    			if (w==konjunktion[i]) return true;
    		return false;
    	}
    
    	bool satz()
    	{
    		string w;
    		cin>>w;
    		if(!substantiv(w)) return false;
    
    		string w2;
    		cin>>w2;
    		if(!verb(w2)) return false;
    
    		string w3;
    		cin>>w3;
    		if(w3 == ".") return true;
    		if(!konjunktionen(w3)) return false;
    		return satz();
        }
    
    	int main()
    	{
    		try
    {
    	cout << "Gebven sie einen Satz ein (terminated by a dot):\n";
    
    	init();	
    
    	while (cin) {
    			bool b = satz();
    			if (b)
    				cout << "OK\n";
    			else
    				cout << "not OK\n";
    			cout << "Try again: ";
    	}
    
    	keep_window_open("~");	
    }
    catch (runtime_error e) {	
    	cout << e.what() << '\n';
    	keep_window_open("~");	
    }
    
    	}
    

    Die Eingabe: "Fische schwimmen und Vögel fliegen . " Wir als Okay angezeigt.

    Hingegen: "schwimmen Fische und Vögel fliegen." als falsch.

    Das war mein Ziel.

    mfg Golfi1812



  • Mir ist nur grade aufgefallen,dass er Probleme mit Umlauten hat. In diesem fall Vögel. Das wir als falsch angezeigt wenn es im Satz vorkommt auch wenn alles richtig ist.

    Naja muss eben zu Voegel im vector geändert werden.



  • Was soll das denn sein?

    #include "../../../std_lib_facilities.h"
    


  • Das ist die initialisierung der Standartbibilothek std_lib_facilities.h .

    Sie muss in manchen Fällen mit diesen Vorzeichen ../../../ initialisiert werden,damit sie greift.



  • CStoll schrieb:

    Golfi1812 schrieb:

    Nein, ich möchte ein Programm schreiben, dass einen Satz nach seiner richtigkeit überprüft.

    Wie gesagt, ein ehrgeiziges Projekt - noch nicht einmal MS Word kriegt das immer richtig hin.

    Ist das nicht ein Forschungsgebiet der Linguistik... seit Jahrzehnten?

    Aber ich denke mal, das "Projekt" dient nur zur Übung, und das ist doch 'ne gute Sache. Das Beispiel im Code oben ist jedenfalls aus dem Stroustrup-Buch (dem Lehrbuch, nicht der Bibel).



  • manni66 schrieb:

    Was soll das denn sein?

    #include "../../../std_lib_facilities.h"
    

    Eine Hilfsdatei als "Universalheader" aus genanntem Lehrbuch, in dem für den Anfang kompliziertere Dinge "versteckt" werden.



  • Richtig erkannt.

    Das ganze dient Übungszwecken!

    PS: Zumindestens schaue ich zur Zeit öfters in Bjarne's Buch als in die Bibel.
    Gott vergib mir meine Sünden.

    Nein Spaß bei seite 😋



  • dennis.cpp schrieb:

    CStoll schrieb:

    Golfi1812 schrieb:

    Nein, ich möchte ein Programm schreiben, dass einen Satz nach seiner richtigkeit überprüft.

    Wie gesagt, ein ehrgeiziges Projekt - noch nicht einmal MS Word kriegt das immer richtig hin.

    Ist das nicht ein Forschungsgebiet der Linguistik... seit Jahrzehnten?

    Keine Ahnung, da bin ich nicht auf dem aktuellen Stand 😃

    @Golfi: Hast du schon das Kapitel über die STL-Algorithmen durchgenommen? Wenn ja, ich würde die substantiv() etc Funktionen mit std::find() umsetzen.

    Was die Umlaute angeht, solltest du dich ein wenig mit den verschiedenen Codepages und ANSI-Codierung beschäftigen.


Anmelden zum Antworten