Hilfee!!!!!

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Hilfee!!!!!

    Hallo zusammen.

    Bin neu hier und Programmieranfänger , vielleicht kann mir jemand nen Tipp geben was in meinem Quellcode falsch ist.

    Es dreht sich hier um einen Rechner , bei jeder Ausgabe wird nach der letzten Zeile die zweite Zahl auf dem Bildschirm mit ausgegeben ;(

    komme einfach nicht mehr weiter,im voraus vielen Dank .mfg. muffti_*

    Quellcode

    1. #include <cstdlib>
    2. #include <iostream>
    3. #include<cmath>
    4. using namespace std;
    5. double add(double x, double y){
    6. return x + y;
    7. }
    8. double sub(double x, double y){
    9. return x - y;
    10. }
    11. double divi(double x, double y){
    12. return x / y;
    13. }
    14. double multi(double x, double y){
    15. return x * y;
    16. }
    17. double alle(double x, double y){
    18. cout << "Ergebnis alle: \n";
    19. cout << "\n\n Das Ergebnis der Addition ist: " << add(x,y) << "\n\n";
    20. cout << "\n\nDas Ergebnis der Subtraktion ist: " << sub(x,y) << " \n\n";
    21. cout << "\n\nDas Ergebnis der Division ist: " << divi(x,y) << " \n\n";
    22. cout << "\n\nDas Ergebnis der Multiplikation ist: " << multi(x,y) << " \n\n";
    23. return (x, y);
    24. }
    25. int main(int argc, char *argv[])
    26. {
    27. double z1, z2;
    28. char operation;
    29. cout << " Geben Sie die erste Zahl ein: ";
    30. cin >> z1;
    31. cout << "\nGeben Sie die zweite Zahl ein: ";
    32. cin >> z2;
    33. cout << "\nWelche Rechenoperation moechten Sie ausfuehren ? < +, -, /, * > :";
    34. cin >> operation;
    35. switch(operation){
    36. case'+':
    37. cout << "\n\n Das Ergebnis der Addition ist: " << add(z1,z2) << "\n\n";
    38. break;
    39. case'-':
    40. cout << "\n\nDas Ergebnis der Subtraktion ist: " << sub(z1,z2) << " \n\n";
    41. break;
    42. case'/':
    43. if(z2 == 0){
    44. cout << "\nDivision durch Null ist nicht erlaubt! Das Programm wird beendet:\n\n";
    45. break;
    46. }
    47. cout << "\n\nDas Ergebnis der Division ist: " << divi(z1,z2) << " \n\n";
    48. break;
    49. case'*':
    50. cout << "\n\nDas Ergebnis der Multiplikation ist: " << multi(z1,z2) << " \n\n";
    51. break;
    52. }
    53. cout << alle(z1, z2) << "\n";
    54. system("PAUSE");
    55. return EXIT_SUCCESS;
    56. }
    Alles anzeigen
  • ist es Absicht, dass die Funktion "alle" immer ausgeführt wird? Sollte es vieleicht so sein, dass das nur ausgeführt wird, wenn keines der 4 Rechenzeichen erkannt wurde? Dann muss es in den default-case rein.

    Dass die zweite Zahl nochmal ausgegeben wird liegt an der Zeile: cout << alle(z1, z2) << "\n";
    Die Funktion alle gibt ja selbst schon alles nötig aus, daher ist es nichtmehr nötig den return wert von alle an cout zu leiten.. Daher würde

    Quellcode

    1. alle(z1,z2);
    reichen.
    Und wo wir schon beim return wert sind: return (x, y); in der Funktion alle Funktioniert nicht so. Eine Funktion muss immer eine einzigen Rückgabewert haben. Du könntest die Werte in ein Array speichern und dann zurückgeben oder irgendwas anderes damit machen, aber auf diese Weise funktioniert es nicht. Abgesehen davon ist die Rückgabe aber auch unnötig, denn x und y sind ja die Übergabeparameter (und wurden auch nicht geändert), daher macht es wenig Sinn diese wieder zurückzuliefern.
  • Ausgabe mit cout

    Hallo . Danke für die schnelle Hilfe.

    Das Problem lag tatsächlich in der Ausgabeanweisung mit cout. Hab es so geschrieben wie von Rondrer geschildert .

    Im übrigen , die Funktion alle() muss laut Aufgabenstellung jedesmal mit ausgegeben werden.

    Einmal ist`s mit dem Gnu Compiler geschrieben , also dieser Quelltext und einmal mit Visual C++ 2008 in .NET :)