Som besökare på Hamsterpaj samtycker du till användandet av s.k. cookies för att förbättra din upplevelse hos oss. Jag förstår, ta bort denna ruta!
Annons

Vända namn, strängar

Skapad av Jokk, 2011-01-26 21:50 i Webbutveckling & Programmering

3 591
11 inlägg
0 poäng
Jokk
Visningsbild
31 Hjälte 9 867 inlägg
0
Haj. Vi fick en uppgift i c++ att göra ett program som anropar funktionen baklänges med en sträng som referensparameter, det ska alltså vända ett ord baklänges. I detta får/bör vi använda en forloop.

Jag vet dock inte hur man gör eftersom jag missade den lektionen, och boken gör mig inte någon nytta då jag inte förstår vad som menas. ><

Kodstyckena jag hittar på internet är felaktiga, d.v.s inte den lösning vi ska använda.

Någon fin själ som kan hjälpa mig med detta samt förklara lite vad vad gör? :)

flizan

Är reklamen ivägen? Logga in eller registrera dig så försvinner den!

Rektumjuice
Visningsbild
P 32 Sundsvall Hjälte 1 289 inlägg
0
Ett stycke C#-kod:
char namn[] = "Hejsan"
for (int i = 0; i < strlen(namn); i++)
{
char[i] = char[strlen(namn) - i];
}


Något sånt borde funka. Det känns som att det finns en risk att första tecknet blir '' dock, och således gör hela strängen tom. "char[strlen(namn) - i - 1]" borde lösa det isåfall.

Ingen status

Jokk
Visningsbild
31 Hjälte 9 867 inlägg
Trådskapare
0

Svar till Rektumjuice [Gå till post]:
Får bara felmeddelanden när jag prövar det :/


flizan

Rektumjuice
Visningsbild
P 32 Sundsvall Hjälte 1 289 inlägg
0
Svar till Kommunistjokk [Gå till post]:
Du har inkluderat "#include <iostream>" och "int main()" och allt det där hoppas jag? Och så råkade jag missa ett ; efter första raden.

Sen vet jag inte om strlen() är vad ni "ska" använda, eller om man måste inkludera något mer för det...

Ingen status

Jokk
Visningsbild
31 Hjälte 9 867 inlägg
Trådskapare
0

Svar till Rektumjuice [Gå till post]:
Klart, fixade dit ett ";" med, men fick fel vid char=char saken

flizan

Rektumjuice
Visningsbild
P 32 Sundsvall Hjälte 1 289 inlägg
0
Svar till Kommunistjokk [Gå till post]:
Edit: [ i ] utan mellanslag fixar kursiv stil på Hamsterpaj kom jag på...

"char[ i ] = char[strlen(namn) - i];" ska det vara alltså.

Ingen status

pr0n
Visningsbild
P Hjälte 5 588 inlägg
0

Svar till Kommunistjokk [Gå till post]:
Ett stycke c#-kod:

char namn[30] = "Johan";
char newName[30];

char revert(namn){
for(int i = 0; i < strlen(namn); i++){
strcat(newName, strlen(newName - i));
}
return newName;
}


Har inte hållit på med C++ på väldigt länge, men något sånt borde väl fungera :)

Ingen status

Jokk
Visningsbild
31 Hjälte 9 867 inlägg
Trådskapare
0

Svar till Rektumjuice [Gå till post]:
expected primary-expression before "char" är vad jag får upp som felmeddelande nu.

flizan

Peter_den_bra
Visningsbild
Hjälte 121 inlägg
0
Skulle nog göra en funktion som denna
Ett stycke php-kod:
#include <algorithm>
#include <string>
std::string reverseName(const std::string& name)
{
return std::string(name.rbegin(), name.rend());
}


men om du inte vill använda std::string så skulle jag göra något i stil med
Ett stycke php-kod:
#include <algorithm>
#include <cstring>
void reverseName(char* name)
{
std::reverse(name, name + std::strlen(name));
}

notera att jag här vänder på namnet som passas in i funktionen istället för att returnera en ny sträng.

Om du nu vill använda for loop som du pratade om så
Ett stycke php-kod:
#include <algorithm>
#include <cstring>
void reverseName(char* name)
{
std::size_t nameLength = std::strlen(name);
for (std::size_t i = 0; i < nameLength / 2; i++)
{
std::swap(name[i], name[nameLength - i - 1]);
}

}

Det är inte fel att ha fel.

cower
Visningsbild
P 44 Lund Hjälte 1 042 inlägg
0
Svar till Rektumjuice [Gå till post]:
Några missar där, du har skrivit char istället för namn när du försöker använda strängen, och så skriver du över början av strängen - resultatet om man gör så blir "nassan".


Svar till Kommunistjokk [Gå till post]:
Jag moddade han med det fåniga namnets kod så att den borde funka:
Ett stycke C#-kod:
char namn[] = "Hejsan";
int len = strlen(namn);
for (int i = 0; i < len/2; i++) {
// j = platsen i steg från slutet
int j = len - 1 - i;
// Byt plats på tecken # i och j
char tmp = namn[ i ];
namn[ i ] = namn[ j ];
namn[ j ] = tmp;
}



Svar till Peter_den_bra [Gå till post]:
Jag tror inte det var tänkt att de skulle använda STL, det lär nog komma senare i kursen.


Forum » Datorer & IT » Webbutveckling & Programmering » Vända namn, strängar

Ansvariga ordningsvakter:

Användare som läser i den här tråden just nu

1 utloggad

Skriv ett nytt inlägg

Hej! Innan du skriver om ett potentiellt problem så vill vi påminna dig om att du faktiskt inte är ensam. Du är inte onormal och världen kommer inte att gå under, vi lovar! Så slappna av och gilla livet i några minuter - känns det fortfarande hemskt? Skriv gärna ner dina tankar och frågor, vi älskar att hjälpa just dig!

Den här tråden är äldre än Rojks drömtjej!

Det senaste inlägget i den här tråden skrevs för över tre månader sedan. Är du säker på att du vill återuppliva diskussionen? Har du något vettigt att tillföra eller passar din fråga i en ny tråd? Onödiga återupplivningar kommer att låsas så tänk efter en extra gång!

Hjälp

Det här är en hjälpruta

Här får du korta tips och förklaringar om forumet. Välj kapitel i rullningslisten här ovanför.

Rutan uppdateras automagiskt

När du använder funktioner i forumet så visas bra tips här.


Annons
Annons
Annons
Annons