Problema: 1234
Enunciado:
Uma sentença é chamada de dançante se sua primeira letra for maiúscula e cada letra subsequente for o oposto da letra anterior. Espaços devem ser ignorados ao determinar o case (minúsculo/maiúsculo) de uma letra. Por exemplo, "A b Cd" é uma sentença dançante porque a primeira letra ('A') é maiúscula, a próxima letra ('b') é minúscula, a próxima letra ('C') é maiúscula, e a próxima letra ('d') é minúscula.
Linguagem: C++
Ao fazer a leitura da linha, uma variável booleana é criada chamada upper. Esta variável fica com o valor true, quando a próxima letra a ser escrita é maiúscula. Em caso de false, ela é minúscula.
A linha é percorrida, verificando se na posição i possui uma letra. Caso possua, é verificado se a letra é minúscula e a variável upper manda escrever uma letra maiúscula. Neste caso, é invertido de minúsculo para maiúsculo fazendo line[i] = line[i] - 'a' + 'A'.
O mesmo é feito simetricamente quando upper é false.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | #include <iostream> using namespace std; int main(){ string line; while(getline (cin, line)){ bool upper = true; for(int i=0; i<line.size(); i++){ if((line[i]>='a' and line[i]<='z') or (line[i]>='A' and line[i]<='Z')){ if(upper and line[i]>='a' and line[i]<='z'){ line[i] = line[i] - 'a' + 'A'; } if(!upper and line[i]>='A' and line[i]<='Z'){ line[i] = line[i] - 'A' + 'a'; } upper = !upper; } } cout << line << endl; } return 0; } |
Nenhum comentário:
Postar um comentário