Szyfrowanie ROT13 błędna odpowiedź

0

Witam
napisałem to zadanie ze spoja: http://pl.spoj.com/problems/PASCHAR5/
i nie mam pomysłu dlaczego dostaję błędną odpowiedź, na to co testuje u siebie pokazuje mi dobrze, na ideone przy jednej linii jest okej, ale jak jest ich kilka (przykład testowy nawet) to output jest pusty

#include <iostream>

using namespace std;

int main()
{
    string a;
    while (getline(cin,a))
    {
        for (int i = 0;i<a.size();i++)
        {
            if (a[i]>47 && a[i]<58)
            {
                a[i]+=5;
                if(a[i]>57)
                {
                    a[i]-=10;
                }
            }
            if ((a[i]>64&&a[i]<91))
            {
                a[i]+=13;
                if (a[i]>90)
                {
                    a[i]-=26;
                }
            }
            if (a[i]>96&&a[i]<123)
            {
                a[i]+=13;
                if (a[i]>123)
                {
                    a[i]-=26;
                }
            }
            cout << a[i];
        }
        cout << "\n";
    }
}
 
0
#include <iostream>
#include <iterator>
#include <cctype>
#include <algorithm>
using namespace std;

int main() {
	transform(
		istreambuf_iterator<char>(cin),
		istreambuf_iterator<char>(),
		ostream_iterator<char>(cout),
		[](char c){ 
			return 
				isalpha(c)?tolower(c)<'n'?c+13:c-13:
				isdigit(c)?c<'5'?c+5:c-5:c; }
	);
	return 0;
}
0

problem jest taki, że dosyć nie wiele rozumiem z tego programu, a raczej co do czego służy. Coś podobnego jest na Wikipedii właśnie, a raczej nie zależy mi na tym co mam w nicku, a tym, aby umieć samemu w przyszłości zrobić taki program bez żadnych problemów

2
#include <iostream>
#include <cctype>
using namespace std;

char rot(size_t n, char max, char curr, char trans){
	return trans < max-n+1? curr+n: curr-n;
}

int main() {
	char c = 0;
	while(cin.get(c)){
		cout.put(
			isalpha(c)? rot(13, 'z', c, tolower(c)): //litera == rot13
			isdigit(c)? rot(5, '9', c, c): //cyfra == rot5
			c //cokolwiek innego == bez zmian
		);
	}
	return 0;
}
0

copy-paste teraz to dopiero dostałeś cuda na kiju :) współczuje

0

ja wiem, czy cuda na kiju, tych znaczków nie ogarniałem w poprzednim, a teraz to rozumiem dużo lepiej, tzn ta funkcja mi dużo pomogła, z cin.get i cout.put spotkałem się już kilka razy i wiem do czego to służy, nie wiem tylko jak to robi, że małe i duże litery jednak zamienia, a nie tylko np małe, czy tylko duże

0

Przyjrzyj się dokładnie kodom ASCII liter małych i dużych.

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