Szyfr Cezara.

0

Witam! Dopiero zaczynam programować w C++ i napotkałem na pewien błąd - mianowicie przy próbie wypisania zaszyfrowanej/odszyfrowanej tablicy w konsoli wyskakują mi "krzaczki". Nie wiem czym jest to spowodowane;/ Z góry dzieki za podpowiedzi:)

#include <iostream>
using namespace std;

main()
{
    int wybor;
    char kod[255];
    cin>>wybor;
    cin.ignore(255, '\n' );
    cin.getline(kod, 256);
    int i=0;
    while(kod[i]!='\n')
    {
        cout<<kod[i];
        i++;
    }

    while(kod[i]!='\n')
    {

        if(wybor)
            {
                if(kod[i]=='x')
                {
                    kod[i]='a';
                    continue;
                }
                if(kod[i]=='y')
                {
                    kod[i]='b';
                    continue;
                }
                if(kod[i]=='z')
                {
                    kod[i]='c';
                    continue;
                }
                kod[i]+=3;
                i++;
                cout<<kod[i]<<endl;
            }
        else
        {
                kod[i]-=3;
                cout<<kod[i]<<endl;
        }
    }

}
0
#include <iostream>
#include <iomanip>
#include <cctype>
using namespace std;

char *cesar(char *str,int key)
  {
   while(key<0) key+=26;
   for(char *p=str;*p;++p) if(islower(*p)) *p=(*p+key-'a')%26+'a';
   return str;
  }

int main()
  {
   int wybor;
   char kod[255];
   (cin>>wybor>>ws).getline(kod,256);
   cout<<cesar(kod,wybor?3:-3);
   return 0;
  }
0

Pierwszy program obsługuje tylko znaki od 'a' do 'z'.
Przy innych znakach może (nie musi) generować dziwne znaczki.

1 użytkowników online, w tym zalogowanych: 0, gości: 1