C++ Anfänger- Programm funktoniert nicht!



  • Mir ist auch noch nicht klar was du da mit der Schleife machen willst.

    #include <iostream>
    
    using namespace std;
    
    int main()
    {
    	double peins, perreicht;
    	cout << "Bitte geben Sie die Werte der Variablen 'Punktezahl fuer die Eins' und 'Erreichte Punkte' ein: ";
    	cin >> peins >> perreicht;
    
    	cout << "Die erreichte Note ist " << perreicht/peins+1 << ".\n";
    
    	return EXIT_SUCCESS;
    }
    

    Das wäre eine einfache Lösung, die nach deiner Formel die Note berechnet.



  • float note;
    float r;
    float z;
    float x;
    

    Wie oft, genoni, kommt jede dieser Zeile in deinem Quelltext vor?
    Und was passiert dann?
    Okay, das kann gar funktionieren aber nur, wenn der Programmierer nicht den Überblick verliert. Also, wenn bei einem Anfänger eine dieser Zeilen, oder vergleichbare vorkommen, immer überlegen, ist das irgend wo vom Auftraggeber so vorgegeben? Wenn nicht, eine übersichtlichere Lösung vorziehen.

    Zur Krönung der Unübersichtlichkeit:

    int note;
    ...
    float note;
    

    😮
    weist du was du da willst oder machst?

    MfG f.-th.



  • Was vergessen 😡

    Also, wenn bei einem Anfänger eine dieser Zeilen oder vergleichbare mehr als einmal in einem Quelltext vorkommen immer überlegen, ist das irgend wo vom Auftraggeber so vorgegeben?

    So sollte das besser sein.



  • Sorry, ich war jetzt eine Woche ohne Internet abwesend.

    Vielen Dank für die Antworten.

    @Thuruk,

    Deine Version funktioniert bestens, herzlichen Dank.

    @f-th

    lach*, mir ist klar dass meine Programme extrem unübersichtlich sind.
    Ich habe einfach mal mit denen mir Bekannten Befehlen losgelegt und es wurden dann immer mehr Änderungen.

    Wenn ich das nun ähnlich meiner Vorgabe machen möchte, muss ich dann nur diese floats anders gestalten? Oder geht das so gar nicht?

    mfG Leo



  • Hab ich doch geschrieben, solange du den Überblick über deinen Quelltext hast bekommst du das hin 👍
    Wenn du den Überblick verlierst, ... 🤡

    Also würde ich den Quelltext übersichtlich formatieren.
    Dann solltest du dir selber im Quelltext keine Fallen aufbauen in der Form das du dich selbst austrickst.

    float r;
      printf("Bitte geben sie ein, welche Punktzahl für eine Sechs nötig ist: \n");
      scanf("%d",&r);
    

    Was willst du damit erreichen? Okay, es kann sein das es nur eine mögliche Punktzahl für eine 6 gibt? Dann gibt es innerhalb von Europa Staaten wo 6 die schlechteste Zensur ist und andere wo eine 6 die beste ist. Also soll das Programm in Deutschland, in Österreich, in der Schweiz oder sonst wo spielen?

    So ein wenig Hintergrund brauche ich schon, wenn das ein halbwegs gutes Programm werden soll. Ich nehme an du solltest dich auch mal eingehender damit beschäftigen. Zum einen mit dem Hintergrund und zum anderen mit den Grundlagen von C und/oder C++.

    int note; //  siehe 4 Zeilen später
      while(true)
    
      {
        float note; // note hast du doch gerade als int definiert und bislang nicht gebraucht???
    

    MfG f.-th.



  • Herzlichen Dank.

    Das Programm soll in der Schweiz spielen, wo 6 die höchste und 1 die tiefste Note ist. Das mit dem Note hab ich gar nicht gesehen 😞 . Wie gesagt, ich hab erst vor 2 Wochen mit C angefangen und kenne darum nur wenige Befehle. Als dann eine Bekannte gesagt hat ihr fehle ein Programm das Noten berechnet, habe ich gesagt ich könne versuchen eines zu basteln. 🙂

    mfG Leo



  • Du kennst immer noch nicht den Unterschied zwischen C und C++.

    Hier mal ein schnell zusammen genagelter C-Quelltext:

    // punkt2note - swiss
    // hier Punkte fest vorgegeben -> add Punkte für Note aus externe Datei lesen. 
    // 2012feb11
    
    #include<stdio.h>
    
    int main()
    {
    	int punkte;
    	int pkt2 = 25;
    	int pkt3 = 42;
    	int pkt4;	// ergänzen
    	int pkt5;
    	int pkt6 = 90;
    
    	printf("Bitte geben Sie hier die erreichten Punkte ein: ");
    	scanf("%d", &punkte);
    
    	if( punkte < pkt2 )
    		printf("%d-> eins \n", punkte);
    	else if( punkte < pkt3 )
    		printf("%d-> zwei\n", punkte);
    	else
    		printf("%d-> sechs\n", punkte);
    }
    

    kannst das ja noch ergänzen.



  • Und man könnte die Punkte noch in einem Array anordnen, das dann per for-Schleife nach der richtigen Note durchsucht wird.

    #include <iostream>
    
    using namespace std;
    
    int main()
    {
    	unsigned short pkt[5]={10, 20, 30, 40, 50}, j=0, punkte=0; //einlesen/im Quellcode angeben
    
    	cout << "Notenschluessel:\n";
    
    	for(;j<5;++j){
    		cout << pkt[j] << ": " << j+2 << '\n';
    	}
    
    	for(;;){
    		cin >> punkte;
    		for(j=1;punkte>=pkt[j-1];++j) {}
    		cout << "Erreichte Note: " << j << '\n';
    	}
    }
    

    😉



  • Muss zugeben das ich das nicht ganz ausgefeilt hab 😉

    Aber zum einen soll der Beitragsersteller auch noch etwas zu tun haben 😃
    Und zum anderen, denke ich das das Programm noch ein wenig leistungsfähiger und damit umfangreicher werden soll.

    Was man noch einbauen kann:
    Ein Schüler hat mehrere Arbeiten abgeliefert, die mit unterschiedlichen Schlüsseln bewertet werden und wo am Ende z.B. eine Zeugnisnote herauskommen soll.

    Eine Schleife um das Kernprogramm mit Menu wäre auch noch eine Option.

    Es gibt da sicher noch andere Varianten 👍

    MfG f.-th.



  • genoni schrieb:

    [...]bis jetzt arbeitete ich immer auf dem Mac und nun habe ich mir per Bootcamp eine Windows-Partition geholt.

    Vielleicht weisst du das einfach noch nicht daher sage ich es einfach mal: du kannst auch auf deinem Mac einen C++ Compiler installieren.

    Gruss,
    anneXus


Anmelden zum Antworten