Schnelles Ende!?!



  • Hi Ho alle zusammen,
    ich habe mal eine frage,
    und zwar habe ich mit C++ erst angefangen und habe schon einen Fehler....

    wenn ich mien kleines Programm gestartet habe dann funktioniert noch alles bestens, nur wenn ich dann ein ergebniss haben möchte beendet er dies, einfach so.

    vielleicht kann mir ja jemand helfen!

    Quelltext:

    #include <iostream.h>

    int addiere(int a, int b, int c, int d)

    {

    int x=a+b+c+d

    return x;

    }

    int main()

    {

    cout << "Geben sie 2 Zahlen ein!\n"
    int zahl1;
    int zahl2;
    int zahl3;
    int zahl4;

    cin >> zahl1;
    cin >> zahl2;
    cin >> zahl3;
    cin >> zahl4;

    cout << addiere(zahl1, zahl2, zahl3, zahl4);

    return 0;

    }

    Cya Liquid

    [ Dieser Beitrag wurde am 05.06.2003 um 14:44 Uhr von Liquid editiert. ]

    [ Dieser Beitrag wurde am 05.06.2003 um 14:45 Uhr von Liquid editiert. ]



  • #include <iostream.h>
    #include <conio.h>
    int addiere(int a, int b, int c, int d)
    {   return (a+b+c+d);
    }
    
    int main()
    {
    cout << "Geben sie 2 Zahlen ein!\n"
    int zahl1,zahl2,zahl3,zahl4;
    
    cin >> zahl1;
    cin >> zahl2;
    cin >> zahl3;
    cin >> zahl4; 
    
    cout << addiere(zahl1, zahl2, zahl3, zahl4);
    getch();
    return 0;
    }
    

    🙄

    [ Dieser Beitrag wurde am 05.06.2003 um 14:47 Uhr von 1ntrud0r editiert. ]



  • Du darfst die Semikolons ? Semikolen ? die ; halt nicht vergessen!



  • #include <conio.h> oder #include<stdio.h> einbinden

    und dann am Ende des Programmes "getch()" oder "getchar()" einbinden



  • Original erstellt von Konstantin:
    Du darfst die Semikolons ? Semikolen ? die ; halt nicht vergessen!

    Semikola...



  • <conio.h> oder <stdio.h>

    conio ist kein standard. Und das das Praxisrelevant ist zeigt, dass zwei meiner drei Compiler Sie nicht kennen. und warum stdio.h ? ein einfaches cin.get() würde es doch auch tun.

    Dann sollte es heißen 4 Zahlen und nicht 2. (Absichtliche Verwirrung des Benutzers ist nie gut.)

    Außerdem wäre ein Blick in die FAQs sinnvoll zum Thema <iostream.h> vs. <iostream>



  • Also:

    #include <iostream>
    
    using namespace std;
    
    template<class T, class Q> T my_add(Q a, Q b) {
      T result = *a;
      while (++a != b)
        result += *a;
      return result;
    }
    
    int main() {
      int a[4];
      cout << "Gibst du 4 Zahlen, oder?" << endl;
      cin >> a[0] >> a[1] >> a[2] >> a[3];
      cout << add(a, a+4) << endl;
    }
    

    OK, es ginge _noch_ generischer, aber das sollte reichen :D.



  • @MrN
    Solltest du deine Funktion nicht am Besten auch noch aufrufen? 😃

    Und warum nicht einfach schon den vorhandenen Algorithmus verwenden?

    #include <numeric>
    #include <iostream>
    using namespace std;
    int main() {
      int a[4];
      cout << "Gibst du 4 Zahlen, oder?" << endl;
      cin >> a[0] >> a[1] >> a[2] >> a[3];
      cout << accumulate(a, a+4, 0) << endl;
    }
    

    [ Dieser Beitrag wurde am 05.06.2003 um 23:59 Uhr von HumeSikkins editiert. ]



  • @Hume: So ein my_ vergisst man schon mal. :D. Warum ich ne eigene Funktion geschrieben hab? Um zu zeigen, wie hübsch das ist :D.



  • aha und woraus leitet er sich das T ab? Das kann er doch an myadd(a,a+4) garnicht erkennen, oder?



  • @ Sp*****wein: Danke! 😉

    Original erstellt von Helium:
    [quote]<conio.h> oder <stdio.h>

    **
    conio ist kein standard. Und das das Praxisrelevant ist zeigt, dass zwei meiner drei Compiler Sie nicht kennen. und warum stdio.h ? ein einfaches cin.get() würde es doch auch tun.**[/QUOTE]

    Was ich nur echt dumm an cin.get() finde, dass man keine Leertaste drücken kann. Auf Whitespace-Zeichen reagiert cin.get() nicht...

    Einen echten Ersatz für getch() habe ich leider noch nicht gefunden. Sollte irgedwer was haben - her damit! 😉

    CU
    Konstantin



  • Das ist ja geil! Ihr habt da ja einen Filter eingebaut! Wenn im Beitrag das bekannte Synonym zu Popo steht, wird das mit * rausgefiltert 😉 Wenn man andere ohne Zensur beleidigen will, muss man also Kreativ werden! Find ich geil! ;-)))

    Schade nur, dass auch das Schein, welches spart (= Sp*****wein) zensiert wird...

    CU
    Konstantin



  • Original erstellt von Jester:
    aha und woraus leitet er sich das T ab? Das kann er doch an myadd(a,a+4) garnicht erkennen, oder?

    du hast irgendwie recht :D. daher glaub ich auch der parameter von accumulate



  • daher glaub ich auch der parameter von accumulate

    Jein. Der letzte Parameter dient als Anfangswert. Schließlich will man nicht immer bei 0 beginnen. Und wenn man accumulate z.B. zum Multiplizieren benutzen will, dann wäre 0 etwas schlecht 🙂

    Das dadurch der Rückgabewert automatisch herleitbar wird ist natürlich ein netter Nebeneffekt.


Anmelden zum Antworten