» Klassendurchschnitt errechenen

Bin neu hier :)....bräuchte Eure HilfeNeuen Thread eröffnenNeue Antwort erstellenEine kleine Änderung zerstört ein Programm aber wieso ?
AutorNachricht
Beobachter 
Anmeldedatum: 12.01.2011
Beiträge: 1
12.01.2011, 14:27
zitieren

Hallo alle zusammen ich habe mir folgenden Code geschreiben:

#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


pn
Administrator 

Name: Marc
Geschlecht:
Anmeldedatum: 28.08.2004
Beiträge: 52423
Wohnort: Lohmar


Meine eBay-Auktionen:
14.01.2011, 16:35
zitieren

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

pn email
Newbie 

Geschlecht:
Fahrzeug: Countach Quattrovalvole
Anmeldedatum: 27.12.2010
Beiträge: 17
15.01.2011, 11:58
zitieren

jenentiger:

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

/** 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
  */


 6x  bearbeitet
pn
Administrator 

Name: Marc
Geschlecht:
Anmeldedatum: 28.08.2004
Beiträge: 52423
Wohnort: Lohmar


Meine eBay-Auktionen:
15.01.2011, 12:02
zitieren

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.

pn email
Gast 
15.01.2011, 12:02
zitieren

Mach mit!

Wenn Dir die Beiträge zum Thread "Klassendurchschnitt errechenen" gefallen haben oder Du noch Fragen hast oder Ergänzungen machen möchtest, solltest Du Dich gleich bei uns 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...


Neue Antwort erstellen
© 2004 - 2025 www.programmierer-forum.de | Communities | Impressum |