Pesquisar este blog

Livros Recomendados

sábado, 30 de janeiro de 2021

URI - 1234 - Sentença Dançante - Strings - C++ - Solução Alternativa

Plataforma: URI
Problema1234

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++

Solução:
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

Postagem em destaque

URI (BEECROWD) - 2158 - Helping Uncle Cláudio (Ajudando o Tio Cláudio) - Matemática - C, C++ e Haskell

Buenas! Estou aqui mais uma vez para resolver um problema de Matemática! Agora tenho resolvido alguns dessa categoria, pra que vocês possam ...

Postagens mais visitadas