Flaeche berechnen

  • geschlossen
  • C

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

  • Flaeche berechnen

    Hallo, hab nochmal ne Frage...

    Das Programm muss zwei Eingaben und zwei Ausgaben haben.
    Flaeche von nem Rechteck mit area = length * width und dann Flaeche rechteckiges Dreieck area = (length * height) / 2.0

    Also praktisch dann so:

    Enter a length (in inches): 50.0
    Enter a width or height (in inches): 5.0
    Area Of A Triangle = 125 inches
    Area Of A Rectangle = 250 square inches

    Gibt zwei Werte ein und zwei kommen raus.

    Ich wollte das jetzt mit overload Fuktion machen , aber da kann es das nicht berechnen....:confused: Also dacht ich mir, dass es da auch noch was einfacheres, simpleres geben muss. Hat einer ne Idee?
  • Ich versteh dein Problem nicht, was schaffst du denn nicht dabei? Du hast doch schon die Formeln, musst nur noch alles in Code umwandel

    Quellcode

    1. Eingabe Länge;
    2. Eingabe Breite;
    3. Fläche_Rechteck = Länge * Breite;
    4. Fläche_Dreieck = Fläche_Rechteck / 2;
    5. Ausgabe Fläche_Rechteck;
    6. Ausgabe Fläche_Dreieck;
    [SIZE="1"]User helfen Usern: Die FSB-Tutoren

    Sag nein zu Filehostern - [color="blue"]AOKHA[/color]

    Ups: Horst Evers MovieMix How High Generals + 2x Xvid Viele Klassiker-Games[/SIZE]
  • Also XodoX hat mich per PN angesprochen.
    Ich hab ihm folgenden Code zukommen lassen:

    Quellcode

    1. #include <stdio.h>
    2. int main(void)
    3. {
    4. double area, length, width;
    5. char c;
    6. printf("Enter a length (in inches): ");
    7. scanf("%lf",&length);
    8. printf("Enter a width (in inches) : ");
    9. scanf("%lf",&width);
    10. area = width*length;
    11. printf("Area of a rectangle\t : %lf square inches\n",area);
    12. area /= 2;
    13. printf("Area of a triangle\t : %lf square inches\n",area);
    14. printf("\nPress Enter to exit...");
    15. scanf("%c",&c); scanf("%c",&c);
    16. }
    Alles anzeigen

    Auch wenn das mit dem "char c" und den hinteren "scanf" wahrscheinlich den Leuten, die C programmieren, in den Augen weh tut, aber das war quasi mein erstes C Programm.^^

    Also XodoX wenn du damit zufrieden bist, kannst du ja das Präfix umstellen.


    Ich hätte aber noch 2 Fragen zu dem mit Enter beenden:

    1.) Warum klappt das nur mit zwei scanf? Eins hat irgendwie nix gebracht. :/

    und 2.) Wie kriegt man das besser hin?^^



    Edit: Aktuelle Version:

    Quellcode

    1. #include <stdio.h>
    2. int main()
    3. {
    4. double width, length;
    5. printf("Enter a length (in inches): ");
    6. scanf("%lf",&length);
    7. printf("Enter a width (in inches) : ");
    8. scanf("%lf",&width);
    9. width *= length;
    10. printf("Area of a rectangle\t : %lf square inches\n",width);
    11. printf("Area of a triangle\t : %lf square inches\n",width/2);
    12. printf("\nPress any key to exit...");
    13. getch();
    14. return 0;
    15. }
    Alles anzeigen
    User helfen Usern: die FSB-Tutoren! (zum Chat) (zur Gruppe)
  • Aurelius schrieb:

    zum Schluss einfach "return 0" schreiben, da kannst du dir die letzten beiden zeilen sparen ;)


    Das scanf steht am Ende damit das Konsolenfenster nicht direkt geschlossen wird. Würde return 0; da stehen würde das nicht den Zweck erfüllen..

    Versuch mal vor dem 1. scanf am ende fflush(stdio); auszuführen. das zweite scanf müsste dann überflüssig sein...
    [SIZE="1"]i'm a signature virus. copy me into your signature to help me spread. - smart questions[/SIZE]
  • Das liegt nicht an C oder C++ sondern an der verwendeten IDE...

    *edit*
    Das heißt allerdings nicht das da nicht trotzdem ein return 0; hingehört... Du hast die main funktion mit dem Rückgabetyp int definiert, also solltest du auch einen int wert zurück geben.
    [SIZE="1"]i'm a signature virus. copy me into your signature to help me spread. - smart questions[/SIZE]
  • Mal eine Erklärung warum man zwei scanf am Ende braucht:
    Nach jeder Eingabe bleibt ein newline-Zeichen (Return) im Tastaturkanal. Das Scanf für die Zahl ignoriert dieses Return einfach. Wenn man aber eine char einlesen will, wird das Return als Zeichen interpretiert.
    Einfachste Lösung ist einfach nach jedem scanf ein getchar(); zu schreiben. Das entfernt das Return aus dem Tastaturkanal.
    Der Rückgabewert von getchar ist übrigens, das eingelesende Zeichen als int-wert.

    Quellcode

    1. #include <stdio.h>
    2. int main(void)
    3. {
    4. double area, length, width;
    5. printf("Enter a length (in inches): ");
    6. scanf("%lf",&length);
    7. getchar();
    8. printf("Enter a width (in inches) : ");
    9. scanf("%lf",&width);
    10. getchar();
    11. area = width*length;
    12. printf("Area of a rectangle\t : %lf square inches\n",area);
    13. area /= 2;
    14. printf("Area of a triangle\t : %lf square inches\n",area);
    15. printf("\nPress Enter to exit...");
    16. getchar();
    17. }
    Alles anzeigen


    Wenn noch ein bischen sparen möchte kann man das auch so schreiben:

    Quellcode

    1. #include <stdio.h>
    2. int main(void)
    3. {
    4. double length, width;
    5. printf("Enter a length (in inches): ");
    6. scanf("%lf",&length);
    7. getchar();
    8. printf("Enter a width (in inches) : ");
    9. scanf("%lf",&width);
    10. getchar();
    11. width *= length;
    12. printf("Area of a rectangle\t : %lf square inches\n",width);
    13. printf("Area of a triangle\t : %lf square inches\n", width / 2);
    14. printf("\nPress Enter to exit...");
    15. getchar();
    16. }
    Alles anzeigen


    Schöne Grüße
    2fast2cool
  • Achso verstehe, danke. :)

    Und da scanf("%lf"...) den Whitespace vor dem double Wert raus macht, reichen zwei getchar():

    Quellcode

    1. #include <stdio.h>
    2. int main()
    3. {
    4. double width, length;
    5. printf("Enter a length (in inches): ");
    6. scanf("%lf",&length);
    7. printf("Enter a width (in inches) : ");
    8. scanf("%lf",&width);
    9. getchar();
    10. width *= length;
    11. printf("Area of a rectangle\t : %lf square inches\n",width);
    12. printf("Area of a triangle\t : %lf square inches\n",width/2);
    13. printf("\nPress Enter to exit...");
    14. getchar();
    15. return 0;
    16. }
    Alles anzeigen
    User helfen Usern: die FSB-Tutoren! (zum Chat) (zur Gruppe)