[Java] Hilfe beim Programm

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Laura, 22. November 2008 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 22. November 2008
    Hilfe beim Programm

    Hey

    In dem Programm geht es darum von 5 Schulklassen den Durchschnitt zu Berechnen
    Soweit läuft das Programm einigermaßen aber leider hab ich Probleme mit dem Durchschnitt er zählt jede schon Berechnete Klasse zum neuen Schnitt dazu Beispiel:
    1. Klasse 2.5 -- 2. Klasse "Schnitt der 2. Klasse" + 2.5

    Mir fällt nicht ein wie ich das ändern kann liegt auf jeden Fall irgendwie am while

    2. Die Berechnung vom Durchschnitt stimmt nicht wirklich aber ich bekomms nicht hin dass er jede Note * der anzahl der Note /gesamt Anzahl an Noten macht
    Hoffe ihr könnt mir helfen

    Für die, die gleich wieder meckern, dass es HA sind
    1. Das Programm ist doch im großen und ganzen schon da, ich benötige lediglich etwas hilfe
    2. Sagt mein Lehrer wir SOLLEN alle möglichen Hilfen in Anspruch nehmen

    Hier noch meine Tastatur Klasse:
    http://rapidshare.com/files/161759320/Tastatur.rar

    Code:
    package uebungNr05_Kapitel_14_19_******;
    
    public class nn {
    
     public static void main(String[] args) {
     
    
     
     
     //Deklaration der Variablen
     
     int anzahlNoten;
     float notenSumme=0;
     float notenfeld[];
     int zaehler=1;
     double klausurSchnitt;
     
     
     
     //Wertzuweißung, Berechnung, Ausgabe
     
     while(zaehler <=5) 
     {//anfang while 
     
     System.out.print("Wieviele Noten? (Zwischen 1 und 6) ");
     anzahlNoten = Tastatur.leseZahl();
     notenfeld = new float[anzahlNoten];
     
     for (int i = 0; i < anzahlNoten ; i++)
     {//anfang for
     
     System.out.print((i+1)+".Note: ");
     notenfeld[i] = Tastatur.leseZahl();
     notenSumme = notenSumme + notenfeld[i];
     
     
     }//end for
     klausurSchnitt=notenSumme/anzahlNoten;
     System.out.println("Durchschnitt: "+klausurSchnitt);
     
     if(klausurSchnitt>4.5)
     {//anfang if
     System.out.println("Bitte einen Lehrertausch wegen Unfähigkeit bei der Schulleitung beantragen!");
     }//end if
     if(klausurSchnitt<2) 
     {//anfang if
     System.out.println("Bitte die nächste Klausur etwas schwieriger stellen!");
     }//end if
     
     zaehler++;
     
     }//end while
     System.out.println("Programmende Notenfeld.");
     
     
    
     
     }//end main
    }//end class
    
     
  2. 22. November 2008
    AW: Hilfe beim Programm

    hmm du hast hier im prinzip 2 möglichkeiten:

    - du dividierst nach der while den gesamtnotenschnitt durch die anzahl der klassen. also wenn du 5 klassen berücksichtigt hast rechnest du schnitt / 5 und bekommst den gesamtdurchschnitt der 5 klassen raus. ausgaben natürlich auch dann erst nach der ganzen berechnung.
    - du zählst alle noten aller klassen sowie die gesamtanzahl an eingegebenen noten in der klasse zusammen und rechnest den durchschnitt erst NACH DER WHILE aus und gibst auch deine Statements dazu "bitte klausur ..." erst danach aus. du verwendest also die while hier nur zum zählen

    müsste im prinzip das selbe rauskommen, die 2te variante ist halt etwas sauberer wenn du mich fragst. aufpassen beim durchdividieren dass du mit float-variablen rechnest sonst bekommst du nur ganze zahlen raus!
     
  3. 22. November 2008
    AW: Hilfe beim Programm

    hmm das sollte aber eigentlich gleich danach erfolgen
    gibts nich ne andere möglichkeit, dass die Klassenberechnungen 5 mal wiederholt werden
     
  4. 22. November 2008
    AW: Hilfe beim Programm

    ah ok glaub ich hab da etwas andres gemeint mit dem durchschnitt ... sollst du für alle 5 klassen zusammen den schnitt berechnen oder nur für jeweils eine klasse?

    für jeweils eine: einfach notensumme am ende der while wieder auf 0 setzen dann wird für jede klasse einzeln der wert berechnet!
     
  5. 22. November 2008
    AW: Hilfe beim Programm

    HAHA danke wie dumm das ist ja ein dummer Fehler so einfach und doch so schwer^^
    aber jetzt ist noch das Problem, dass der Durchschnitt nicht richtig berechnet wird also der zählt einfach alle eingegebenen noten zusammen und teilt durch 6 der muss aber
    1. note*anzahl/notenanzahl machen das bekomm ich ned hin
     
  6. 22. November 2008
    AW: Hilfe beim Programm

    naja note und anzahl hast du ja gegeben die komplette anzahl der noten kann man sich ja errechnen in dem man alle anzahlen zusammen addiert.

    und deine Formel ist auch so nicht korrekt wäre eher:
    note_1*anzahl_1+note_2*anzahl_2......+note_6*anzahl_6 und das alles durch die gesamtanzahl
     
  7. 22. November 2008
    AW: Hilfe beim Programm

    okay aber wie bekomm ich das da rein denn jede note zählt der ja hoch und dass muss ich dem ja iwie sagen dass der note*anzahl macht
    hier: notenSumme = schuelerNoten*noten++; jetzt nimmt ja nur die erste note die man eingibt er soll ja aber alle nehmen
     
  8. 22. November 2008
    AW: Hilfe beim Programm

    Schau dir mal an wie du die notensumme berechnest da fehlt bei dir etwas.
    Denn wie du schon sagtest addiert man note*anzahl für alle noten zusammen, das müsste genau an dieser stelle geschehen!
     
  9. 22. November 2008
    AW: Hilfe beim Programm

    ja schon aber er er zählt die noten ja hoch und wie kann ich das dem sagen
    notenSumme = -------------*schuelerNoten; macht ers ja nur für die erste
    was muss da für ----- rein das bekomm ich ned hin

    edit:
    Ich könnte es ja auch ausschreiben
    1*schuelerNoten+2*schuelerNoten+3*schuelerNoten.......6*schuelerNoten
    aber wenn ich nur 5 berechnen will geht das eben nicht also muss da irgendwas varierbares rein
     
  10. 22. November 2008
    AW: Hilfe beim Programm

    Schau dir mal an was i in dieser schleife ist!
    Und dann gegebenfalls das i noch etwas verändern.
     
  11. 22. November 2008
    AW: Hilfe beim Programm

    hmm ich steh auf dem schlauch ich bekomm es einfach ned hin
     
  12. 22. November 2008
    AW: Hilfe beim Programm

    Was ist das i?
    Antwort: Note-1
    also Note=i+1
    und jetz geh endlich runter vom schlauch.
     
  13. 23. November 2008
    AW: Hilfe beim Programm

    hmmmmm
    ich bekomms einfach ned hinn ;(

    notenSumme=anzahl * noten
    noten++;
    jetzt zählt er 1 dazu aber das macht er nur 1 mal nicht 6 mal mit ner while hab ich das auch ned hinbekommen
     
  14. 23. November 2008
    AW: Hilfe beim Programm

    Ich hab mir den Thread durchgelesen, versteh dein Problem aber leider net^^

    Könntest du deinen jetzigen (neusten) Code mal posten und dann beschreiben, wo es klemmt?
     
  15. 23. November 2008
    AW: Hilfe beim Programm

    hier das rote ist mein Problem

    Code:
    package uebungNr05_Kapitel_14_19_'''''''';
    
    public class ff {
    
     public static void main(String[] args) {
     
    
     
     
     //Deklaration der Variablen
     
     int anzahlNoten;
     double notenSumme=0;
     double anzahl;
     int zaehler=1;
     double klausurSchnitt = 0;
     double noten = 0;
     
     
     
     //Wertzuweißung, Berechnung, Ausgabe
     
     while(zaehler <=5) 
     {//Anfang while 
     
     System.out.print("Wieviele Noten? (Zwischen 1 und 6) ");
     anzahlNoten = Tastatur.leseZahl();
     
     int i=0;
     while(i < anzahlNoten)
     {//anfang while
     
     
     System.out.print((i+1)+".Note: ");
     anzahl = Tastatur.leseZahl();
     
     [COLOR="Red"]notenSumme=anzahl * (i+1);
     i++;[/COLOR] }//end while
     
     
     //Berechnung und Ausgabe des Durchschnitts
     
     klausurSchnitt=notenSumme/anzahlNoten;
     System.out.println("Durchschnitt: "+klausurSchnitt);
     
     if(klausurSchnitt>4.5)
     {//Anfang if
     System.out.println("Bitte einen Lehrertausch wegen Unfähigkeit bei der Schulleitung beantragen!");
     }//End if
     if(klausurSchnitt<2) 
     {//Anfang if
     System.out.println("Bitte die nächste Klausur etwas schwieriger stellen!");
     }//End if
     
     zaehler++;
     
     //notenSumme auf 0 setzen
     
     notenSumme=0;
     
     }//End while
     
     //Ausgabe Programmende
     
     System.out.println("Programmende Notenfeld.");
     
     }//end main
    }//end class
    
     
  16. 23. November 2008
    AW: Hilfe beim Programm

    Fast:
    notenSumme = notenSumme + notenfeld;
    Das war dein voriger Code. So nehmen wir das mal auseinander.
    Wir müssen auf folgende Formel kommen:
    note_1*anzahl_1+note_2*anzahl_2+.......+note_6*anzahl_6
    Genau das soll in deiner Notensumme stehen!
    In notenfeld steht die anzahl an Noten für die Note i+1; (Also in notenfeld[0] anzahl an 1sen)
    Das heißt bei deinem vorigen Code hast du die ganze anzahl an i-ten Noten aufsummiert:
    anzahl_1+anzahl_2+anzahl_3 bis + anzahl_6

    Aber für unsere Formel fehlt ja eindeutig noch die Note selber damit wir auf unsere vorige Formel kommen. Darauf war mein voriger tipp ausgelegt.
    So und mehr helf ich dir nicht mit dem Problem, da es eigentlich klar ist wenn man sich die Formel noch mal anschaut und sich genau überlegt was der geschriebene Code (auch wenn ich nich ganz sicher bin ob der wirklich von dir ist) überhaupt macht bzw was alle einzelnen Variablen bedeuten.
    Wenn es dir nicht klar ist würd ich dir raten dir einen Zettel und stift zu nehmen und dich wirklich zu fragen was ist diese Variable und was passiert mit ihr.

    BTW: Ich weiß einiges darin war jetzt schon ganz schön hart, aber ich kann nicht verstehehn wie all dieser Code zustande gekommen ist und man an diesen kleinen Problem dann hängenbleiben kann, liegt aber vielleicht daran dass ich selber Mathe und Info studiere, da versteht man oft nicht wieso andere nicht darauf kommen.
     
  17. 23. November 2008
    AW: Hilfe beim Programm



    Ich weiß gar ned was da dran so schlimm ist mir zu helfen???
    1. Mein Lehrer ist so ein sch### Lehrer der erklärt gar nix
    2. Ich bin ein ANFÄNGER also ganz am anfang
    3. das programm ist von mir hab nur bei dem for im buch geschaut habs jetzt aber in while geändert der rest ist alles von mir
    4. Ist ist einfach schwer das prob zu beschreiben

    Ich veruchs noch mal:
    Also ich verstehe nicht wie ich es hin bekommt dass der eben note*anzahl+... macht aber eben nicht einmal sondern so oft man eben eine notenanzahl eingegeben hat. Wie dus schon geschrieben hast
    note_1*anzahl_1+note_2*anzahl_2+.......+note_6*anzahl_6 aber wie sag ich dem, dass der das 5 ,2 oder 6 mal macht?.Ich versteh das vorallem nicht weil eben überall (Buch gailer.net) nur so baby beispiele gegeben sind z.b mache solange etwas <3 ist. Wie soll ich dann so was einfach so können. Ich hab geteilten Unterricht einmal Eclipse und einmal Hamster Java und beim Hamster Java nen besseren Lehrer und das ist auch nicht so viel anders als eclipse da kann ich das aber
    Also ich hoffe mal dass du das jetzt verstehst warum ichs nicht versteh
     
  18. 24. November 2008
    AW: Hilfe beim Programm

    Ich hab dir schon 2 mal eine Lösung gegeben es steht sogar ganz speziell bei mir:
    Note = i+1;
    Also 1 = 0+1 2 =1 +1 etc.... (was halt bei jedem schleifenaufruf gemacht wird)
    Und das musst du ja noch dazu multiplizieren. Also versteh ich nicht wo noch dein Problem liegt.
    Aber ich nehm es weil ich heute gut drauf bin und morgen selber ne prüfung hab noch mal auseinander.
    Code:
     for (int i = 0; i < anzahlNoten ; i++)
     {//anfang for
     
     System.out.print((i+1)+".Note: ");
     notenfeld[i] = Tastatur.leseZahl();
     notenSumme = notenSumme + notenfeld[i];
     
     
     }//end for
    
    Was wird da gemacht? schauen wir es an. Zunächst ist i=0 und notensumme =0. i wird solange um 1 erhöht bis i kleiner anzahlNoten nicht mehr stimmt. Während wir das machen wird zunächst in notenfeld die Anzahl der i+1 Note gespeichert. Beispiel: i=0; In notenfeld[0] wird die Anzahl der Schüler mit Note 1 gespeichert.
    Dann wollen wir in notenSumme das berühmt zitierte ergebnis haben Anzahl der Note 1 * Note 1 + Anzahl der Note 2 * Note 2 + ..... + Anzahl der Note 6 * Note 6.

    deine notenSumme addiert aber nur zu den vorigen Anzahl der Noten die Anzahl der Note i+1(wichtig Anzahl der Note i+1 liegt in notenfeld.

    Beispiel i=2 in notensumme steht bereits Anzahl der Note 1 + Anzahl der Note 2, dort wird noch die Anzahl der Note 3 hinzuaddiert

    So das meinte ich mit schau dir an was dein Code macht, jetzt können wir korrigieren!

    Die notensumme ist eben noch nicht ganz richtig also müssen wir sie editieren. Wie gesagt wir müssen in jedem schritt nicht nur die Anzahl der Note i+1 hinzuaddieren sondern auch noch mit der note selber multiplizieren also mit i+1.

    So bitte lies dir das jetzt durch und überleg ob du es verstanden hast und falls nicht frag wo verständnisschwierigkeiten liegen.
    Ich werde NICHT den Code posten. Das mach ich aus 2 Gründen nicht:
    Zunächst ist es nur eine kleine Modifikation die nichts mit Informatik zu tun hat sondern mit etwas überlegen und verständnis was man tut.
    Und zweitens man lernt nicht wenn man es nicht selber macht!

    Ich würde dir raten immer zu überlegen was macht der Code den ich hier hin geschrieben hab und wie passt er zu dem mathematischen Modell was ich berechnen muss.

    Ich weiß informatik ist sehr verwirrend am Anfang und gerade wenn man eine Programmiersprache lernt ist man oft verwirrt, aber man muss sich immer bewusst machen was mache ich gerade und vor allem warum!
     
  19. 24. November 2008
    AW: Hilfe beim Programm

    okay hab das jetzt nochma gemacht und als test die notensumme ausgegeben nach jeder eingabe und jetzt zählt er alles zusammen also 6 dann 16 ... bis 56 soo aber was muss ich jetzt mit der 56 machen irgendwie geht der schnitt nicht wirklich so wenn ich einfach alle eingaben addiere hab ich 21 und das durch 6 macht 2,6 (so stimmts auch) also das kapier ich jetzt nemmer was brauch ich denn nun die 56 oder die 21 da stehts so und da so.
    Aber lass dir ruhig zeit hab die ganze woche kein tw mehr (da kann ich ja selber noch überlegen) also schreib erst ma dein test morgen und kümmer dich ned hier drum^^
    ich wünsch dir viel glück und danke für deine hilfe
    greetz


    Code:
    for (int i = 0; i < anzahlNoten ; i++)
     {//anfang for
     
     System.out.print((i+1)+".Note: ");
     notenfeld[i] = Tastatur.leseZahl();
     
     int note = i+1;
     notenSumme = notenSumme + notenfeld[i]*note;
     
     
    
     klausurSchnitt=notenSumme/anzahlNoten;
     System.out.println(notenSumme);
     }//end for
     
  20. 24. November 2008
    AW: Hilfe beim Programm

    Noch kurz ein Einwand dann geh ich wieder lernen.
    der klausurschnitt sollte aus der for schleife raus!

    Hab jetzt keine lust nachzugucken aber falls da noch fehler auftreten lass dir mal anzahlNoten ausgeben ob es das ist wodurch du wirklich teilen willst
     
  21. 24. November 2008
    AW: Hilfe beim Programm

    ja den schnitt hab ich nur rein gemacht (weiß das das so ned gehen kann) weil wenns auserhalb ist kann der dann dan wert notenSumme nemmer lesen dann will er dass ich den initialisiere aber will ja den wert aus der schleife?!? Fehler gibts eig keine aber der schnitt stimmt halt noch nicht wirklich es sollte eig 2,6 rauskommen da kommt aber glaub was mit 9 raus
    naja für heut erst ma egal
    viel glück morgen
    greetz
     
  22. 25. November 2008
    AW: Hilfe beim Programm

    Hmm also notensumme müsste er auch außerhalb der schleife reden können

    Was genau gibt dir anzahlNoten? weil bei dir steht was von 1-6.
    Nun eigentlich musst du durch die gesamtanzahl der schüler teilen! Soll es das sein?
     
  23. 25. November 2008
    AW: Hilfe beim Programm

    woow jetzt funzts
    hab mich vertan musste notensumme noch initialisieren und habe durch notenanzahl geteilt das kann aber aber nur wenn man die notenanzahl aufaddiert auf jeden läufts jetzt. Nur schade dass ich mich die ganze zeit auf den schnitt verlassen habe hatte das schon öfters beim ausprobieren so stehen aber weil das ergebnis nicht stimmt dachte ich so stimmts auch nicht
    DANKE für deine super Hilfe
    deine Berwertung haste dir jetzt verdient
    greetz
    Code:
    for (int i = 0; i < anzahlNoten ; i++)
     {//anfang for
     
     System.out.print((i+1)+".Note: ");
     notenfeld[i] = Tastatur.leseZahl();
     
     int note = i+1;
     notenSumme = notenSumme + notenfeld[i]*note;
     
     anzahlSchueler=anzahlSchueler+notenfeld[i];
     }//end for
     
     
     //Berechnung und Ausgabe des Durchschnitts
     
     klausurSchnitt=notenSumme/anzahlSchueler;
     System.out.println("Durchschnitt: "+klausurSchnitt);
     anzahlSchueler=0;
     
  24. 26. November 2008
    AW: Hilfe beim Programm

    Freut mich dass es bei dir klappt meine Info Prüfung ist übrigens auch mit 2.0 bestanden
     
  25. 26. November 2008
    AW: Hilfe beim Programm

    glückwunsch und danke nochmal für deine Hilfe
    damit ist dieses Thema

    ~closed~
     
  26. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.