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++
Utilizar uma variável de controle (upper, que pode ser int ou bool) para saber se a letra anterior é uppercase ou não. Se for, verifica a letra atual e, se necessário, passa ela para lowercase (somando 32). Se não for, verifica a letra seguinte e, se necessário, passa ela para uppercase (diminuindo 32). Aplicar esta lógica para todo caractere e imprimi-lo até chegar ao final da palavra. Não esquecer de imprimir a quebra de linha no fim do algoritmo (cout << endl;).
#include <iostream> using namespace std; int main() { string palavra; int indice, upper; while(getline(cin, palavra)) { upper = 1; indice = 0; while (palavra[indice] != '\0') { if ((palavra[indice] > 64 && palavra[indice] < 91) || (palavra[indice] > 96 && palavra[indice] < 123)) { if (palavra[indice] > 64 && palavra[indice] < 91 && upper) { cout << palavra[indice]; upper = 0; } else if (palavra[indice] > 96 && palavra[indice] < 123 && upper == 0) { cout << palavra[indice]; upper = 1; } else if (upper) { cout << (char) (palavra[indice] - 32); upper = 0; } else { cout << (char) (palavra[indice] + 32); upper = 1; } } else { cout << palavra[indice]; } indice++; } cout << endl; } return 0; }
Nenhum comentário:
Postar um comentário