Ler um vetor de 100 posições e verifique se todos os valores são iguais.
Passo 1
O enunciado pede que se leia um vetor com exatamente
posições e verifique se todos os valores desse vetor são iguais. Informações dadas e o que é pedido:
- Dado: um vetor de tamanho
. Vou chamar esse vetor de . - Cada posição contém um valor (pode ser número inteiro, real, caractere — o método não muda).
- Saída pedida: dizer se “todos os valores são iguais” ou “nem todos os valores são iguais”.
Passo 2
Ideia simples e eficiente (explicação intuitiva): pegar um valor de referência (por exemplo, o valor da primeira posição
) e comparar cada uma das outras posições com esse valor. Se alguma posição tiver valor diferente, então nem todos são iguais e podemos parar imediatamente. Se passarmos por todas as posições sem encontrar diferença, então todos são iguais. Essa ideia evita comparações desnecessárias quando aparece a primeira diferença.
Passo 3
Definição clara das variáveis que vamos usar:
-
: o vetor com elementos, indexados por . -
: variável que guarda o valor de referência, definida por . -
: índice inteiro usado no laço, que vai percorrer . -
: variável booleana que indica se todos os elementos até agora coincidem com . Inicialmente .
Explicando cada uma:
-
é a sequência que lemos da entrada. -
é o valor que escolhemos para comparar com os demais. -
é só o contador do laço. -
começa verdadeiro; se encontrarmos qualquer diferença definimos falso e saímos do laço.
Passo 4
Pseudocódigo passo a passo (cada linha explicada em linguagem simples):
- Ler o vetor
de posições. (Significa: ler os valores e armazenar em .) - Definir
. (Escolher o primeiro elemento como referência.) - Definir
. - Para
até faça: - Se
então: -
. - Interromper o laço (porque já sabemos que nem todos são iguais).
-
- Fim-se
- Se
- Fim-para
- Se
for verdadeiro então imprimir “Todos iguais” senão imprimir “Nem todos iguais”.
Comentário: essa versão compara cada elemento com o mesmo
, por isso precisa de até
comparações no pior caso.
Passo 5
Exemplo prático (todos iguais): suponha que
seja
.
- Leio o vetor.
-
. -
: comparar com → igual, continuar. -
: comparar com → igual, continuar. - …
-
: comparar com → igual. - Não houve diferenças →
verdadeiro → imprimir “Todos iguais”.
Passo 6
Exemplo prático (há diferença): suponha
seja
com
.
-
. - Percorremos
: todas as comparações dão igual. - Chegando em
: → definimos falso e paramos o laço imediatamente. - Saída: “Nem todos iguais”.
Observação importante: parar cedo economiza tempo no caso em que a diferença aparece antes do final.
Passo 7
Correção e complexidade (por que esse método funciona e quanto custa):
- Correção: se existe alguma posição
tal que , ela será detectada quando ; se não existe nenhuma, então nenhum teste de desigualdade será verdadeiro e concluímos corretamente que todos os elementos são iguais. - Complexidade temporal: no pior caso (quando todos são iguais) fazemos
comparações, ou seja, comparações. Em termos assintóticos: com . Em média, se a primeira diferença aparece cedo, o custo é menor. - Complexidade espacial:
espaço extra além do vetor (só guardamos , , e ).
Passo 8
Variações e observações para a prova (o que o examinador pode pedir e por que esse método costuma ser o preferido):
- Alternativa 1: usar uma estrutura de conjuntos. Inserir cada
em um conjunto e ao final verificar se o tamanho do conjunto é . Isso funciona bem e é simples, mas depende da disponibilidade de estruturas (hash set) e pode usar mais memória; tempo típico também, mas com custo de hash/insert. - Alternativa 2: ordenar o vetor e comparar primeiro e último elemento. Se após ordenar
então todos são iguais. Mas ordenar custa e é desnecessário para esse problema. - Conclusão: a comparação com
é a forma mais direta, usa pouco espaço e tem tempo linear.
Passo 9
Exemplos de implementação (sintaxe simples para usar na prova ou no laboratório)
Exemplo em Python (curto e direto):
# ler 100 valores em uma lista V
V = [float(input()) for _ in range(100)]
ref = V[0]
igual = True
for i in range(1, 100):
if V[i] != ref:
igual = False
break
if igual:
print("Todos iguais")
else:
print("Nem todos iguais")
Exemplo em C (estrutura clássica):
#include <stdio.h>
int main() {
double V[100];
for (int i = 0; i < 100; i++) scanf("%lf", &V[i]);
double ref = V[0];
int igual = 1; // 1 = verdadeiro, 0 = falso
for (int i = 1; i < 100; i++) {
if (V[i] != ref) { igual = 0; break; }
}
if (igual) printf("Todos iguais\n"); else printf("Nem todos iguais\n");
return 0;
}
Observação sobre comparações de ponto flutuante: se os valores forem reais (float/double) e houver risco de erros de precisão, compare com uma tolerância, por exemplo verificar se
para um pequeno
.
Passo 10
Dicas finais e incentivo:
- Na prova, escreva primeiro a ideia em palavras (usar
como referência) e depois o pseudocódigo. Isso mostra clareza. - Se o enunciado pedir análise de complexidade, explique que são no máximo
comparações e espaço adicional constante. - Respire fundo: é um problema direto — a maior armadilha é esquecer de parar o laço quando encontra uma diferença ou negligenciar precisão de floats. Você consegue resolver isso na prova!
Resposta
Imprimir “Todos iguais” se todos os elementos do vetor
forem iguais; caso contrário imprimir “Nem todos iguais”.