(1) Os números proibidos são números que possuem alguma representação problemática, por exemplo, número do azar, de algo ruim, e até números que são senhas do governo.
O número proibido mais conhecido é um número primo que foi descoberto em 2001 e representa o arquivo binário da versão compactada do código C que implementa o algoritmo DeCSS, que pode ser utilizado para lograr o sistema de proteção do DVD.
Implementar um programa que receba um set de números ilegais e responda se um outro set de números fazem parte dos números ilegais. O segundo set não possui tamanho fixo, os valores devem ser informados até que o usuário digite um valor menor que 0 .
Exemplo de entrada:
Entre com a quantidade de numeros proibidos: 7
Entre com os numeros proibidos: 100502512103000
Entre com o(s) valore(s):
1
2
3
10
0
-1
Exemplo de saída:
0 - eh numero proibido
1 - não eh numero proibido
2 - não eh numero proibido
3 - não eh numero proibido
10 - eh numero proibido
O número proibido mais conhecido é um número primo que foi descoberto em 2001 e representa o arquivo binário da versão compactada do código C que implementa o algoritmo DeCSS, que pode ser utilizado para lograr o sistema de proteção do DVD.
Entre com os numeros proibidos: 100502512103000
Entre com o(s) valore(s):
1
2
3
10
0
-1
1 - não eh numero proibido
2 - não eh numero proibido
3 - não eh numero proibido
10 - eh numero proibido
Passo 1
Beleza, o que essa questão tá pedindo é: a gente vai receber primeiro um “conjunto” (set) de números proibidos, depois vai ficar lendo vários números do usuário até ele digitar um valor menor que zero. Para cada número lido, a gente verifica se ele está no nosso conjunto de proibidos e imprime “eh numero proibido” ou “não eh numero proibido”.
O conteúdo aqui é bem básico de programação: vetores (arrays) para guardar os proibidos, laços de repetição (for/while) para ler dados, e estruturas de decisão (if) para testar se um número pertence ao vetor.
O conteúdo aqui é bem básico de programação: vetores (arrays) para guardar os proibidos, laços de repetição (for/while) para ler dados, e estruturas de decisão (if) para testar se um número pertence ao vetor.
Passo 2
Primeiro, a gente lê a quantidade de números proibidos, vamos chamar de
n
. Em C, por exemplo, seria:int n;
scanf("%d", &n);
Isso guarda em
n
quantos números o usuário vai informar.Passo 3
Agora que a gente sabe que são
n
números, a gente cria um vetor para armazenar esses proibidos. Como os números podem ser grandinhos (no exemplo tem “100502512103000”), a gente usa long long
:long long proibidos[n];
Em seguida, roda um for de
i = 0
até i < n
para fazer:for(int i = 0; i < n; i++){
scanf("%lld", &proibidos[i]);
}
Isso coloca cada número proibido dentro do vetor na posição
i
.Passo 4
Agora vem a parte de ler valores até encontrar um menor que zero. A gente faz um
while(1)
infinito e sai do laço quando esse valor for negativo:long long x;
while(1) {
scanf("%lld", &x);
if (x < 0) break;
// Aqui dentro vamos verificar se x é proibido
}
Passo 5
Pra saber se um valor
x
tá no nosso conjunto de proibidos, a gente faz uma busca simples: percorre o vetor inteiro e compara. Em termos de teoria, estamos testandoonde
é o conjunto dos proibidos. Se achar um
proibidos[j] == x
, a gente marca como “achou”. Se terminar de percorrer sem achar, é “não achou”.Passo 6
Juntando tudo, dentro do
while
a gente coloca:int achou = 0;
for(int j = 0; j < n; j++){
if(proibidos[j] == x){
achou = 1;
break;
}
}
if(achou)
printf("%lld - eh numero proibido\n", x);
else
printf("%lld - não eh numero proibido\n", x);
Isso imprime exatamente no formato que pedem.
Resposta
#include <stdio.h>
int main(){
int n;
// Passo 2: leio quantidade de proibidos
scanf("%d", &n);
// Passo 3: crio vetor e leio os proibidos
long long proibidos[n];
for(int i = 0; i < n; i++){
scanf("%lld", &proibidos[i]);
}
// Passo 4, 5 e 6: leio valores até x < 0, verifico e imprimo resultado
long long x;
while(1){
scanf("%lld", &x);
if (x < 0) break;
// teste de pertença: x ∈ proibidos?
int achou = 0;
for(int j = 0; j < n; j++){
if(proibidos[j] == x){
achou = 1;
break;
}
}
if(achou)
printf("%lld - eh numero proibido\n", x);
else
printf("%lld - não eh numero proibido\n", x);
}
return 0;
}