Brauchde dringend Hilfe
-
Also wie schon im Titel brauche ich hier eure Hilfe, finde den blöden Fehler nicht!
Hier einmal das Programm:
# include <stdio.h> # include <stdlib.h> main() { int StimmenA, StimmenB, StimmenC; int sitze; int SitzeA, SitzeB, SitzeC; int teilerA, teilerB, teilerC; int QuotientA, QuotientB, QuotientC; int max; printf("Stimmen fuer Partei A: "); scanf("%d", &StimmenA); printf("Stimmen fuer Partei B: "); scanf("%d", &StimmenB); printf("Stimmen fuer Partei C: "); scanf("%d", &StimmenC); printf("Gesamtzahl der Sitze: "); scanf("%d", &sitze); printf("\n"); for( ; sitze; sitze = sitze - 1) { if(QuotientA > QuotientB) { if(QuotientA > QuotientC) max = 1; else max = 3; } else { if(QuotientB > QuotientC) max = 2; else max = 3; } if(max == 1) { SitzeA = SitzeA + 1; QuotientA = StimmenA / teilerA; teilerA = teilerA + 1; } if(max == 2) { SitzeB = SitzeB + 1; QuotientB = StimmenB / teilerB; teilerB = teilerB + 1; } if(max == 3) { SitzeC = SitzeC + 1; QuotientC = StimmenC / teilerC; teilerC = teilerC + 1; } } printf("Sitzverteilung:\n\n"); printf("Partei A | Partei B | Partei C\n"); printf("---------+----------+---------\n"); printf(" %3d | %3d | %3d \n", SitzeA, SitzeB, SitzeC); printf("\n"); system("PAUSE"); return EXIT_SUCCESS; }
so bei der eingabe hab ich für Partei A: 10000, Partei B: 8000 und für Partei C: 6000 Stimmen; Anzahl der Sitze ist 15; Lösung sollte sein: 6 Sitze für A, 5 Sitze für B und 4 Sitze für C!
bei mir kommt das aber leider nicht heraus, hoffe es findet jemand den fehler
-
Ohne den Algorithmus genauer zu prüfen: Du benutzt eine Reihe von Variablen (teiler*, sitze*), ohne ihnen einen Wert zugewiesen zu haben.
-
Explodiert ein Atomkraftwerk, wenn du das nicht löst? Stürzt ein Meteor auf die Erde? Wird das für die Bundestagswahl gebraucht? Was ist da dran dringend?
Wenn du weniger dumme Sprüche und mehr Antworten möchtest:
-Aussagekräftige Threadtitel
-Aussagekräftige FehlerbeschreibungenP.S.: Lokale Variablen werden nicht mit 0 initialisiert, wenn sie nicht initialisiert werden. Dies könnte eventuell ein Hinweis auf deinen Fehler sein
.
P.P.S.: Dir ist schon klar, dass in Ganzzahlen gerechnet 7/2 == 3, oder? Das ist zwar nicht dein unmittelbarer Fehler, aber es könnte auch noch mal wichtig werden.
-
Was kommt denn sonst bei dir raus? Wäre sehr hilfreich, das zu wissen.
for( ; sitze; sitze = sitze - 1) { ... }
Ist das ein neuer Stil, for-Schleifen zu bilden?
Den Sinn dahinter verstehe ich nicht wirklich.
Edit: willst du mit der Bedingung "sitze" einfach nur überprüfen, ob die Variable "true", also >0 ist?
Zudem du jasitze--
oder--sitze
verwenden könntest, aber das dürfte unwichtig sein.