Frage zur Addition beliebigvieler Werte



  • Hallo,
    ich verfasse zur Zeit eine C++ Fibel für Anfänger, da in meinem Programmierkurs viele Ratlose sitzen, die Es einfach nicht verstehen.
    Da habe ich mir gedacht ich erzeuge einfach mal eine verständliche Anfänger-Anleitung (C++ Fibel) für eben diese Ratloen, denn es nützt nunmal nichts wenn ie auf einer Technikschule eines der wichtigsten Fächer nicht packen.

    Ich stoße jedoch ab und an auf kleine Probleme, zum Beispiel hier:

    Ein Programm zu Addition beliebig vieler Werte: (Turbo C++ von Borland)
    //---------------------------------------------------------------------------

    #pragma hdrstop
    #include <conio.h>
    #include <iostream.h>

    //---------------------------------------------------------------------------

    #pragma argsused
    int main(int argc, char* argv[])
    {

    int i=1;
    int Wert[i];
    int Summe;
    int Anzahl;

    cout<<"Wie viele Werte wollen sie zur Berechnung des Ergebnisses benutzen?"<<endl;
    cin>>Anzahl;

    while (i<=Anzahl)
    {
    cout<<"Bitte geben sie den "<<i<<". Wert ein"<<endl;
    cin>>i;
    i=i+1;
    }

    while (i<=Anzahl)
    {
    Summe=Summe+Wert[i];
    i=i+1;
    }

    cout<<"Die Summe der "<<Anzahl<<" Werte ist: "<<Summe<<endl;

    getch();

    return 0;
    }
    //---------------------------------------------------------------------------

    Wen ich kompilieren will, zeigt mir die Entwicklungsumgbung folgende Meldung an:
    "[C++ Fehler] AdditionbeliebigvielerWerte.cpp(14): E2313 Konstantenausdruck erforderlich"

    ich wess beim besten Willen nicht weiter, vielleicht ist es aber auch (mal wieder) so einfach dass ich einfach nicht darauf komme.

    Bitte um einen Tipp.

    MfG, der Axel


  • Mod

    Du musst arrays auf dem Stack mit (zur Compilezeit) konstanten Werten definieren, du benutzt aber die Variable i.

    edit: Meinst du mit Turbo C++ die alte DOS-Entwicklungsumgebung von Borland? Die muss doch mehr als 15 Jahre alt sein! Benutz doch was aktuelles, standardkonformes! Dein Programm würdest du 8auch ohne Fehler) mit keinem aktuellen standardkonformen Compiler übersetzen können.



  • //---------------------------------------------------------------------------
    
    #pragma hdrstop
    #include <conio.h>
    #include <iostream.h>
    
    //---------------------------------------------------------------------------
    
    #pragma argsused
    int main(int argc, char* argv[])
    {
    
    int i=1;
    int Wert[i];
    int Summe;
    int Anzahl;
    
    cout<<"Wie viele Werte wollen sie zur Berechnung des Ergebnisses benutzen?"<<endl;
    cin>>Anzahl;
    
    while (i<=Anzahl)
    {
    cout<<"Bitte geben sie den "<<i<<". Wert ein"<<endl;
    cin>>i;
    i=i+1;
    }
    
    while (i<=Anzahl)
    {
    Summe=Summe+Wert[i];
    i=i+1;
    }
    
    cout<<"Die Summe der "<<Anzahl<<" Werte ist: "<<Summe<<endl;
    
    getch();
    
    return 0;
    }
    //---------------------------------------------------------------------------
    


  • Die Zeile

    int Wert[i];
    

    ist das problem. i ist eine (nichtkonstante) Variable, du versuchst also ein Array auf dem Stack mit variabler Länge zu erstellen. Das geht schief. Dafür benötigst du new und delete!
    Also sowas in der Art

    int *Werte = new int[Anzahl];
    
    ...
    
    delete[] Werte;
    

    Anzahl liest du ja in deinem Programm auch schon ein, benutzt es aber nicht.



  • Dann kannst du jedoch auch nicht das Array zu Laufzeit vergrößern. Da könntest du dich an stl bedienen, wobei das Anfänger eher verwirren wird.

    Das Programm kann man bestimmt auch ohne ein Array entwickeln.

    Vielen Dank
    lg, freakC++


  • Mod

    Ich habe gerade mal das Programm überflogen:

    Das was du da vor hast, wird ganz extrem schief gehen, selbst wenn du das irgendwie compiliert bekommst. Da fehlen offensichtlich Grundlagen, was arrays sind und wie man sie benutzt.



  • Hey,

    wer meine Frage ordentlich gelesen hat, dem ist bewusst dass ich eine Anleitung für C++ Anfänger schreibe. Deshalb bitte ich um Antworten, die eine weniger komplizierte Lösung aufzeigen, also OHNE Arrays und Konstanten usw.

    Es gibt dochbestimmt eine sehr einfache Lösung für dieses Probnlem oder?

    MfG, Axel



  • Warum nutzt Du dann selber ein Arrays bzw willst es versuuchen 😕 ?

    lg, freakC++



  • Lass das Array Wert[i] einfach weg, du brauchst es nicht und du verwendest es in deinem Code falsch.
    Dein Code hat eine Menge Fehler.



  • da in meinem Programmierkurs viele Ratlose sitzen, die Es einfach nicht verstehen
    

    Kann es sein, dass Du da selber drin sitzt?

    lg, freakC++


  • Mod

    AxelH1992 schrieb:

    Es gibt dochbestimmt eine sehr einfache Lösung für dieses Probnlem oder?

    Klar, hier:

    #include <iostream>
    
    using namespace std;
    
    int main(int argc)
    {
    
    int Summe=0;
    int Anzahl;
    
    cout<<"Wie viele Werte wollen sie zur Berechnung des Ergebnisses benutzen?"<<endl;
    cin>>Anzahl;
    
    for (int i=1; i<=Anzahl; ++i)
    {
    cout<<"Bitte geben sie den "<<i<<". Wert ein"<<endl;
    int Wert;
    cin>>Wert;
    Summe += Wert;
    }
    
    cout<<"Die Summe der "<<Anzahl<<" Werte ist: "<<Summe<<endl;
    
    return 0;
    }
    

    Anfängerfreundlich UND standardkonform.

    edit: Ich Idiot! freakC++ hat mit seiner Bemerkung wahrscheinlich recht und du bist ein Kursteilnehmer und ich habe dir gerade die Hausaufgaben gemacht 😡 . Naja, hast du dir verdient durch die clevere Täuschung.



  • Wie ging nochmal der Spruch vonwegen dass immer die total Ahnungslosen unterrichten?
    EDIT:

    edit: Ich Idiot! freakC++ hat mit seiner Bemerkung wahrscheinlich recht und du bist ein Kursteilnehmer und ich habe dir gerade die Hausaufgaben gemacht . Naja, hast du dir verdient durch die clevere Täuschung.

    Jopp, das ist sogar noch wahrscheinlicher 🙂



  • Leute,

    ich bitte euch vielmals, bleibt auf dem Teppich ok?
    Ich verbitte mir dass ich zu den weniger versierten in meinem Kurs gezählt werde, und ich habe ein klare Problem und erwarte ebenso klare und vor allem niveauvolle Antworten.

    Also: Wir haben in unserem Grundkurs in Programmieren bisher nicht viel auf die Bine gestellt, weil wir einfach nicht vorran kommen, eben weil viele sich nicht dafür interessieren oder es nicht können/verstehen.
    Das ist der Grund dafür dass wir unseben noch nicht mit Arrays und anderen Dingen beschäftigt haben, ich bitte euch, das zu akzeptieren.

    Ausserdem: Ich sehe keine Fehler in meinemQuelltext, bis auf die Sache mit dem Wert[i]; , und die Entwicklungsumgebung zeigt auch bloss den einen Fehler an (weiter oeben habe ich den auch gepostet).

    Was kann ich also tun, um diesen Fehler zu korrigieren, und das Programm ans Laufen zu bekommen?

    Übrigens: Ich habe den Quelltext hier in wenigen Minuten zusammengeschreinert und gestern Nacht gespeichert, aber wenn jemand eine von Grund auf andere Lösung für das Problem (Addition beliebig vieler int Werte) hat, bitte ich denjenigen, mir das mitzuteilen.

    Nochmals Danke,

    mfG, Axel



  • Es wurden doch schon zwei Lösungen gepostet, ein komplettes Programm von SeppJ und der Hinweis von mir wie du deinen Fehler korrigieren kannst...Was sollen wir deiner Meinung nach denn noch tun?



  • Leute, [...]

    Ab wann ist eigentlich Rechtschreibung aus der Mode gekommen? Mein Browser kann das ja sogar.



  • Wo zur Hölle bleibt euer Niveau???

    Also, kurze Aufklärung:

    Ich bin Abiturient in der Mittelstufe (Klasse 12) und DASHIER ist Stoff der Klasse 11 (Anfang) und einige bei mir im Programmierkurs haben es immernoch nicht verstanden, weshalb ich eine Anfänger Aleitung schreibe, die die Grundlagen von C++ erläutern.

    Dabei stieß ich gesternnacht auf dieses Problem (sihe erster Post) und ich weiss momentan ncht weiter.

    Als, wenn ihr bitte afhören könnten irgendwelchen Off-Topic Kram zu posten, wie das mit den Hausaufgaben, wäre ich euch sehr verbunden.

    So, soviel dazu. Wie eben schon gesagt (Und wer lesen kann ist klar im Vorteil) in meinem Proggen Kurs sitzen viele, die es nicht kapieren.
    Daher sind wir noch nicht sonderlich weit gekommen im Lehrplan, so haben wir z.B. Arrays noch NIE behandelt und das gilt auch für viele andere Dinge.

    Ich hoffe, irgendwer kann mir weiterhelfen.

    Danke, mfG, Axel. (Und bitte, keine agressieven Posts, ich will bloss das Niveau bewahren!)



  • afhören könnten irgendwelchen Off-Topic Kram zu posten

    Willkommen im Internet. On-Topic ist doch alles klar ... wenn nicht, so stelle konkrete Fragen! Ich persoenlich bevorzuge Ja/Nein-Fragen.



  • a Nein Fragen sind leider nicht immer möglich, und EBEN bei konkreten fragen oder komplizierten Prblemen sind Ja Nein Fragen oft einfach nicht entsprechend.

    Ich versuche mal das mit der For Schleife.

    MfG, Axel



  • int main(int argc, char* argv[])
    {
    
    int i=1;
    int Wert[i]; //Bei statischen Arrays muss die Größe eine Compiletime-Konstante sein, ist es bei dir nicht - Fehler
    int Summe;
    int Anzahl;
    
    cout<<"Wie viele Werte wollen sie zur Berechnung des Ergebnisses benutzen?"<<endl;
    cin>>Anzahl;
    
    while (i<=Anzahl)
    {
    cout<<"Bitte geben sie den "<<i<<". Wert ein"<<endl;
    cin>>i;
    i=i+1; // Was bitte schön soll hier passieren, du addierst hier zum eingegebenen Wert 1 hinzu, Warum?
    }
    
    while (i<=Anzahl) // i hat hier den letzten eingegebenen Wert + 1, die Abfrage macht also irgendwas
    {
    Summe=Summe+Wert[i]; // weder Summe noch Wert sind irgendwo initialisiert, du addierst hier also Unsinn auf Unsinn
    i=i+1;
    }
    
    cout<<"Die Summe der "<<Anzahl<<" Werte ist: "<<Summe<<endl;
    
    getch();
    


  • Hallo,

    erstens: 12 Klasse ist Oberstufe und nicht Mittelstufe!

    zweitens: Wo unserer Niveau bleibt? Wo bleiben dein Manieren? Vielleciht mal Danke für das Programm sagen?

    drittens: Was willste denn jetzt nocht? Du hast ein funktionierendes Programm? Was ist deine Frage?

    viertens: Keiner ist hier aggressiv. Wir mögen es einfach nicht, wenn Leute meinen, dass sie es drauf haben, aber an den einfachstn Problemem scheitern (Du sagst, dass Du keine Arrays haben möchtest, doch verwendest du sie selber: HÄÄÄ?)

    Sonst, helfen wir dir gerne! Vielleicht stellst Du jetzt nochmal dein Frage!

    lg, freakC++


Anmelden zum Antworten