Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

sortieren in c

Frage Entwicklung C und C++

Mitglied: melisa88

melisa88 (Level 1) - Jetzt verbinden

27.08.2008, aktualisiert 31.08.2008, 4140 Aufrufe, 12 Kommentare

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]);
}
}

}
...
Mitglied: filippg
27.08.2008 um 22:51 Uhr
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
Bitte warten ..
Mitglied: kristov
28.08.2008 um 07:57 Uhr
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.

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 c

Aber Du hast Recht, ausführlicher hätt's schon sein dürfen


Gruß

Filipp
Bitte warten ..
Mitglied: pulse
28.08.2008 um 08:35 Uhr
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.
01.
 
02.
string sortiere_rekursiv(string& zeichenkette, int length) 
03.
04.
	int durchlauf = 0; 
05.
	unsigned char temp; 
06.
 
07.
	for(int index = 0; index < (length - 1); index++) 
08.
09.
		if(zeichenkette[index] > zeichenkette[index + 1]) 
10.
11.
			temp = zeichenkette[index]; 
12.
			zeichenkette[index] = zeichenkette[index + 1]; 
13.
			zeichenkette[index + 1] = temp; 
14.
			durchlauf++; 
15.
16.
17.
	if(durchlauf != 0) sortiere_rekursiv(zeichenkette, length); 
18.
 
19.
return zeichenkette; 
20.
21.
 
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
Bitte warten ..
Mitglied: melisa88
28.08.2008 um 20:31 Uhr
Also nett von euch aber ich dachte mit diese Quellcode könnte man schon was anfangen Mein ganze Programm sieht so aus:

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <conio.h>


void sotieren(char *bs1, char *bs2)
{
char sort;

sort = *bs1;
*bs2 = sort;
*bs1 = *bs2;
}

int main(int argc, char* argv[])
{
char sort[50];
int x=0;
int i=0;

FILE *datei;

datei = fopen("Test.txt","r"); öffnet den Datei zum lesen

if(datei == NULL)
überprüft ob der Datei richtig ausgeführt wurde
{
printf("Dateifehler");
}

printf("Gegen Sie Buchstaben ein: ");
fgets(sort, 50, datei);

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]);
}
}

}
printf("\n%s", x);
gets(sort);


datei = fopen("test.txt", "a");
wird neu angelegt, wenn die Datei noch nicht existiert
fputs(sort, datei);
fclose(datei); //schließt den Datei

return 0;
}
Bitte warten ..
Mitglied: filippg
28.08.2008 um 21:38 Uhr
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
Bitte warten ..
Mitglied: melisa88
29.08.2008 um 18:07 Uhr
Genau meine ich ja auch es Ich weiß selber, dass es keinen Sinn ergibt aber ich weiß grad nicht wie ich anders schreiben soll. Das Programm soll ja die unsortierte Buchstaben in dem Textdatei sortieren. Kannst du ein Vorschlag geben wie ich es am besten schreiben kann?

Schööne Grüße

Melisa
Bitte warten ..
Mitglied: filippg
29.08.2008 um 20:25 Uhr
"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
Bitte warten ..
Mitglied: Guenni
30.08.2008 um 11:08 Uhr
Hi melisa,

der Ansatz . . .

01.
if(sort[i] > sort[i+1]) 
02.
03.
char i; 
04.
i = sort[x]; 
05.
sort[x] = sort[x+1]; 
06.
sort[x+1] = i; 
07.
. . .
. . . 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.

01.
<? 
02.
$nochmal = TRUE; 
03.
$text = "hfjgkHlKJJJLjljWQAsdgdhf"
04.
 
05.
echo "Unsortiert: ".$text."<br>"
06.
 
07.
/* 
08.
Die while-Schleife läuft, solange $nochmal TRUE ist 
09.
*/ 
10.
while($nochmal){ 
11.
/* 
12.
Wir nehmen an, die Textzeile ist sortiert, und setzen $nochmal 
13.
einfach mal auf FALSE, damit die Schleife nicht ewig und drei Tage läuft. 
14.
*/ 
15.
 $nochmal=FALSE; 
16.
/* 
17.
Hier klappern wir die Textzeile Zeichen für Zeichen bis zum vorletzten Zeichen 
18.
ab . . .  
19.
*/ 
20.
 for($i=0;$i < strlen($text)-1;$i++){ 
21.
/* 
22.
. . .  und fragen, gemäß deinem Ansatz, ab ob das Zeichen[i] größer ist, als 
23.
das Zeichen[i+1] . . . 
24.
*/ 
25.
  if($text[$i] > $text[$i+1]){ 
26.
/* 
27.
. . . tauschen die beiden aus, wenn dem so ist . . . 
28.
*/ 
29.
	 $temp = $text[$i]; 
30.
	 $text[$i] = $text[$i+1]; 
31.
	 $text[$i+1] = $temp
32.
/* 
33.
. . . und setzen $nochmal auf TRUE, damit die while-Schleife weiterläuft. 
34.
Wenn das Ergebnis der if-Bedingung nicht mehr zutrifft, bleibt $nochmal 
35.
einfach FALSE(s.o.), die while-Schleife wird beendet und die Textzeile ist sortiert. 
36.
*/ 
37.
	 $nochmal = TRUE; 
38.
39.
40.
41.
 
42.
echo "Sortiert: ".$text
43.
?>
Gruß
Günni
Bitte warten ..
Mitglied: melisa88
30.08.2008 um 18:06 Uhr
Hey hey ich habe nichts gemacht und versucht allein zu machen aber konnte nicht und dachte wenn ich in diesem Forum schreibe könnte ich vielleicht einen Antwort darauf bekommen aber solche leute wie du nein danke!!! Ich will bestimmt keinen Antwort von dir haben Mr. Filippg. Ok wenn du sagst dass ich faul bin dann soll es so sein von mir aus aber ich habe neu angefangen zu programmieren:/
Bitte warten ..
Mitglied: melisa88
30.08.2008 um 18:25 Uhr
Danke Günni für die Programm. Ich habe neu angefangen mit C bzw. C++ zu programmieren ist halt normal, dass man manchmal nicht weiter kommen kann aber leider verstehen manche leute es nicht
Bitte warten ..
Mitglied: filippg
30.08.2008 um 19:40 Uhr
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.

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.

Filipp
Bitte warten ..
Mitglied: melisa88
31.08.2008 um 18:15 Uhr
Tut mir echt leid. Jetzt weiß ich wenigstns bescheid, was ich bei meiner nächsten Beitrag machen muss.
Danke und Entschuldigung Filipp
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Outlook & Mail
gelöst Einige Outlook 2016 Anwendungsfragen Sortieren Aktionen (5)

Frage von Geforce zum Thema Outlook & Mail ...

VB for Applications
gelöst Spalten nach Titel sortieren (2)

Frage von Anrion zum Thema VB for Applications ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (17)

Frage von JayyyH zum Thema Switche und Hubs ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

DSL, VDSL
DSL-Signal bewerten (14)

Frage von SarekHL zum Thema DSL, VDSL ...