Pesquisar este blog

Livros Recomendados

sábado, 30 de janeiro de 2021

URI - 1234 - Sentença Dançante - Strings - C

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

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main() {
    char *palavra = (char *) malloc(sizeof(char) * 51);
    int indice, upper;
    
    while(gets(palavra) != NULL) {
        
        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)
                    upper = 0;

                else if (palavra[indice] > 96 && palavra[indice] < 123 && upper == 0)
                    upper = 1;

                else if (upper) {
                    palavra[indice] -= 32;
                    upper = 0;
                }
                
                else {
                    palavra[indice] += 32;
                    upper = 1;
                }
            }
            
            printf("%c", palavra[indice]);
            indice++;
            
        }
        
        printf("\n");
    }
    
    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