Gå til innhold

feil med "krypteringsprogram"


Anbefalte innlegg

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? :ermm:

Er det noen som kan forklare hvordan man "forskyver" alle bokstavene i en string? :)

Lenke til kommentar
Videoannonse
Annonse
#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 av Zethyr
Lenke til kommentar

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 av Manfred
Lenke til kommentar

(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 && ./c

bc

Endret av dayslepr
Lenke til kommentar

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 av dayslepr
Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...