X0r Skrevet 25. desember 2005 Rapporter 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 Rapporter 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 Rapporter 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 Rapporter 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 Rapporter 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
X0r Skrevet 3. januar 2006 Forfatter Rapporter Del Skrevet 3. januar 2006 tusen tusen takk 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å