Text Rotieren

rainer_wahnsinn

Grünschnabel
Hallo zusammen.

wir haben in der schule eine aufgabe bekommen, wir sollen einen text rotieren lassen in c... genau gesagt muss man den letzten buchstaben nach links verschieben. z.B.:

abc --> cab --> bca ..

weiss jemand wie das geht? bzw. ob das überhaupt geht?

danke für eure hilfe
 
Hi

ich geh einmal davon aus, dass du den Text einlesen etc schon kannst?

wenn du es zb in einen string namens s gelesen hast, könnte es so weitergehen:

Code:
{int a=strlen( s );
char b= s [a-1];
for(int c=a-1;c>0;c--)
{
  s [ c]= s [c-1];
}
s [0]=b;
}

und dann wieder ausgeben nicht zu vergessen...

sorry falls syntaxfehler drin sind, habs nicht kompiliert

Gruß
 
hallo sheel.. danke für deine antwort.. ja das mit einlesen habe ich.. aber sorry..:) deine lösung kapiere ich nicht ganz.. ich muss die aufgabe in eine funktion einbauen. das habe ich noch vergessezu schreiben. also ich habe so angefangen (also einlesen):

printf("Text routieren lassen");
printf("\n-----------------------------\n\n");
printf("Geben Sie einen Buchstaben ein: ");
scanf(" %c", &buchstabe1);
printf("Geben Sie einen weiteren Buchstaben ein: ");
scanf(" %c", &buchstabe2);
printf("Geben Sie einen letzten Buchstaben ein: ");
scanf(" %c", &buchstabe3);
printf("Folgende Buchstaben: %c , %c , %c ", buchstabe1, buchstabe2,
buchstabe3);

und jetz komme ich einfach nicht weiter.. die letzten linie ist einfach eine bestättigung wegen den 3 buchstaben. ich habe es eben zu erst mit 3 buchstaben probiert.. bevor das ich es mit einem text probiere..
 
nur eine grundlegene frage...wie weit bist du in der schule mit c?
habt ir char-arrays/strings oder wie ihr immer das nennt schon gemacht
ich meine zB sowas:
char satz[20];
 
wir haben eigentlich das modul c programmieren abgeschlossen.. aber wir haben nicht alles genau in detail angeschaut.. arrays hatten wir.. strings auch.. aber wir haben nie eine aufgabe gemacht, wo wir strings andwenden konnten. diese aufgabe ist jedoch für die software engineering (modul 225).
 
Module?

Nun ja, da du strings vom prinzip her kennst...

ich schreib dir einmal das komplette:

Code:
#include<stdio.h>
#include<string.h>

void main()
{
  char s[100];//stringvariable mit max. 100 buchstaben
  printf("Bitte Satz eingeben: \n");
  gets(s);//Einen ganzen Satz einlesen
  {//Jetzt mein Codeteil von oben
    int a=strlen( s );
    char b= s [a-1];
    for(int c=a-1;c>0;c--)
    {
      s [ c]= s [c-1];
    }
    s [0]=b;
  }
  puts(s);//hier wieder alles ausgeben
}
 
danke viel mal es funktioniert.. :) hehe.. super.. weist du auch wie man es in eine schlaufe einbindet, so dass es die ganze zeit einen buchstaben nach links verschiebt.. also immer wieder.. endlos sozusagen.
 
Eine Schleife meinst du wohl...mit i

Code:
#include<stdio.h>
#include<string.h>
#include<conio.h>

void main()
{
  char s[100];//stringvariable mit max. 100 buchstaben
  printf("Bitte Satz eingeben: \n");
  gets(s);//Einen ganzen Satz einlesen
  while(1)//neu
  {//Jetzt mein Codeteil von oben
    int a=strlen( s );
    char b= s [a-1];
    for(int c=a-1;c>0;c--)
    {
      s [ c]= s [c-1];
    }
    s [0]=b;
    puts( s );//Das ist jetzt eine Klammer weiter innen
    _getch();//neu
  }
}

Drück halt immer eine Taste, bei jedem Tastendruck gehts eines weiter

Gruß
 
wir haben eigentlich das modul c programmieren abgeschlossen.. aber wir haben nicht alles genau in detail angeschaut.. arrays hatten wir.. strings auch.. aber wir haben nie eine aufgabe gemacht, wo wir strings andwenden konnten. diese aufgabe ist jedoch für die software engineering (modul 225).


Code:
#include<stdio.h>
#include<string.h>
#include<conio.h>

void textRotieren(char *line);

int main()
{
  char Satz[108];
  printf("Bitte Satz eingeben: \n");
  gets(Satz);
  int Idx;
  for(Idx = 0; Idx < strlen(Satz);Idx++){
    textRotieren(Satz);
    puts(Satz);
  }
  return 0;
}

void textRotieren(char *line){

    int Satzstelle = strlen( line );
    char LetztesZeichen = line[Satzstelle - 1];

    int Idx;
    for(Idx=Satzstelle-1;Idx>0;Idx--)
    {
      line[Idx] = line[Idx - 1];
    }
    line[0]=LetztesZeichen;
}


PS: Danke sheel !
 
Zuletzt bearbeitet:
Hui...freut mich, dass das auch Jahre danach noch hilfreich ist :)

Und danke für die schöne Ganz-Lösung :)
 

Neue Beiträge

Zurück