Anfänger- rechner, kreis



  • Hallo,
    ich hab angefangen mit C und wollte mal einen kleinen rechner schreiben, der mir die werte eines Kreises ausrechnet wenn ich einen wert bereits habe. jedoch bin ich bei dem ersten lösungen gescheitert 😢
    das problem liegt dabei das, wenn ich ein wert eingebe keine lösung kommt (immer 0.00) 😞
    Ich würde mich über einen lösungsvorschlag freuen.

    #include <stdio.h>
    
    int main() {
    
        int auswahl, radius, flaeche, durchmesser, umfang, pi;
        int ende = 0;
        while (!ende) {
    
        durchmesser = radius + radius;
        pi = 3,14159265;
        umfang = 2 * radius * pi;
        flaeche = radius * radius * pi;
    
        printf("Wahlen sie aus was sie eingeben moechten oder ob das Programm beendet werden soll.\n");
        printf("1 - Radius\n");
        printf("2 - Durchmesser\n");
        printf("3 - Flaecheninhalt\n");
        printf("4 - Umfang\n");
        printf("5 - beenden\n");
        printf("Ihre Wahl:");
        scanf("%D", &auswahl);
    
        switch (auswahl){
    
         case 1:
            printf("Geben sie den Radius ein: ");
            scanf("%.2f\n", &radius);
            printf("Durchmesser: %.2f\n",durchmesser);
            printf("Flaecheninhalt: %.2f\n", flaeche);
            printf("Umfang: %.2f\n", umfang);
            printf("\n");
            printf("\n");
            printf("\n");
    
            break;
    
        case 2:
            printf("Geben sie den Durchmesser ein.");
            scanf("%d,%.2f", &durchmesser);
            break;
    
        case 3:
            printf("Geben sie den Flaecheninhalt ein.");
            scanf("%d,%.2f", &flaeche);
            break;
    
        case 4:
            printf("Geben sie den Umfang ein.");
            scanf("%d,%.2f", &umfang);
            break;
    
        case 5:
            printf("\n");
            printf("Das Programm wird beendent");
            printf("\n");
            printf("\n");
            ende = 1;
    
                }
       }
    
        return 0;
    
    }
    


  • 1. int steht für integer
    2. Kommazahlen werden mit . als Dezimaltrennzeichen geschrieben
    3. Der Kommaoperator ist etwas ganz anderes.
    4. Berechnungen werden mit den gerade aktuellen Werten durchgeführt.
    5. Müssen bei printf und scanf die Variablen zu den Formatspecifier (die Zeichen hinter den 😵 passen.

    Behandle die Warnungen deines Compilers wie Fehler und behebe sie.



  • Gira48 schrieb:

    Ich würde mich über einen lösungsvorschlag freuen.

    Da ist so ziemlich alles falsch gemacht, was man falsch machen kann:

    1. Offensichtlich willst Du, dass radius, flaeche, durchmesser, umfang und pi Kommazahlen sein sollen. Definiert hast Du sie aber als ganze Zahlen ("int"). Das sind gaaanz unterschiedliche Typen von Zahlen und C ist da meistens sehr genau. Der Typ für Kommazahlen heißt "float".

    2. Die Variablen durchmesser, pi, umfang und flaeche werden in Zeilen 9 bis 12 mit Werten belegt. Tauchen sie später auf, so werden diese Werte (und nicht die Formeln) eingesetzt. Was Du eigentlich willst, ist das Präprozessormacro "#define".

    3. Merke: Der Formatstring in scanf() entspricht nicht ganz genau dem Formatstring von printf(). Guck Dir ein paar Beispiele mit scanf() an, z.B. http://msdn.microsoft.com/en-us/library/9y6s16x1.aspx.

    Edit: 4) C will die amerikanische Schreibweise von Kommazahlen, also mit Punkt. Die Variable pi wird also gepunktet.

    Ich habe mal Deinen Code etwas umgebastelt. Die #define-Macros habe ich an der Stelle gelassen, wo vorher die Variablen belegt wurden, damit Du besser vergleichen kannst. Üblicherweise werden sie an den Anfang des Programms geschrieben, um sie besser wiederfinden zu können. Netterweise ist C case-sensitive, d.h. ein Wort mit Großbuchstaben ist etwas völlig anderes als das gleiche Wort mit Kleinbuchstaben.

    #include <stdio.h>
    
    int main() {
    
    	int auswahl;
    	float radius, flaeche, durchmesser, umfang, pi;
    	int ende = 0;
    	while (!ende) {
    
    	#define DURCHMESSER radius + radius
    	pi = 3.14159265;
    	#define UMFANG 2 * radius * pi
    	#define FLAECHE radius * radius * pi
    
    	printf("Wahlen sie aus was sie eingeben moechten oder ob das Programm beendet werden soll.\n");
    	printf("1 - Radius\n");
    	printf("2 - Durchmesser\n");
    	printf("3 - Flaecheninhalt\n");
    	printf("4 - Umfang\n");
    	printf("5 - beenden\n");
    	printf("Ihre Wahl:");
    	scanf("%d", &auswahl);
    
    	switch (auswahl){
    
    	case 1:
    		printf("Geben sie den Radius ein: ");
    		scanf("%f", &radius);
    		printf("Durchmesser: %.2f\n",DURCHMESSER );
    		printf("Flaecheninhalt: %.2f\n", FLAECHE );
    		printf("Umfang: %.2f\n", UMFANG);
    		printf("\n");
    		printf("\n");
    		printf("\n");
    
    		break;
    
    	case 5:
    		printf("\n");
    		printf("Das Programm wird beendet");
    		printf("\n");
    		printf("\n");
    		ende = 1;
    
    			}
    	}
    
    	return 0;
    }
    

    viele grüße
    ralph



  • rkhb schrieb:

    float radius, flaeche, durchmesser, umfang, pi;
    	int ende = 0;
    	while (!ende) {
    
    	#define DURCHMESSER radius + radius
    	pi = 3,14159265;
    

    Dieser Unsinn muss unbedingt für die Nachwelt erhalten bleiben.
    Liebe Kinder, nicht nachmachen!


Anmelden zum Antworten