Dringende Hilfe bei einer Aufgabe
-
Also ums kurz zu machen, hab folgende Aufgabe:
Schreiben Sie ein Programm in der Sprache C4, welches Zahlen über die Konsole
einliest und zählt, wie oft die gleiche Zahl eingelesen wurde. Beachten Sie dabei
folgendes:
a) Das Programm liest Zahlen aus dem Bereich 0 - 50 (inklusive 0 und 50)
über die Konsole ein. Falls eine Zahl eingegeben wird, welche nicht in
diesem Bereich liegt, so wird das Einlesen der Zahlen beendet und es wird
eine Zusammenfassung ausgegeben (siehe c)).
b) Die Zahler müssen in einem eindimensionalen Array abgelegt werden.
c) Die Zusammenfassung enthält fur jede Zahl, welche mindestens einmal
eingelesen wurde, eine Zeile der Form Zahl: Anzahl
z.B. Eingabe:
45
3
10
3
45
3
Ausgabe:
3: 3
10: 1
45: 2Meine Lösung:
prog zaehler2 int p; { bool nochmal; nochmal = true; int [] array; array= new int[66]; int i; i=0; int x; x=0; while(nochmal) {read(x); if (x<0 ||x>50) {i=0; int j; j=0; int help; while(i<array.Length-1) {j=i+1; while(j<array.Length) { if(array[i]>array[j]) { help= array[i]; array[i]= array[j]; array[j]= help; } j=j+1; } i=i+1; } i=0; while(i<array.Length) { if ( array[i] != 0 ) p=1; print(array[i]); print(": "); while(p<array.Length) {if(array[i]==array[i+1]) p=p+1; } print(p); print("\n"); i=i+1; } nochmal=false; } else {array[i]=x; i=i+1; } } }
Bekomme in Zeile 23 einen arrayIndexoutofBounceException-Fehler.
Wäre schön wenn ihr das Programm dort so berichtigt, dass es läuft.
Ist ein C4 Programm, also eine Vorstufe zu c#.
-
soweit ich weiß, ist C4 sprengstoff :p
außerdem war mir bisher unklar, dass C "new" kennt...
wird nicht normaler Weise malloc/calloc genommen? ^^zu deinem Fehler:
vergleich einfach mal Zeile 21 und 23, dann weißt du, warum du in Zeile 23 die Array-Grenzen überschreitestZeile 23 muss also so aussehen:
while(j<array.Length-1)
-
danke, jetzt läuft das programm zwar, doch noch nicht so wie die aufgabenstellung es sagt
hat wer eine idee?
-
abuyg schrieb:
danke, jetzt läuft das programm zwar, doch noch nicht so wie die aufgabenstellung es sagt
hat wer eine idee?
mach ein array mit 51 'unsigneds' (wegen 0...50), setze alles auf 0 (z.b. ein globales array, dann macht der compiler das für dich) und dann zähl einfach jedes element hoch, indem du den input als index nimmst: array[input]++