Anfänger warum funktioniert das BSP nicht.



  • Ja habe das nochmal geändert und neu eingebunden. Denke der download war einfach nur falsch.
    Deine Zeile + die Zeile danach

    // requires Container<C>()
    void sort(C& c)
    {
    	std::sort(c.begin(), c.end());
    }
    
    template<typename C, typename Pred>
    // requires Container<C>() && Binary_Predicate<Value_type<C>>()
    void sort(C& c, Pred p)
    {
    	std::sort(c.begin(), c.end(), p);
    }
    
    }
    

    Vielleicht noch das resultierende Problem daraus:
    Also ich gebe nun die Komma zahlen ein beende die Eingabe mit diesem Zeichen | wie es im Buch steht. (Das Zeichen soll die Eingabe unterbinden und nur die doubles einlesen, man kann auch was anderes nehmen) Nur gibt er mir keine Cout ausgabe, sondern beendet das Programm.

    #include "std_lib_facilities.h"
    #include "stdafx.h"
    #include <cstdio>
    using namespace std;
    
    // compute mean and median temperatures
    // compute mean and median temperatures
    int main()
    {
    	cout << "gebe eine Zahl ein";
    	vector<double> temps; // temperatures
    	for (double temp; cin >> temp; ) // read into temp
    		temps.push_back(temp); // put temp into vector
    							   // compute mean temperature:
    	double sum = 0;
    	for (int x : temps) sum += x;
    	cout << "Average temperature: " << sum / temps.size() << '\n';
    	// compute median temperature:
    	sort(temps); // sort temperatures
    	cout << "Median temperature: " << temps[temps.size() / 2] << '\n';
    	return 0;
    	keep_window_open(); // <---gelesen und übernommen
    }
    

    Es geht darum Temperaturen einzulesen und auszugeben wie 2.3 4.5 6.2 4.1 usw.



  • Was sollen deine Meinung nach diese beiden Zeilen

    return 0;
    keep_window_open(); // <---gelesen und übernommen
    

    machen?



  • Th69 schrieb:

    Was sollen deine Meinung nach diese beiden Zeilen

    return 0;
    keep_window_open(); // <---gelesen und übernommen
    

    machen?

    keep_window_open; soll das Fenster davon abhalten, sich gleich zu schließen nach dem durchlauf
    return 0; habe es einfach ausprobiert ob es was bringt

    habe das jetzt einfach mal so gelöst..

    ---------
    Man muss bei visual Studio Strg + F5 drücken um die Console offen zu halten. Somit funktioniert jetzt alles. Es hat zwar gedauert,aber es klappt 👍
    Danke für eure Hilfe.



  • du weißt, dass sämtliche anweisungen nach return niemals erreicht werden?



  • nein. Woher auch^^, muss es erstmal alles ausprobieren.

    #include "std_lib_facilities.h"
    
    #include <cstdio>
    using namespace std;
    
    // compute mean and median temperatures
    // compute mean and median temperatures
    int main()
    {
    
    	cout << "gebe eine Zahl ein";
    
    	vector<double> temps; // temperatures
    	for (double temp; cin >> temp; ) // read into temp
    		temps.push_back(temp); // put temp into vector
    							   // compute mean temperature:
    	double sum = 0;
    	for (int x : temps) sum += x;
    	cout << "Average temperature: " << sum / temps.size() << '\n';
    	// compute median temperature:
    	sort(temps); // sort temperatures
    	cout << "Median temperature: " << temps[temps.size() / 2] << '\n';
    
    }
    

    funktioniert genau so wie es im Buch steht. Das erste Problem war die #include "std_lib_facilities.h", welche fehlerhaft war. Das zweite Problem bestand darin, dass das Fenster sich geschlossen hat. Welches nun auch so funktioniert wie es soll.



  • wie alles ausprobieren? funktionen sind grundlegende sprachelemente, die man gleich nach ein- und ausgabe lernt.

    ist jetzt nur ein gut gemeinter ratschlag, aber wie wäre es mit einem vernünftigen lehrbuch?



  • HansKlaus schrieb:

    wie alles ausprobieren? funktionen sind grundlegende sprachelemente, die man gleich nach ein- und ausgabe lernt.

    ist jetzt nur ein gut gemeinter ratschlag, aber wie wäre es mit einem vernünftigen lehrbuch?

    Habe das und nutze es
    Programming: Principles and Practice Using C++ (2nd Edition) finde das ok



  • evev schrieb:

    vector<double> temps; // temperatures
    (...)
    	double sum = 0;
    	for (int x : temps) sum += x;
    	cout << "Average temperature: " << sum / temps.size() << '\n';
    

    funktioniert genau so wie es im Buch steht.

    So steht das im Buch?
    Was ist denn der mittlere Temperatur, wenn man nur eine Temperatur eingibt, zum Beispiel 4.2 Grad? Richtig, in deinem Programm ist der Mittelwert aus 4.2 nicht 4.2, sondern 4. Und das, obwohl sowohl sum als auch temps doch double-Werte speichert! Aber schau dir mal die for-Schleife an: du addierst immer nur ints! Also nimm "auto". Oder schau dir mal std::accumulate an.



  • Danke für deinen Beitrag.
    Du hast vollkommen recht, das er nur die 4 ausgibt, bei der Eingabe von 4.2.
    Habe es nun mit deinem auto Wert probiert und genauso mit double anstatt int. Funktioniert beides. Danke

    ich verlinke dir mal die Seite da steht es exakt so drinn.
    https://i.imgur.com/Hqs0huA.png



  • evev schrieb:

    Habe es nun mit deinem auto Wert probiert und genauso mit double anstatt int.

    Was meinst du, ist besser?

    evev schrieb:

    ich verlinke dir mal die Seite da steht es exakt so drinn.

    Was sagt das über die Qualität der Seite aus?
    Oder wird das später noch erläutert?



  • [quote="DirkB"]

    evev schrieb:

    Habe es nun mit deinem auto Wert probiert und genauso mit double anstatt int.

    Was meinst du, ist besser?

    Ich denke, dass auto die bessere Wahl wäre, da er automatisch einen Datentyp festlegt. Sollte es falsch sein was ich gelesen habe, bitte korrigieren.

    evev schrieb:

    ich verlinke dir mal die Seite da steht es exakt so drinn.

    Was sagt das über die Qualität der Seite aus?
    Oder wird das später noch erläutert?

    Über die Qualität kann ich nichts sagen, da ich Anfänger bin und mir daher das Urteil nicht erlauben "kann". Der Link zeigt das die Codezeile im Text so steht und kein Fehler bei der Übernahme entstanden ist.

    evev



  • viele nützliche Informationen zu finden, ich freue mich, Ihrer Gemeinschaft beitreten!


Anmelden zum Antworten