Probleme mit C-Programmierung: Zahlen sortieren?

2 Antworten

Funktioniert das Zählen denn schon? Wenn ja: Such doch mal nach "Bubble Sort" oder "Quicksort". (Wobei bubble bei 26 eingaben vermutlich sogar schneller ist als Quick)

Oder wo ist das Problem noch? 

Zwei kleine Hinweise noch: Deine if-Anweisungen sind KEINE Zählschleifen, da rollen sich manchen Leuten hier die Fußnägel rauf

Und: Wieso  benutzt Du doubles zum zählen?


Patrick0891 
Fragesteller
 11.06.2016, 18:05

Das Programm funktioniert so weit, nur sortiert er die Zahlen noch nicht. Ich probiere es nochmal mit Bubblesort, nur hat das Programm nur Mist ausgespuckt als ich es damit versucht habe. Hab double genommen wegen der Nachkommastellen der Häufigkeit. Mit int Werten kam keine zweite Nachkommastelle.

Ich bin halt kein pro und überhaupt froh, wenn die Programme das machen, was sie sollen. :D

0
oelbart  11.06.2016, 18:13
@Patrick0891

Mit int hast Du überhaupt keine Nachkommastellen, aber wozu brauchst Du nachkommastellen, wenn Du Buchstaben zählst?

0
Patrick0891 
Fragesteller
 11.06.2016, 18:21
@oelbart

Ich habe auch die Häufigkeit in % der vorkommenden Buchstaben mit angegeben.

0
oelbart  11.06.2016, 18:26
@Patrick0891

Jo, im Array "prozente". Aber davor zählst Du doch nur, oder?

Also, nicht dass  das nicht funktioniert, aber es könnte den Leser etwas verwirren, weil er erwartet, dass da noch was mit gemacht wird.

0
Patrick0891 
Fragesteller
 11.06.2016, 18:32
@oelbart

Frag mich nicht wieso, aber ich hatte das Array vorher als int Wert festgelegt, allerdings hat er für prozente keine Nachommastellen mehr gehabt, wenn ich das Programm dann ausgeführt habe.

0
oelbart  11.06.2016, 19:03
@Patrick0891

Klar, wenn Du int/int rechnest, benutzt er die Integer-Division und die ist abrundend ("Division ohne Rest")

Das lässt sich aber verhindern, indem Du zb schreibst prozente= (double)anzahl/gesamt
(oder prozente = anzahl/(double)gesamt - musste ausprobieren)

0

Wenn Du Dich auf 8-Bit-Zeichen beschränkst, kannst Du auch in ein Zähl-Array [256] saldieren:

while (0 < c = fgetc(fp)) zaehlArray[c]++;

Es ist kein guter Stil, ohne Not "while (1)" zu verwenden, wenn man ohnehin die Abbruchbedingung in Reichweite hat.

Nun kannst Du mit direkter Auswahl die Buchstabenanzahlen ab

zaehlArray['A']+zaehlArray['a'] sortieren.