Top-Themen

Aktuelle Themen (A bis Z)

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, 4192 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 ..
Ähnliche Inhalte
Microsoft
Powershell sortieren
Frage von FabianretMicrosoft3 Kommentare

Guten Tag. Ich möchte Zahlen (bsp. 9, 3, 1, 7, 4, 8) die in einer txt Datei gespeichert sind ...

Microsoft Office
Sortieren von Postleitzahlen
Frage von bob1986Microsoft Office8 Kommentare

Hallo Allemal, kann mir jemand helfen mit dem folgenden ich verstehe nicht so viel von dem VBA Programierung aber ...

C und C++
Sortieren von Zeiten
Frage von DippsC und C++3 Kommentare

Hallo Leute bin gerade komplett ratlos. Ich habe 8 Textboxen wo Zeiten über Serial ein getragen werden Z1.text bis ...

C und C++
Von C auf C++ umsteigen
Frage von jangruC und C++3 Kommentare

Sehr geehrte Community, wie Sie meiner Überschrift bereits entnehmen konnten, habe ich vor von C auf C umzusteigen. Da ...

Neue Wissensbeiträge
Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 2 TagenWindows 106 Kommentare

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Sicherheits-Tools

Achtung: Sicherheitslücke im FortiClient VPN-Client

Tipp von kgborn vor 2 TagenSicherheits-Tools

Ich weiß nicht, wie häufig die NextGeneration Endpoint Protection-Lösung von Fortinet in deutschen Unternehmen eingesetzt wird. An dieser Stelle ...

Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 2 TagenInternet5 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 2 TagenDSL, VDSL2 Kommentare

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Heiß diskutierte Inhalte
Batch & Shell
Kann man mit einer .txt Datei eine .bat Datei öffnen?
gelöst Frage von HelloWorldBatch & Shell20 Kommentare

Wie schon im Titel beschrieben würde ich gerne durch einfaches klicken auf eine Text oder Word Datei eine Batch ...

Router & Routing
OpenWRT bzw. L.E.D.E auf Buffalo WZR-HP-AG300H - update
gelöst Frage von EpigeneseRouter & Routing11 Kommentare

Guten Tag, ich habe auf einem Buffalo WZR-HP-AG300H die alternative Firmware vom L.E.D.E Projekt geflasht. Ich bin es von ...

LAN, WAN, Wireless
WLAN Reichweite erhöhen mit neuer Antenne
gelöst Frage von gdconsultLAN, WAN, Wireless9 Kommentare

Hallo, ich besitze einen TL-WN722N USB-WLAN Dongle mit einer richtigen Antenne. Ich frage mich jetzt ob man die Reichweite ...

Windows Server
Ping auf einen bestimmten Server nicht möglich
gelöst Frage von a.thierWindows Server7 Kommentare

Hallo, ich habe folgendes Problem. srv-dc1: Ping srv-nav > geht Ping srv-exchange > geht nicht srv-exchange: Ping srv-dc1 > ...