Problema: 2174
Enunciado:
Uma aliteração ocorre quando duas ou mais palavras consecutivas de um texto possuem a mesma letra inicial (ignorando maiúsculas e minúsculas). Sua tarefa é desenvolver um programa que identifique, a partir de uma sequência de palavras, o número de aliterações que essa sequência possui.
Linguagem: C++
Diversas verificações são feitas nesta questão. Primeiramente, devemos verificar se o penúltimo caracter lido foi espaço. Caso contrário, deve-se ficar esperando a leitura de espaço. Quando espaço foi o penúltimo caracter lido, então é verificado se está sendo lido uma sequencia de palavras com a mesma inicial. Se já estiver em sequencia, então não deve ser computado o valor, mas se a sequencia for quebrada, deve-se anotar a nova letra inicial. Caso não esteja em sequencia, então é verificado se a nova palavra possui a mesma inicial da última, neste caso, é somado um para a saída.
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 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | #include <iostream> using namespace std; char upper(char letter){ if(letter >= 'a' and letter <='z'){ letter = letter - 'a' + 'A'; } return letter; } int main() { string line; while(getline(cin,line)){ int num = 0; char lastWordLetter = 'a'-1; bool space = true; bool sequence = false; for(int i=0;i<line.length();i++){ if(space){ space = false; if(!sequence){ if(upper(lastWordLetter) == upper(line[i])){ //cout << line[i] << endl; sequence = true; num++; } } // se for letra diferente... if(lastWordLetter != line[i]){ sequence = false; lastWordLetter = line[i]; } } else{ if(line[i]== ' '){ space = true; } } } cout << num << endl; } return 0; } |
Nenhum comentário:
Postar um comentário