sortieren in c
Ich habe hier einen fehler aber weiß nicht wo genau? aber ich vermute es ist in der erste Zeile
...
while(sort[x] == strlen(sort))
{
while(sort[x] != '\0')
{
x++;
if(sort[i] > sort[i+1])
{
char i;
i = sort[x];
sort[x] = sort[x+1];
sort[x+1] = i;
sotieren(&sort[i+1], &sort[i]);
}
}
}
...
...
while(sort[x] == strlen(sort))
{
while(sort[x] != '\0')
{
x++;
if(sort[i] > sort[i+1])
{
char i;
i = sort[x];
sort[x] = sort[x+1];
sort[x+1] = i;
sotieren(&sort[i+1], &sort[i]);
}
}
}
...
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 95494
Url: https://administrator.de/forum/sortieren-in-c-95494.html
Ausgedruckt am: 22.12.2024 um 18:12 Uhr
12 Kommentare
Neuester Kommentar
Hallo,
finden wir ja alle traurig, dass du da ein Problem hast.
Aber meine Glaskugel habe ich schon in die Schreibtischschublade geräumt. Und so weiß ich leider gar nicht, wie sich der Fehler äußert. Und was die Funktion tuen soll kann man ja noch raten (nie ganz ungefährlich), aber Angabe zu Datentypen etc wäre schon auch nett gewesen.
Gruß
Filipp
finden wir ja alle traurig, dass du da ein Problem hast.
Aber meine Glaskugel habe ich schon in die Schreibtischschublade geräumt. Und so weiß ich leider gar nicht, wie sich der Fehler äußert. Und was die Funktion tuen soll kann man ja noch raten (nie ganz ungefährlich), aber Angabe zu Datentypen etc wäre schon auch nett gewesen.
Gruß
Filipp
Zitat von @filippg:
Hallo,
finden wir ja alle traurig, dass du da ein Problem hast.
Aber meine Glaskugel habe ich schon in die Schreibtischschublade
geräumt. Und so weiß ich leider gar nicht, wie sich der
Fehler äußert.
ein in c geübter Mensch könnte das Problem rauslesen.Hallo,
finden wir ja alle traurig, dass du da ein Problem hast.
Aber meine Glaskugel habe ich schon in die Schreibtischschublade
geräumt. Und so weiß ich leider gar nicht, wie sich der
Fehler äußert.
Und was die Funktion tuen soll kann man ja
noch raten (nie ganz ungefährlich), aber Angabe zu Datentypen etc
wäre schon auch nett gewesen.
Ich glaub, einen anderen Beitrag von melisa88 gelesen zu haben, wo's um bubblesort ging. Lt. jenem Beitrag und dem Titel dieses Beitrags geht's um cnoch raten (nie ganz ungefährlich), aber Angabe zu Datentypen etc
wäre schon auch nett gewesen.
Aber Du hast Recht, ausführlicher hätt's schon sein dürfen
Gruß
Filipp
while(sort[x] == strlen(sort))
sort[x] gibt dir doch einen Char zurück und strlen(sort) die länge
von daher ist diese schleife eigentlich unsinn aus meiner sicht. vielleicht irre ich mich auch, bin grad aufgestanden und noch beim ersten kaffee
ich hatte mal für einen kumpel ne rekursive bubblesort funktion geschrieben.
string sortiere_rekursiv(string& zeichenkette, int length)
{
int durchlauf = 0;
unsigned char temp;
for(int index = 0; index < (length - 1); index++)
{
if(zeichenkette[index] > zeichenkette[index + 1])
{
temp = zeichenkette[index];
zeichenkette[index] = zeichenkette[index + 1];
zeichenkette[index + 1] = temp;
durchlauf++;
}
}
if(durchlauf != 0) sortiere_rekursiv(zeichenkette, length);
return zeichenkette;
}
Vielleicht bringt die dich ja auf den richtigen Schritt. da die klasse string benutzt wird, die für c++ bestimmt ist, musst du da wohl umbauen
Schön.
Fehlt nur noch die Fehlerbeschreibung.
Ich würde trotzdem auf die Zeile while(sort[x] == strlen(sort)) als Fehler tippen. strlen() gibt die Länge einer Zeichenkette, oder? sort[x] wiederum liefert ein char. Du vergleichst also einen char mit einem integer, oder? Das macht m.E. in den meisten fällen keinen Sinn...
Gruß
Filipp
Fehlt nur noch die Fehlerbeschreibung.
Ich würde trotzdem auf die Zeile while(sort[x] == strlen(sort)) als Fehler tippen. strlen() gibt die Länge einer Zeichenkette, oder? sort[x] wiederum liefert ein char. Du vergleichst also einen char mit einem integer, oder? Das macht m.E. in den meisten fällen keinen Sinn...
Gruß
Filipp
"Mit Verlaub her Präsident: Sie sind ein ###."
Als ich deinen Beitrag gesehen hab war mir klar: Da sollte man nicht antworten. Wer zu faul ist zu beschreiben, was er überhaupt machen will, der braucht auch keine Hilfe.
Bei deinem nächsten Beitrag schreibe gefälligst klar und deutlich das Ziel, die Rahmenbedingungen, deine Lösungsvorstellung, die Fehlersymptome und was du schon ausprobiert hast (mit welchem Erfolg).
Gruß
Filipp
Als ich deinen Beitrag gesehen hab war mir klar: Da sollte man nicht antworten. Wer zu faul ist zu beschreiben, was er überhaupt machen will, der braucht auch keine Hilfe.
Bei deinem nächsten Beitrag schreibe gefälligst klar und deutlich das Ziel, die Rahmenbedingungen, deine Lösungsvorstellung, die Fehlersymptome und was du schon ausprobiert hast (mit welchem Erfolg).
Gruß
Filipp
Hi melisa,
der Ansatz . . .
. . . ist ja schonmal ganz gut, ich frag' mich bloß, warum du anschließend
noch eine Funktion aufrufst, die das Gleiche nochmal durchführt??
Die Abbruchbedingung in der while-Schleife muß prüfen, ob ein
weiterer Durchlauf erforderlich ist, deine if-Bedingung packst du
in eine for-Schleife, die die Textzeile Zeichen für Zeichen prüft.
Das nachfolgende Script ist jetzt mal PHP, macht aber nix, PHP und
C(C++) sind ja eng verwandt, daher dürfte es dir ja nicht schwer fallen,
das Script anzupassen.
Gruß
Günni
der Ansatz . . .
if(sort[i] > sort[i+1])
{
char i;
i = sort[x];
sort[x] = sort[x+1];
sort[x+1] = i;
. . .
. . . ist ja schonmal ganz gut, ich frag' mich bloß, warum du anschließend
noch eine Funktion aufrufst, die das Gleiche nochmal durchführt??
Die Abbruchbedingung in der while-Schleife muß prüfen, ob ein
weiterer Durchlauf erforderlich ist, deine if-Bedingung packst du
in eine for-Schleife, die die Textzeile Zeichen für Zeichen prüft.
Das nachfolgende Script ist jetzt mal PHP, macht aber nix, PHP und
C(C++) sind ja eng verwandt, daher dürfte es dir ja nicht schwer fallen,
das Script anzupassen.
<?
$nochmal = TRUE;
$text = "hfjgkHlKJJJLjljWQAsdgdhf";
echo "Unsortiert: ".$text."<br>";
/*
Die while-Schleife läuft, solange $nochmal TRUE ist
*/
while($nochmal){
/*
Wir nehmen an, die Textzeile ist sortiert, und setzen $nochmal
einfach mal auf FALSE, damit die Schleife nicht ewig und drei Tage läuft.
*/
$nochmal=FALSE;
/*
Hier klappern wir die Textzeile Zeichen für Zeichen bis zum vorletzten Zeichen
ab . . .
*/
for($i=0;$i < strlen($text)-1;$i++){
/*
. . . und fragen, gemäß deinem Ansatz, ab ob das Zeichen[i] größer ist, als
das Zeichen[i+1] . . .
*/
if($text[$i] > $text[$i+1]){
/*
. . . tauschen die beiden aus, wenn dem so ist . . .
*/
$temp = $text[$i];
$text[$i] = $text[$i+1];
$text[$i+1] = $temp;
/*
. . . und setzen $nochmal auf TRUE, damit die while-Schleife weiterläuft.
Wenn das Ergebnis der if-Bedingung nicht mehr zutrifft, bleibt $nochmal
einfach FALSE(s.o.), die while-Schleife wird beendet und die Textzeile ist sortiert.
*/
$nochmal = TRUE;
}
}
}
echo "Sortiert: ".$text;
?>
Gruß
Günni
Hallo Melisa,
in dem Forum hier finden sich viele hilfsbereite Leute, von denen auch die meisten Verständnis für "Anfägerfragen" haben. Was sich in dem Forum nicht findet sind Wahrsager.
Viele sind ausgebildete IT-ler, die im Alltag entsprechende Stundensätze bekommen. Hier verschenken sie ihr Wissen. Das wenigste, was man von fragenden dafür erwarten kann, ist das sie sich Mühe geben. Nur einen Codehappen hinzuwerfen und zu sagen "funktioniert nicht" ist ganz einfach eine Unverschämtheit.
Filipp
in dem Forum hier finden sich viele hilfsbereite Leute, von denen auch die meisten Verständnis für "Anfägerfragen" haben. Was sich in dem Forum nicht findet sind Wahrsager.
Viele sind ausgebildete IT-ler, die im Alltag entsprechende Stundensätze bekommen. Hier verschenken sie ihr Wissen. Das wenigste, was man von fragenden dafür erwarten kann, ist das sie sich Mühe geben. Nur einen Codehappen hinzuwerfen und zu sagen "funktioniert nicht" ist ganz einfach eine Unverschämtheit.
Bei deinem nächsten Beitrag schreibe gefälligst klar und deutlich das Ziel, die
Rahmenbedingungen, deine Lösungsvorstellung, die Fehlersymptome und was du schon ausprobiert > hast (mit welchem Erfolg).
Das ist mit der Mühe, die sich fragende geben sollen gemeint. Und dabei bleibe ich.Rahmenbedingungen, deine Lösungsvorstellung, die Fehlersymptome und was du schon ausprobiert > hast (mit welchem Erfolg).
Filipp