[C++] Skriva ut sträng baklänges!

Permalänk
Avstängd

[C++] Skriva ut sträng baklänges!

Hejsan, har funderat på hur man får en sträng att skrivas ut baklänges. Men har inte kommit på något :/.

Vore jättesnällt om ni kunde posta hur koden är ' uppbyggd ' för att skriva ut strängen baklänges.

T.ex. Man ska kunna skriva. ' Hej ' så ska det skrivas ut ' Jeh '.

Tack på förhand.

Visa signatur

. C++
. PHP

Permalänk
Medlem

void reverse(char *s) { int i, j; char c; for(i = 0, j = strlen(s) - 1; i < j; i++, j--) c = s[i], s[i] = s[j], s[j] = c; }

Permalänk
Avstängd

m0rris, nu får du förklara vad du har gjort :p.

In med fler förslag.

Visa signatur

. C++
. PHP

Permalänk
Medlem

Byt plats på första och sista tecknet, andra och näst sista tecknet, osv tills du kommer till mitten.

Visa signatur

:€

Permalänk
Avstängd

Hur byter man plats?

Visa signatur

. C++
. PHP

Permalänk
Medlem

Ett väldigt enkelt sätt.

int length = strlen(string); char * buffer = new char[length+1]; // 1 extra byte för att få plats med 0:an buffer[length] = 0; // null terminera strängen for(int i=length-1;i >= 0;i--) { buffer[(length-1)-i] = string[i]; } // Funkar bara för A-Z ... if(buffer[0] >= 'a' && buffer[0] <= 'z') buffer[0] -= (int)'a' - (int)'A'; std::cout << buffer; delete [] buffer;

[EDIT] Fixade stor bokstav.

Permalänk
Medlem

char strang[8]="Tjeeena"; for(int i=sizeof(strang)-1; i>=0; i--) { cout << strang[i]; }

Permalänk
Medlem

Om det är en std::string så fungerar detta utmärkt iaf:

std::string a="Hej";
std::cout << std::string(a.rbegin(),a.rend());

Visa signatur

The difference between stupidity and genius - the latter has limits

Permalänk
Hedersmedlem

Lothar: Den kan ju kortas ner.

ANSI-C:

int i; char string[] = "Tjena hejsan"; for (i = sizeof(string) - 1; i >= 0; --i) printf("%c", string[i]); printf("\n");

Visa signatur

Vim
Kinesis Classic Contoured (svart), Svorak (A5)
Medlem i signaturgruppen Vimzealoter.

Permalänk
Medlem

Re: [C++] Skriva ut sträng baklänges!

Citat:

Ursprungligen inskrivet av Ashim

T.ex. Man ska kunna skriva. ' Hej ' så ska det skrivas ut ' Jeh '.

inget exempel har väl hitintills ordnat med gemner/versaler

Visa signatur

"Signatur raderad. Inte denna typ av signaturer på forumet tack! /Najk" - Najk

Permalänk
Avstängd

Hah, Deztron.

Tack för svaren.

Visa signatur

. C++
. PHP

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av m0REc
Lothar: Den kan ju kortas ner.

ANSI-C:

int i; char string[] = "Tjena hejsan"; for (i = sizeof(string) - 1; i >= 0; --i) printf("%c", string[i]); printf("\n");

Är väldigt dåligt att använda sizeof() med strängar, funkar ju med statiska arrayer men ska egentligen inte användas.

Är bättre att utföra 1 printf() istället för strlen(string) st.

Permalänk
Avstängd

Man ska kunna skriva in ett ord, sen så skriver den ut ordet baklänges.

Man ska inte skriva in ett specifikt ord i källkoden.

MagnusL du har gjort rätt

Visa signatur

. C++
. PHP

Permalänk
Medlem

std::string a;
std::cin>>a;
std::cout << std::string(a.rbegin(),a.rend());

så?

Visa signatur

The difference between stupidity and genius - the latter has limits

Permalänk
Hedersmedlem
Citat:

Ursprungligen inskrivet av MagnusL
Är väldigt dåligt att använda sizeof() med strängar, funkar ju med statiska arrayer men ska egentligen inte användas.

Är bättre att utföra 1 printf() istället för strlen(string) st.

Jasså? Inte hört förr...

Visa signatur

Vim
Kinesis Classic Contoured (svart), Svorak (A5)
Medlem i signaturgruppen Vimzealoter.

Permalänk
Medlem

Ok, en gång till. Liknar m0rris variant.

char s[]="Tjeeeena"; int l=strlen(s)-1; for(int x=0;x<l;x++,l--) { s[x]^=s[l]; s[l]^=s[x]; s[x]^=s[l]; } cout << s;

Permalänk
Hedersmedlem
Citat:

Ursprungligen inskrivet av Ashim
Man ska kunna skriva in ett ord, sen så skriver den ut ordet baklänges.

Man ska inte skriva in ett specifikt ord i källkoden.

MagnusL du har gjort rätt

Det är ju lätt att fixa.

Visa signatur

Vim
Kinesis Classic Contoured (svart), Svorak (A5)
Medlem i signaturgruppen Vimzealoter.

Permalänk
Avstängd

Zevon ja, Nice Lothar !

Hah, gjorde precis ett program.

Om vi säger att man har 300'000kr på sitt konto.

Och man slösar 50 öre per dag, så tar det 1666 år innan allt tar slut =P.

Säkra pengar

Visa signatur

. C++
. PHP

Permalänk
Medlem

fan vilken kass ränta ;D

Visa signatur

Plan9 fan. In glenda we trust.

Permalänk
Avstängd

Jävligt kass.

Men man ska ha en budget

Man får bara slösa 0.50kr per dag. Haha

Visa signatur

. C++
. PHP

Permalänk
Medlem

Tacka vet jag perl.

print scalar reverse $_ while( <> )

eller

perl -pe '$_=reverse$_'

Svårt att få det kortare iaf...

Permalänk

Here we go again...

Scheme:

(reverse-string "Hej hopp")

Output:

Citat:

"ppoh jeH"

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Pink Lemonade
Here we go again...

Scheme:

(reverse-string "Hej hopp")

Output:

Fusk.

Permalänk
Medlem

sedan kan man fråga sig, borde

"Hej hopp"

skrivas ut som

"ppoh Jeh"

eller

"Ppoh jeh"

Permalänk
Avstängd

' ppoh jeH '

Så borde det skrivas ut.

Visa signatur

. C++
. PHP

Permalänk
Medlem

Då skrev du fel i första inlägget