Sortierung von Arrays
-
Hallo liebe Coder-Gemeinde..
Um es vorweg zu nehmen ich bin noch ein blutiger Anfänger was das Programmieren angeht!
Habe ein kleines Problem bei einem Übungsprogramm.
Mir wurde aufgetragen das ich ein Programm schreibe das die Anzahl der Zeichen der eingegebenen Wörter zählt. Diese sollen in einem Array gespeichert und sortiert ausgegeben werden.
Das ist auch mein Problem, bekomme das nicht mit der sortierten Ausgabe hin.
Mein Quellcode sieht bisher so aus:
#include <stdio.h> void main() { int iEingabe; int i = 0; int ndigit[5]; int iZaehler = 0; for(i = 0; i < 5; ++i) { ndigit[i] = 0; } i = 0; while((iEingabe = getchar()) != EOF) { if((iEingabe == ' ' || iEingabe == '\n' || iEingabe == '\t') && iZaehler > 0) ndigit[i] = iZaehler; iZaehler = 0; } else if(iEingabe != ' ' && iEingabe != '\t') { iZaehler++; } if(ndigit[i] > 0) { i++; } } for(i = 0; i < 5; i++) { } }
Würde mich über einen Tipp sehr freuen!
Viele Grüße
Mimas
-
Hi!
Wieso hat iEingabe den Typ int? In C werden werden Strings als Arrays vom Typ char gespeichert, und dann musst du immer testen, ob die Zeichen einem deiner Kriterien entspricht oder eben nicht.
Aja, und bitte benutze doch C/C++-Tags, um uns deinen Code zu präsentieren, editiere deinen Beitrag doch bitte nocheinmal, sonst wird dir auch keiner helfe, weil kein Mesch diese Anhäufung von Zeichen lesen kann.Noch eine Frage, was möchtest du sortieren, ich nehm mal an, die Wörter alphabetisch, oder?
2. Du musst den eingegebenen Satz dann zerpflücken, und jedes einzelne Wort in einem Array speicher, dann kannste erst sortieren!mfg
blut-lecker
-
Hallo Blu-Lecker,
habe den Beitrag editiert, sorry hatte ich vergessen..
Ich möchte die Anzahl der Buchstaben (Zeichen) in einem Wort zählen und dann sortiert ausgeben.. Dies darf aber nur mit der Standardbibliothek <stdio.h> passieren, hatte schon an qsort, bubblesort etc gedacht..
die Ausgabe könnte dann beispielsweise so aussehen:
8 6 5 4 2 oder
8
6
5
4
2Hast du irgendeine idee dafür?
Grüße
Mimas
-
blut-lecker schrieb:
Wieso hat iEingabe den Typ int? In C werden werden Strings als Arrays vom Typ char gespeichert, und dann musst du immer testen, ob die Zeichen einem deiner Kriterien entspricht oder eben nicht.
Nein, 'man getchar'.
char wäre der falsche Typ, wegen dem Vergleich mit EOF.
Mimas: Es gibt verschiedene Möglichkeiten, ein Array zu sortieren. BubbleSort kann man zB da: http://www.volkard.de/vcppkold/inhalt.html nachlesen. Wo ist da dein Problem? Machs doch einfach.
-
Sorry, klar, ich hab die Aufgabe völlig falsch verstanden und den Code nur ganz flüchtig überflogen sry, is klar. ICh ging davon aus, dass er nen kompletten String hat und den danach auswerten muss.
mfg
blut-lecker
-
blut-lecker schrieb:
Korrigier mich nochmal wenn ich falsch lieg, vlt versteh ich au net ganz, was er moechte, aber bis jetzt check ich no net ganz, was er will.
Er zählt im die Anzahl der Zeichen zwischen den Worttrennern ('\n', ' ', '\t') und dazu kommt er natürlich vollkommen ohne Strings aus.
Um hier noch die üblichen Kritikpunkte anzugeben: das statische Array ist ohne Indexprüfung gefährlich (aber Teil der Aufgabenstellung?) und 'void main' ist auch nicht korrekt. Aber das geht mehr oder weniger an der Sache vorbei, der OP sucht ja nur eine Implementierung für einen einfachen Sortieralgorithmus oder verstehe ich da was falsch?
-
Sortierbeispiel:
#define INDEX 5 int arr[INDEX] = {7, 3, 6, 9, 2}; int main() { int tmp; int flag = 1; while(flag) { flag = 0; for(int i = 0; i < (INDEX-1); i++) { if (arr[i] < arr[i+1]) { tmp = arr[i+1]; arr[i+1] = arr[i]; arr[i] = tmp; flag = 1; } } } return 0; }