Algorithm
Problem Name: 2 AD-HOC - beecrowd | 2457
Problem Link: https://www.beecrowd.com.br/judge/en/problems/view/2457
Letras
Por OBI - Olimpíada Brasileira de Informática 2014 Brazil
Timelimit: 1
Considere as definições abaixo:
- Uma palavra é uma sequência de letras consecutivas.
- Um texto é um conjunto de palavras separadas pelo caractere espaço em branco.
Você foi contratado pela empresa Booble para escrever um programa que, dados uma letra e um texto, determina a porcentagem de palavras do texto que contém a letra dada.
Entrada
A primeira linha da entrada contém um único caractere, a letra de interesse na pesquisa. A segunda linha contém um texto, como definido acima. O texto é composto apenas por letras minúsculas e o caractere espaço em branco, o texto é formado por no mínimo um caractere, e no máximo 1000 caracteres, o texto não contém dois espaços em branco consecutivos.
Saída
Seu programa deve produzir uma única linha, contendo um único número real, a porcentagem de palavras do texto que contêm a letra dada, com precisão de uma casa decimal.
Exemplos de Entrada | Exemplos de Saída |
p |
100.0 |
Code Examples
#1 Code Example with C Programming
Code -
C Programming
#include <stdio.h>
#include <string.h>
typedef struct{
char palavra[1100];
} dicionario;
unsigned short verificaLetra(dicionario *, unsigned short tam, char letra);
int main (void)
{
char letra, texto[1100], *aux;
dicionario palavra[1100];
unsigned short i, j;
double porcentagem;
scanf("%c", &letra);
scanf(" %[^\n]", texto);
i = 0;
aux = strtok(texto, " ");
strcpy(palavra[i++].palavra, aux);
do{
aux = strtok('\0', " ");
if (aux)
strcpy(palavra[i++].palavra, aux);
} while (aux);
printf("%.1f\n", (verificaLetra(palavra, i, letra) * 100.0f) / i);
}
unsigned short verificaLetra(dicionario *palavra, unsigned short tam, char letra)
{
unsigned short i, j;
unsigned short qtsPalavras = 0;
for (i = 0; i < tam; i++)
{
j = 0;
while (palavra[i].palavra[j])
{
if (palavra[i].palavra[j] == letra)
{
qtsPalavras++;
break;
}
j++;
}
}
return qtsPalavras;
}
Copy The Code &
Try With Live Editor
Input
papagaio
Output
#2 Code Example with C++ Programming
Code -
C++ Programming
#include <cstdio>
#include <iomanip>
#include <iostream>
using namespace std;
int main() {
int i, contem = 0, total = 0, valido = 1;
char letra;
string texto;
cin >> letra;
cin.ignore();
getline(cin, texto);
int tamanho = texto.length();
for (i = 0; i < = tamanho; i++) {
char caractere = texto[i];
if (caractere == '\0') {
total++;
break;
} else if (caractere == letra && valido == 1) {
contem++;
valido = 0;
} else if (caractere == ' ') {
total++;
valido = 1;
}
}
printf("%.1lf\n", (100.0 * contem) / (1.0 * total));
return 0;
}
Copy The Code &
Try With Live Editor
Input
nunca me esquecerei que no meio do caminho tinha uma pedra
Output
#3 Code Example with Python Programming
Code -
Python Programming
c = input().strip()
fr = input().split()
n = 0
for i in fr:
if c in i: n += 1
print('{:.1f}'.format(n*100/len(fr)))
Copy The Code &
Try With Live Editor
Input
papagaio
Output