X0r Skrevet 25. desember 2005 Del Skrevet 25. desember 2005 har skrevet dette: #include <iostream.h> #include <stdlib.h> int main() { using namespace std; char bokstav[3]="ab"; int desimal[3]; int a=0; while (a<=3){ desimal[a]=int(bokstav[a]); desimal[a]++; bokstav[a]=char(desimal[a]); a++; } cout << "\n" << bokstav <<"\n"; system("PAUSE"); return 0; } i c++. Jeg trodde at det skulle printe "bc", men istedet printer det bc☺♥øº├w Noe åpenbart galt med koden min? Er det noen som kan forklare hvordan man "forskyver" alle bokstavene i en string? Lenke til kommentar
Zethyr Skrevet 26. desember 2005 Del Skrevet 26. desember 2005 (endret) #include <iostream> /*fjernet ' .h '.. gammeldags*/ /*fjernet stdlib.h, siden du ikke bruker dette*/ using namespace std; /*flyttet denne ut av main().. ha det som en vane i starten å ha denne øverst, rett etter #include .. */ int main() { char bokstav[3]="ab"; int a=0; while (a<=1){ /* her skrev du over for mye, så du ødela 0-termineringa. Stringen sluttet ikke før den fant en 0 */ bokstav[a]++; /* det holder å gjøre slik, siden man da øker ascii-verdien med én. */ a++; } cout << bokstav << "\n"; /* fjernet en "\n" som ikke trengtes */ system("PAUSE"); /* bør egentlig ikke bruke system("pause"); , men blås i det nå.. :p */ return 0; } } Endret 26. desember 2005 av Zethyr Lenke til kommentar
Manfred Skrevet 28. desember 2005 Del Skrevet 28. desember 2005 (endret) kan jeg stille et dumt spm: Hvorfor i all verden er char bokstav[3] en array med tre plasser når du skal trykke bare "a" og "b" inn i de?? (for å lage plass for \0?) Personlig ville jeg heller brukt string eller char*, men... I stedet for system("pause"), kan man jo include conio og bruke getch(), eller bare bruke standard cin.get(); Endret 28. desember 2005 av Manfred Lenke til kommentar
dayslepr Skrevet 28. desember 2005 Del Skrevet 28. desember 2005 (endret) (length '(0 1 2 3)) => 4 #include <iostream> int main() { using namespace std; char bokstav[] = "ab"; { unsigned int len = strlen(bokstav); for(unsigned int i = 0; i < len; i++) bokstav[i] = static_cast<char>(bokstav[i] + 1); } cout << bokstav << endl; return 0; } må da være mer logisk med for her edit: kompilering og kjøring: lars@ibmr52:~/programming/c++$ g++ -g -Wall c.cpp -o c && ./cbc Endret 29. desember 2005 av dayslepr Lenke til kommentar
dayslepr Skrevet 29. desember 2005 Del Skrevet 29. desember 2005 (endret) eller denne er jo cute #include <iostream> #include <string> int main() { using namespace std; char bokstav[] = "ab"; for(size_t i = 0, len = strlen(bokstav); (bokstav[i] = static_cast<char>(bokstav[++i] + 1), i) < len;) cout << bokstav << endl; return 0; } er ikke C et rent og pent språk? O_o edit: her gjør man altså alt for å ikke klusse til scopet med unødvendige navn (jeg er bortskjemt) Endret 29. desember 2005 av dayslepr Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå