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


papagaio 

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

x
+
cmd
p
papagaio

Output

x
+
cmd
100.0

#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

x
+
cmd
b
nunca me esquecerei que no meio do caminho tinha uma pedra

Output

x
+
cmd
0.0

#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

x
+
cmd
p
papagaio

Output

x
+
cmd
100.0
Advertisements

Demonstration


Previous
#2456 Beecrowd Online Judge Solution 2456 Cards Solution in C, C++, Java, Js and Python
Next
#2458 Beecrowd Online Judge Solution 2458 Setas Solution in C, C++, Java, Js and Python