Pesquisar este blog

Livros Recomendados

quarta-feira, 16 de setembro de 2020

URI (BEECROWD) - 2242 - Huaauhahhuahau - Strings - C e C++

Resolvendo um problema de Strings agora! Fiz duas soluções em C++ e uma em C. Confiram!

Plataforma: URI (BEECROWD)

Problema2242

Enunciado:

Em chats, é muito comum entre jovens e adolescentes utilizar sequências de letras, que parecem muitas vezes aleatórias, para representar risadas. Alguns exemplos comuns são: 
huaauhahhuahau 
hehehehe 
ahahahaha
jaisjjkasjksjjskjakijs
huehuehue 
Cláudia é uma jovem programadora que ficou intrigada pela sonoridade das “risadas digitais”. Algumas delas ela nem mesmo consegue pronunciar! Mas ela percebeu que algumas delas parecem transmitir melhor o sentimento da risada que outras. A primeira coisa que ela percebeu é que as consoantes não interferem no quanto as risadas digitais influenciam na transmissão do sentimento. A segunda coisa que ela percebeu é que as risadas digitais mais engra¸cadas são aquelas em que as sequências de vogais são iguais quando lidas na ordem natural (da esquerda para a direita) ou na ordem inversa (da direita para a esquerda), ignorando as consoantes. Por exemplo, “hahaha” e “huaauhahhuahau” estão entre as risadas mais engraçadas, enquanto “riajkjdhhihhjak” e “huehuehue” não estão entre as mais engraçadas. Cláudia está muito atarefada com a análise estatística das risadas digitais e pediu sua ajuda para escrever um programa que determine, para uma risada digital, se ela é das mais engraçadas ou não.

Linguagens: C e C++

Solução:

Código em C:

#define TAM 55
#include <stdio.h>
#include <string.h>

int main() {
    
    int i, j, tam, r = 1;
    char linha[TAM], vogais[TAM];
    scanf("%s", &linha);
    
    for (i = 0, j = 0; i < strlen(linha); i++) {
        switch (linha[i]) {
            case 'a':
            case 'e':
            case 'i':
            case 'o':
            case 'u':
                vogais[j] = linha[i];
                j++;
                break;
            default:
                break;
        }
    }
    
    tam = j;
    for (i = 0; i < tam/2; i++, j--) {
        if (vogais[i] != vogais[j-1]) {
            r = 0;
            break;
        }
    }
    
    printf("%c\n", (!r? 'N' : 'S'));

    return 0;
}

Código em C++:
A string lida é percorrida, copiando todas vogais para a string vogais. Então, é feito uma copia dela invertida e as duas são comparadas, resultado S caso sejam iguais e N caso sejam diferentes.


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <iostream>
#include <algorithm>
 
using namespace std;

bool vogal(char letra){
 switch(letra){
  case 'a': 
  case 'e':
  case 'i':
  case 'o':
  case 'u': return true;
  default: return false;
 }
}

int main() {
 string risada;
 cin >> risada;
 string vogais = "";
 for(int i=0; i<risada.size();i++){
  if(vogal(risada[i])){
   vogais += risada[i];
  }
 }
 string reversed = vogais;
 reverse(reversed.begin(),reversed.end());
 if(reversed == vogais) cout << "S" << endl;
 else cout << "N" << endl;
      
    return 0;
}

Código em C++ (solução alternativa): 

#include <iostream>

using namespace std;

int main() {
    
    int i, j, tam;
    string linha, vogais;
    bool r = true;
    cin >> linha;
    
    for (i = 0; i < linha.size(); i++) {
        switch (linha[i]) {
            case 'a':
            case 'e':
            case 'i':
            case 'o':
            case 'u':
                vogais.push_back(linha[i]);
                break;
            default:
                break;
        }
    }
    
    tam = vogais.size();
    for (i = 0, j = tam-1; i < tam/2; i++, j--) {
        if (vogais[i] != vogais[j]) {
            r = false;
            break;
        }
    }
    
    cout << (!r? "N" : "S") << 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