Mini C Programm

G

Gast1711581007

Guest
Guten Tag Leute,

Ich muss bis zur nächsten Woche ein kleines Programm zur Noten Berechnung erstellen. Leider blick ich gerade kaum noch durch. Hoffe ihr könnt mir helfen.
Grundaufgabe man gibt die Erreichte Punktanzahl an. Dann wird einem die Note berechnet mit Kommastelle. Jedoch zeigt das Programm nur ganze Zahlen. Was habe ich Falsch gemacht?
Abgesehen davon soll anschließend z.B wenn die Note 2 erreicht wurde -> "gut" angezeigt werden. (3-> Befriedigend, 4-> Ausreichend usw.)
Wie mache ich dies am besten? mit If else?

Code:
/*Programm zur Berechnung der Note

Erstellt von: ***** Erstellt am: 05.04.2013*/

 #include <stdio.h>

 void main ()
    {
      int zahl1; 
      int summe;
      
      printf("\n\n\nNotenberechnung");
      printf("\n*******************");
      
      printf("\nErreichte Punktzahl von 60 ");
      scanf("%i",&zahl1);    
      
      
      
      summe = 6 - 5 * zahl1 / 60;    
      
      printf("\n\n\nDie Note betraegt: %i",summe);      
      
           }

Grüße
 
probier mal
Code:
summe=(6 - 5 * zahl1 )/ 60.0;
das sollte klappen.

Wenn du durch einen int durch einen int wert dividierst, kommt als Resultat ebenfalls ein int wert raus:)
 
weiß nicht wie das heute ist, doch früher hatte ich immer die #include <math.h> dabei
 
Nach obiger Formel (summe = 6 - 5 * zahl1 / 60; ) wird eigentlich folgendes berechnet:
Code:
summe = 6 - ((5 * zahl1) / 60);
Was wohl eher gewünscht ist (vermutlich...) könnte der Anteil der Gesamtzahl an Punkten sein:
Code:
summe = zahl1 / 60.0f; // also konkret mit float
und anschließend dann weitere Operationen:
Code:
summe = 6 - (5 * summe);
Mal rein spekulativ ins Forum geworfen :D
 
Zuletzt bearbeitet:
Rein Spekulativ :ugly: (deswegen habe ich ja auch nach der Formel gefragt)

summe = zahl1 / 60.0f; // also konkret mit float

Stimmt, da hätte ich jetzt gar nicht drangedacht.
Ich hätte es so gemacht:

Code:
summe = (float) zahl1 / 60.0;

Was natürlich, in dem fall jetzt nicht, aber sonst, exceptions mir ins Gesicht schmeissen kann.
 
Wie ist die Rechnung denn richtig? Gib mir mal ein Beispiel.

Habe nochmal nachgesehen kleiner Fehler :ugly: (Die Formel dient zur Noten Berechnung in Klassenarbeiten) --> 6-5*(Erreichte Punkzahl/Erreichbare Punkte)
Code:
summe = 6.0 - 5.0 * (zahl1 / 30.0);
Mit Komma ist es richtig. Habe es verbessert.

Jedoch habe ich immer noch das Problem mit Nachkommastelle. Habs wie ihr empholen habt mit Float probiert kommt weiterhin immer Wert=0
Ich kann wetten das ich einen total dummen Fehler immer mache :ugly:
Code:
 #include <stdio.h>

 void main ()
    {
      float zahl1; 
      float summe;
      
      printf("\n\n\nNotenberechnung");
      printf("\n*******************");
      
      printf("\nErreichte Punktzahl von 30 ");
      scanf("%i",&zahl1);    
      
      
       
      summe = 6.0 - 5.0 * ( (float) zahl1 / 30.0f);    
      
      printf("\n\n\nDie Note betraegt: %i",summe);      
      
           }
 
Zahl1 sollte doch eine ganz zahlige Zahl sein, oder? Dann kannst die auch auf int lassen, ist aber im Endeffekt egal.

So:
Code:
 summe = (float) 6.0 - 5.0 * (zahl1 / 30.0);

Oder so:
Code:
 summe = 6.0f - 5.0f * (zahl1 / 30.0f);
 
Zuletzt bearbeitet:
printf("\n\n\nDie Note betraegt: %i",summe);

ahem ^^ wenn du hier nen integer in den string baust wird der float wert natürlich zur ausgabe gecastet und alle schöne rechnerei vorher war fürn hannes :P probier hier mal %d statt %i.
 
Hist, ich wollte es schon sagen. Ist mir direkt als erstes aufgefallen :D

Ich glaub der Threadersteller sollte sich nochmal klar machen, was Datentypen sind, und wie man Sie nutzt. Vor allem auch, wie man eine Ausgabe richtig macht.

Darum geht es auch. Nicht um ein funktionierendes Programm, das etwas "sinnvolles" macht, sondern darum sich der Datentypen, und deren richtiger Handhabe klar zu werden.
 
printf("\n\n\nDie Note betraegt: %i",summe);

ahem ^^ wenn du hier nen integer in den string baust wird der float wert natürlich zur ausgabe gecastet und alle schöne rechnerei vorher war fürn hannes :P probier hier mal %d statt %i.

%d ist übrigens auch Integer soweit ich mich erinnern kann.



Ich würds mal so probieren


scanf("%f",&zahl1);


summe = 6.0 - 5.0 * (zahl1 / 30.0);

printf("\n\n\nDie Note betraegt: %.2f",summe);
 
Warum glauben und nicht wissen?

Wenn man solche Aufgaben bekommt, wollen die Steller, das man Seiten wie diese findet: printf - C++ Reference

Da braucht man nicht mehr glauben und sich erinnern, sondern man kann binnen Sekunden nachschlagen. ;)

Das macht ja einen guten Programmierer auch mit aus. Er weiß wo er zur Not nachschlagen kann. ;)
 
Zurück