Kreisberechnungsprogramm



  • Hallo,
    ich hab ein Problem mit dem Kreisberechnungsprogramm:

    #include<math.h>
    #include<stdio.h>
    #include<stdlib.h>
    #include<conio.h>
    
    int main()
    {
        int r,u,a;
        printf("\n\t\t Kreisberechnung");
        printf("\n\n\n Gib den Radius ein:");
        scanf("%f",&r);
    
        u=2*r*3,14;
        a=r*r*3,14;
    
        ;printf("\n\n\n")
        ;printf("radius=%8f",&r);
        ;printf("\n===============");
        ;printf("\n Umfang=%8f",&u);
        ;printf("\n Flaeche=%8f",&a);
    
        ;system("pause");
        return (1);
    }
    

    Als Ergebnis zeigt mir der Computer immer 0.000000 an.
    Wie ihr wahrscheinlich gemerkt habt bin ich ein Neuling im Programmieren 🙂
    Ich hoffe ihr könnt mir helfen



  • Der Compiler ist ein Ami. Die machen die Kommas falsch.
    3.14 statt 3,14

    Und float als Typ wäre besser.



  • Irgendwie läuft es aber noch nicht richtig.
    Wie funktioniert das mit float?



  • Dieser Thread wurde von Moderator/in volkard aus dem Forum C++ (auch C++0x) in das Forum C (C89 und C99) verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • NewC++ schrieb:

    Irgendwie läuft es aber noch nicht richtig.
    Wie funktioniert das mit float?

    int kann nur ganze Zahlen verarbeiten, für Werte mit Nachkommastellen benötigst du einen Gleitkomma-Typ (float oder double) in Zeile 9.

    PS: Die Schreibweise mit dem Semikolon am Zeilenanfang habe ich auch noch nie gesehen 😃



  • Irgendwie läufts noch immer nicht richtig.



  • CStoll schrieb:

    NewC++ schrieb:

    Irgendwie läuft es aber noch nicht richtig.
    Wie funktioniert das mit float?

    int kann nur ganze Zahlen verarbeiten, für Werte mit Nachkommastellen benötigst du einen Gleitkomma-Typ (float oder double) in Zeile 9.

    PS: Die Schreibweise mit dem Semikolon am Zeilenanfang habe ich auch noch nie gesehen 😃

    Ohne kommt aber immer ein Fehler 🙂



  • Kein Wunder, wenn du Müll ausgeben lässt - bei den printf()-Aufrufen sind die Adress-Operatoren (&r etc) zu viel.

    PS: "läuft nicht richtig" ist eine sehr präzise Fehlermeldung 😃

    Ohne kommt aber immer ein Fehler 🙂

    Normalerweise setzt man die Semikolons auch ans Zeilen-Ende (hinter den Befehl, zu dem sie gehören)



  • #include<stdio.h>
    
    int main()
    {
        double r;
    
        printf("\n\n\n Gib den Radius ein:");
        scanf("%lf",&r);
    
        printf("\n\n\n");
        printf("radius=%8.4f",r);
    
        return 0;
    }
    


  • CStoll schrieb:

    Kein Wunder, wenn du Müll ausgeben lässt - bei den printf()-Aufrufen sind die Adress-Operatoren (&r etc) zu viel.

    PS: "läuft nicht richtig" ist eine sehr präzise Fehlermeldung 😃

    Ohne kommt aber immer ein Fehler 🙂

    Normalerweise setzt man die Semikolons auch ans Zeilen-Ende (hinter den Befehl, zu dem sie gehören)

    Die Adress-Operatoren hab ich gelöscht.
    Aber als Ergebnis bekomm ich immer noch 0.000000 raus.



  • Die Antworter und Moderatoren hier im Forum sind alle sehr geduldig und geben gerne Hilfe. Klar könnte diese sehr simple Aufgabe dir fertig geliefert werden, doch wozu? 😕


  • Mod

    CStoll schrieb:

    Normalerweise setzt man die Semikolons auch ans Zeilen-Ende (hinter den Befehl, zu dem sie gehören)

    Das war wohl eine sehr wörtliche Auslegung der üblichen Compilermeldung "Expected ';' before xxx". 😃



  • SeppJ schrieb:

    CStoll schrieb:

    Normalerweise setzt man die Semikolons auch ans Zeilen-Ende (hinter den Befehl, zu dem sie gehören)

    Das war wohl eine sehr wörtliche Auslegung der üblichen Compilermeldung "Expected ';' before xxx". 😃

    Was macht ihr den in diesem fall? 🙂



  • berniebutt schrieb:

    Die Antworter und Moderatoren hier im Forum sind alle sehr geduldig und geben gerne Hilfe. Klar könnte diese sehr simple Aufgabe dir fertig geliefert werden, doch wozu? 😕

    Aber ich find den Fehler trotzdem nicht.



  • Einen Hinweis, wie so ein Programm aussehen kann hast du schon bekommen.

    Zeig mal wie dein Programm jetzt aussieht.

    NewC++ schrieb:

    Was macht ihr den in diesem fall?

    Den Syntax der Sprache lernen und nicht raten.



  • DirkB schrieb:

    Den Syntax der Sprache lernen und nicht raten.

    selfowned. 🤡



  • Ok das Programm funktioniert jetzt.
    Hier der fertige Code:

    #include<math.h>
    #include<stdio.h>
    #include<stdlib.h>
    #include<conio.h>
    
    int main()
    {
        float r,u,a;
        printf("\n\t\t Kreisberechnung");
        printf("\n\n\n Gib den Radius ein:");
        scanf("%f",&r);
    
        u=2*r*3.14;
        a=r*r*3.14;
    
        printf("\n\n\n")
        ;printf("radius=%8f",r);
        ;printf("\n===============");
        ;printf("\n Umfang=%8f",u);
        ;printf("\n Flaeche=%8f",a);
    
        ;system("pause");
        return (1);
    }
    

    Der Fehler lag beim "Double" das hab ich durch "float" ersetzt.
    Aber die Semikolons am Anfang bekomm ich nicht weg.



  • NewC++ schrieb:

    Der Fehler lag beim "Double" das hab ich durch "float" ersetzt.

    Nein lag es nicht.Du hast beim scanf das "%f" nicht in "%lf" geändert.
    %f für float. %lf für double.
    ⚠ das gilt bei scanf, nicht für printf.

    NewC++ schrieb:

    Aber die Semikolons am Anfang bekomm ich nicht weg.

    Dann versuch doch mal die Semikolons schrittweise zu entfernen und schau dann nach, was an den Zeilen anders ist, wenn es nicht mehr funktioniert (auch die Zeilen davor).


  • Mod

    NewC++ schrieb:

    Der Fehler lag beim "Double" das hab ich durch "float" ersetzt.

    Das heißt ja auch double. C achtet auf groß und Kleinschreibung.

    Aber die Semikolons am Anfang bekomm ich nicht weg.

    Das kommt davon, wenn man sich die Sprache von Compilerfehlermeldungen beibringen lässt. Damit wirst du sehr bald ganz ordentlich auf die Schnauze fallen, denn der Compiler schlägt immer nur die einfachste Korrekturmethode vor, die an dieser Stelle gerade passt, ganz egal ob es Sinn macht oder ob später dadurch noch schlimmere Fehler kommen.



  • Danke für den Tipp.
    In Zeile 18 fehlte das Semikolon.
    Was ist eigentlich der unterschied zwischen float und double?


Log in to reply