1. #1

    Registriert seit
    01.12.2011
    Beiträge
    6
    Thanked 0 Times in 0 Posts

    Standard [C++] Notenrechner fehler

    Code:
    #include <iostream>
    #include <conio>
    using namespace std;
    
    void main ()
    {
    	cout << "Notenrechner" << endl << endl;
    
    	int Notenanzahl;
    	float Note[Notenanzahl];
    	float Notensumme;
    
    	do
    	{
    	cout << "Note: ";
    	cin >> Note;
    	Notensumme = Notensumme + Note;
    
    	Notenanzahl++;
    	}while (Notenanzahl < 5);
    
    
    	float Durchschnitt = Notensumme / Notenanzahl;
    
    	cout << "Ihr Durchschnitt: " << Durchschnitt;
    
    	getch();
    }
    Ich bräuchte hier Hilfe, weil oben steht das ich für "Notenanzahl" nen Konstantenausdruck benötige aber ich will keine Konstante als Anzahl. Hoffe jemand kann mir weiterhelfen !

  2. #2
    Avatar von patlux
    Registriert seit
    26.10.2011
    Beiträge
    1.195
    Thanked 1.596 Times in 725 Posts
    Blog Entries
    2

    Beitrag AW: Notenrechner fehler

    Hi Alex,

    ein Array/Feld mit dynamischer Größe kannst du nur mithilfe von Pointern erzeugen.

    Galileo Computing :: C von A bis Z &ndash; 12.7 Array und Zeiger


    Das würde bei deinem Code anfangs in etwa so aussehen:

    Code:
    	
            int Notenanzahl = 0;
    	int *pNotenanzahl = &Notenanzahl;
    	float * Note = new float[*pNotenanzahl];
    	float Notensumme;

  3. #3
    Avatar von DMW007
    Registriert seit
    15.11.2011
    Beiträge
    6.080
    Thanked 9.118 Times in 2.995 Posts
    Blog Entries
    5

    Standard AW: Notenrechner fehler

    Code:
    int Notenanzahl;     
    float Note[Notenanzahl];
    Macht so schonmal keinen Sinn, du definerst einen Array in der größe einer nicht initialisierten Variable.
    In Notenanzahl steht uninitialisiert nachher irgendein Crap drin z.B. 89237492893 und dein Programm reserviert massig Speicher, den kein Mensch braucht.

    Ich würde Variablen, denen später im Programm kein Wert zugewiesen wird, grundsätzlich immer initialisieren.

    Code:
    float Notensumme;
    Das is z.B. ne Variable die du nicht initialisiert hast. Der wird aber später kein Wert zugewiesen, da du nur draufaddierst. Hier also dasselbe wie oben: Da steht irgendein Mist drin, du addierst drauf und erhälst nachher Werte jenseits der Realität.

    Ausserdem kannst du nicht direkt auf einen Array zugreifen, sondern nur auf ein Arrayelement.

    Code:
    cin >> Note;
    Geht also schonmal nicht, da kein Index angegeben ist, in dem das Element gespeichert werden soll.

    Die einfachste Lösung ohne sich mehr oder weniger selbst dynamische Arrays (z.B. mit dynamischen Strukturen) zusammenzubasteln ist das verwenden einer Konstante für die Anzahl. Zusätzlich dann noch einen Integer der hochgezählt wird über den du bei der Eingabe auf den Index des Arrays zugreifen kannst:

    Code:
    void main ()
    {
        cout << "Notenrechner" << endl << endl;
    
        int Notenanzahl = 10;
        float Note[Notenanzahl];
        float Notensumme = 0;
            int count = 0;
    
        do
        {
            cout << "Note: ";
            cin >> Note[sum];
            Notensumme = Notensumme + Note;
            count++;
        }while (count < Notenanzahl);
    
    
        float Durchschnitt = Notensumme / count;
    
        cout << "Ihr Durchschnitt: " << Durchschnitt;
    
        getch();
    }


Ähnliche Themen

  1. [CS:GO] Fehler
    Von Gangstersheep im Forum Counter Strike
    Antworten: 0
    Letzter Beitrag: 03.11.2012, 22:24
  2. SSL-FEHLER
    Von Kingbubi2 im Forum Software
    Antworten: 2
    Letzter Beitrag: 26.06.2012, 21:31
  3. Fehler
    Von helfen im Forum Fragen & Probleme
    Antworten: 6
    Letzter Beitrag: 06.03.2012, 18:13
  4. [C++] Probleme bei einem Notenrechner
    Von AlexEHM im Forum C++
    Antworten: 3
    Letzter Beitrag: 17.01.2012, 19:09
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.