Reihenfolge einer Zeichenkette umkehren.

ardologismen

Newbie
Registriert
Dez. 2015
Beiträge
4
Hey leute,
bei einer Aufgabe komme ich nicht weiter.
Man soll die Reihenfolge einer Zeichenkette umkehren in C.
Also von 123-456 zu 654-321

Ich bin noch ziemlich am Anfang und daher habe ich nicht so viel Ahnung davon LOL

Also ich denke ich brauch zwei Schleifen, eine die hoch zählt und eine die runter zählt und dazu auch logischerweise zwei Variablen. Aber mein Problem ist, ich weiß net genau wie ich es programmieren soll, dass die Plätze der Variablen vertauscht werden. Ich habe schon im Internet ein paar Lösungsansätze gefunden, jedoch sind die mir zu kompliziert und beinhalten Befehle die ich noch nicht durchgenommen habe.


Mein Programm schaut so aus:

#include <stdio.h>

int main (){
char zeichen[100];
int a, b;

printf("gebe einen satz ein: ");
scanf("%s", zeichen);
for (a=0; a<100; a++){
zeichen[a]=zeichen;
}
for (b=0; b<100; b--){
zeichen=zeichen[a];
}
printf("sie haben eingegeben: %s\n", zeichen);

return 0;
}



ich hoffe ihr könnt mir sagen was fehlt.
danke schonmal. :)
 
es gibt hier Code-Blocks, die machen das lesen von Quellcode einfacher.

HTML:
[CODE][/CODE]
 
Die hab ich noch nicht in der Uni durchgenommen.
Ich glaub man soll die Aufgabe mit arrays und schleifen lösen.
 
Nene, hier im Forum, um Quelltext zu formatieren :D

Code:
#include bla
int main ()
{
 bla
 return 0
}
 
char temp;
int i, length;

// dann solltest du noch die Länge wissen von dem Wort^^ oder willst du den kompletten string umdrehen, wo uniinitilisierter blödsinn steht?
// ansonsten musst halt noch aufpassen, dass die länge > 1 ist.

length = laengeWort; // musst schauen wie das machst.. evtl über '/0' abfrage, kp was ihr für libs verwenden dürft.

for (i = 0, i < length, i++)
{
temp = char;
char = char[length-1-i];
char[length-1-i] = temp;
}

// oder du machst ein zweites array gleicher länger dann kannst von dem einen in das andere kopieren..
 
ardologismen schrieb:
Die hab ich noch nicht in der Uni durchgenommen.

Auf was für einer Uni bist du den bitte, dass du so spät im Semester nicht in der Lage bist sowas einfaches selbst zu lösen?

Dein Ansatz kann schon mal gar nicht funktionieren, wie auch mit zwei schleifen nacheinander?

Einfach mal überlegen wie man etwas tauschen kann.

Lege das erste zur Seite, schreibe das letzte in den ersten Platz und dann das auf der Seite in den Letzen.

Wichtig bei nem String ist natürlich zu wissen wie lang er ist, das müsstest du davor noch abfragen.
 
Fh in Frankfurt.
ich hab ja gemeint, dass ich bin in Programmieren ziemlich ne niete und ich wiederhole die Übungen.
 
Hallo ardologismen.
Hast du die Aufgabe mittlerweile hingekriegt? An sich ist sie wirklich nicht so schwer. Verständlicherweise können wir dir hier natürlich nicht alles vorkauen bzw. den fertigen Code hinschreiben. Da würde der Lerneffekt flöten gehen - und es würde gegen die Forenregel 68 verstoßen :-)

Falls du noch hängst an der Aufgabe, dann kannst du gerne konkrete Fragen stellen oder aufzeigen, wo du hängst. Du musst nur auf die Leute eingehen.
Die Tipps aus #5 und #6 hast du ja mittlerweile bestimmt berücksichtigt?
Einfach mal überlegen wie man etwas tauschen kann.
Lege das erste zur Seite, schreibe das letzte in den ersten Platz und dann das auf der Seite in den Letzen.
oder du machst ein zweites array gleicher länger dann kannst von dem einen in das andere kopieren..
 
Ich hab zwei arrays erstellt. Bei einem array wird der text eingelesen und beim zweiten wird der ausgegeben. Die for schleifen, bzw. die zweite soll die umgekehrte reihenfolge der buchstaben im zweiten array eingeben.
Allerdings weiß ich nicht wie ich die zweite for schleife schreiben soll.
Das die zeichenkette an einem anderen array gespeichert wird klappt. Nur halt werden die reihenfolge nicht inventiert.


int main (){
char *zeichen;
char *zeichen2;

int a, b;

printf("gebe einen satz ein: ");
zeichen=readtext();

for (a=0; zeichen[a]; a++)
for(b=?; zeichen; b--) <--------------?

zeichen2 = strdup (zeichen);



printf("sie haben eingegeben: %s\n", zeichen2);

return 0;
}
 
So. Zuerst mal verwende bitte hier im Forum die Code-Tags, also schreibe [code]<hier dein Code>[/code]. Das erleichtert uns die Lesbarkeit und man kann leichter Zeilen angeben.
Zweitens wäre es nicht schlecht, wenn du hier kompilierbaren Code postest und uns auch deine inkludierten Dateien angibst. Ich nehme an, dein readtext() wird Speicher allokieren und von stdin einlesen.

Was bezweckst du denn mit der ersten for-Schleife (bzw. dem Schleifenkopf, mehr ist es ja nicht.)?
Um es vorweg zu nehmen, hier wäre es zweckmäßig, die Länge des Strings zu bestimmen.
Der Schnipsel sieht ehrlich gesagt ziemlich zusammenkopiert aus. Als Anfänger würdest du das Abrruchkriterium vermutlich eher
Code:
zeichen[a] != '\0'
schreiben. Woraus dann auch ersichtlich wird, dass dieses Kriterium beim Herunterzählen so eher sinnlos ist.

Wir helfen dir hier gerne. Fang mit einfachen Fragen an, erkläre uns, was du vor hast und wir helfen dir weiter. Aber nicht einfach irgendwas irgendwo herkopieren und uns dann nach der Lösung fragen. Wenn ich dir meinen Code gebe, dann lernst du ja nichts dabei.

Hier z.B.:
Nur halt werden die reihenfolge nicht inventiert.
Wie auch? Du beschreibst den String zeichen2 genau einmal, als Duplikat von zeichen.
 

Ähnliche Themen

T
Antworten
12
Aufrufe
2.699
Antworten
8
Aufrufe
29.094
BullshitBingo
B
Zurück
Oben