Cyfr Cezara - dziwne zachowanie continue;

Cyfr Cezara - dziwne zachowanie continue;
Vis.CouTT
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 4
0

Witam, to znów ja z moim zadankiem. ^^''

Tak wygląda mój kod:

Kopiuj
#include <iostream>
#include <cstdlib>
#include <time.h>

using namespace std;

int main()
{
	int x,k;
	string tekst;
	
	scanf("%d\n %d\n", &x, &k);
	cin>>tekst;
	if(x==1)
	{
		for(int i=0; i<tekst.length(); i++)
		{
			if(tekst[i]<65 || 90<tekst[i]<97 || 122<tekst[i])
			{
				continue;
			}
			if(tekst[i]>=97 && tekst[i]+k>122 || tekst[i]<=90 && tekst[i]+k>90)
			{
				tekst[i]=tekst[i]+k-26;
			}
			else
			{
				tekst[i]=tekst[i]+k;
			}
		}
	}
	else
	{
		for(int i=0; i<tekst.length(); i++)
		{
			if(tekst[i]<65 || 90<tekst[i]<97 || 122<tekst[i])
			{
				continue;
			}
			if(tekst[i]>=97 && tekst[i]-k<97 || tekst[i]-k<65)
			{
				tekst[i]=tekst[i]-k+26;
			}
			else
			{
				tekst[i]=tekst[i]-k;
			}
		}
	}
	cout<<tekst;
}

"Continue" działa - z tego co pojąłem z forów - na zasadzie "olewania" dalszej części pętli i robienia jej od nowa, podwyższając w moim przypadku zadeklarowane w pętli "i" o jeden.

Tylko, że jest jeden problem.
Program zachowuje się bodajże tak, jakbym użył "break", bo nic w moim stringu nie zmienia i mam wrażenie, że przeskakuje od razu tu:

Kopiuj
 cout<<tekst; 

Dlaczego tak się dzieje?

SO
  • Rejestracja: dni
  • Ostatnio: dni
2

90<tekst[i]<97 to nie działa tak jak myślisz.

Azarien
  • Rejestracja: dni
  • Ostatnio: dni
0

jak dasz warunki w odpowiedniej kolejności to niepotrzebne ci będzie to continue.

KR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2518
0

Wydaje mi sie ze przekombinowales cos z kodem:
http://ideone.com/jG7JoX

spartanPAGE
  • Rejestracja: dni
  • Ostatnio: dni
2
krwq napisał(a):

Wydaje mi sie ze przekombinowales[...] link...

Też trochę przekombinowałeś :>

Kopiuj
string rot(string s, int r){
	for(auto &letter : s)
		if(isalpha(letter)){
			auto letterSize = isupper(letter)?'A':'a';
			letter = (letter-letterSize+r)%NO_LETTERS+letterSize;
		}
	return s;
}

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.