[ erweiterte Suche ]

»Klassendurchschnitt errechenen

Bin neu hier :)....bräuchte Eure HilfeNeues Thema eröffnenNeue Antwort erstellenDas Thema einem Freund empfehlenDas Thema druckenEine kleine Änderung zerstört ein Programm aber wieso ?
Seite 1 von 1 [4 Beiträge]
AutorNachricht
Beobachter 

Anmeldedatum: 12.01.2011
Beiträge: 1
Chats: 19
12.01.2011, 14:27


Hallo alle zusammen ich habe mir folgenden Code geschreiben:
   Code:

#include <stdio.h>

main()
{
      int pupils,noten,note;
      float durchschnitt=0.0;
      printf("Wie viele Schueler haben mit geschreieben?\n");
      scanf("%i",&pupils);
      printf("Wie viele sehr gut?\n");
      scanf("%i",&note);
      noten=note*1;
      printf("Wie viele gut?\n");
      scanf("%i",&note);
      noten=noten+note*2;
      printf("Wie viele befridigent?\n");
      scanf("%i",&note);
      noten=noten+note*3;
      printf("Wie viele ausreichend?\n");
      scanf("%i",&note);
      noten=noten+note*4;
      printf("Wie viele mangelhaft?\n");
      scanf("%i",&note);
      noten=noten+note*5;
      printf("Wie viele ungenuegend?\n");
      scanf("%i",&note);
      noten=noten+note*6;
      durchschnitt=noten/pupils;
      printf("Der Durchschnitt betraegt: %f\n",durchschnitt);
      system("PAUSE");
}


Es kommt immer 3.0000 raus wenn ich: sehr gut:/;gut:6;befridigent:7;ausreichend:8;mangelhaft:3;ungenügend:1

Bitte hilft mir
Nach obenprofil pn
Administrator 


Name: Marc
Geschlecht:
Anmeldedatum: 28.08.2004
Beiträge: 40795
Chats: 11134
Wohnort: Hennef


Meine eBay-Auktionen:
14.01.2011, 16:35


Lass Dir doch einfach mal die Zwischenergebnisse ausgeben. D.h. zwischendurch mal "noten" ausgeben und schauen wo das Problem liegen könnte.
Nach obenprofil pn email
Beobachter 


Geschlecht:
Fahrzeug: Countach Quattrovalvole, Rennrad
Anmeldedatum: 27.12.2010
Beiträge: 9
Chats: 72
15.01.2011, 11:58


   jenentiger schrieb:
:
   Code:

main(void)
{
      printf("Der Durchschnitt betraegt: %.1lf\n",durchschnitt);
      system("PAUSE");
}


Es kommt immer 3.0000 raus wenn ich: sehr gut:/;gut:6;befridigent:7;ausreichend:8;mangelhaft:3;ungenügend:1

Bitte hilft mir


Hi,

ertsmal in main(void) ersetzen und in in der printf() Ausgabe musst du statt %f %.0lf für long float ersetzen die .0 reduziert die Ausgabe auf Null Dezimalstellen, willst du ein Kommawert haben dann schreibst du einfach %.1 oder %.2, was in diesem Fall 1 oder 2 Dezimalstellen nach dem Komma sind.
int kann keine Dezimalstellen dafür benötigst du double

Dann kommt auch das korrekte Ergebnis von 3.4 raus

Was nützlich ist, wäre einen Vergleicher eintzubauen der merkt wann die eingebene Schülerzahl erreicht ist, sprich:
wieviel Schüler gesamt zB. 10,
wieviel haben sehr gut? 3
wieviel Schüler haben gut? 5
wieviel Schüler haben befriedigen 0
wieviel Schüler haben ausreichend? 2

Jetzt wurde die Schüleranzahl "10" erreicht und somit brauch kein ungenügend und mangelhaft mehr abgefragt werden!
Wenn jetzt bei ausreichend statt 2 zB. 3 Schüler eingeben wird könnte eine Meldung erscheinen die sagt "es haben nur 10 Schüler teilgenommen"

ich habe es bearbeitet, so wie es aussehen muss

   Code:
/** Praeprozessor
  */
#include <stdio.h>
#include <stdlib.h>

/** Notenverwaltung.c
  * bearbeitet von tgsflash
  */
int iNotenverwaltung()
{
      int    iSchueler     = 0;
      double dNoten        = 0.0;
      double dNote         = 0.0;
      double dDurchschnitt = 0.0;
     
      printf("Wie viele Schueler haben mit geschrieben?\n");
      scanf("%i",&iSchuefler);
      printf("Wie viele sehr gut?\n");
      scanf("%lf",&dNote);
      dNoten=dNote*1;
      printf("Wie viele gut?\n");
      scanf("%lf",&dNote);
      dNoten=dNoten+dNote*2;
      printf("Wie viele befriedigent?\n");
      scanf("%lf",&dNote);
      dNoten=dNotfen+dNote*3;
      printf("Wie viele ausreichend?\n");
      scanf("%lf",&dNote);
      dNoten=dNoten+dNote*4;
      printf("Wie viele mangelhaft?\n");
      scanf("%lf",&dNote);
      dNoten=dNoten+dNote*5;
      printf("Wie viele ungenuegend?\n");
      scanf("%lf",&dNote);
      dNoten=dNoten+dNote*6;
      dDurchschnitt=dNoten/iSchueler;
      printf("Der Durchschnitt betraegt: %.1lf\n",dDurchschnitt);
      system("PAUSE");
      return 0;
}

/** Steuerfunktion
  */
int iController()
{
    iNotenverwaltung();
    return 0;
}

/**Schnittstelle main()
  */
int main()
{
    iController();
    return 0;
}

/** Programmende
  */

Zuletzt bearbeitet von tgsflash am 15.01.2011, 14:39, insgesamt 6-mal bearbeitet
Nach obenprofil pn
Administrator 


Name: Marc
Geschlecht:
Anmeldedatum: 28.08.2004
Beiträge: 40795
Chats: 11134
Wohnort: Hennef


Meine eBay-Auktionen:
15.01.2011, 12:02


Oder man lässt die Schüleranzahl weg und baut die Abfrage so, dass man direkt alle Notenanzahlen parallel eingeben kann. Die Summe aller Noten ist dann ja eh die Schüleranzahl.
Nach obenprofil pn email
Gast 

15.01.2011, 12:02


Mach mit!

Wenn Dir die Beiträge gefallen haben oder Du noch Fragen hast oder Ergänzungen machen möchtest, solltest Du Dich gleich bei uns anmelden:

    » Anmelden

Registrierte Mitglieder genießen die folgenden Vorteile:
✔ kostenlose Mitgliedschaft
keine Werbung
✔ direkter Austausch mit Gleichgesinnten
✔ neue Fragen stellen oder Diskussionen starten
✔ schnelle Hilfe bei Problemen
✔ Bilder und Videos hochladen
✔ und vieles mehr...
Nach oben
Seite 1 von 1 [4 Beiträge]
Neue Antwort erstellen
© 2004 - 2012 www.programmierer-forum.de (srv02) | Communities | Impressum