Faça um programa que leia um vetor de 10 posições e verifique se existem valores iguais e os escreva na tela.
Passo 1
Resumo do problema: devemos criar um programa que leia 10 valores inteiros em um vetor e verifique se existem valores repetidos, imprimindo cada valor duplicado apenas uma vez. O conteúdo envolve uso de vetores e laços de repetição.
Passo 2
Leitura do vetor: usamos um laço for de 0 até 9 para ler cada elemento com scanf e armazenar em um array de tamanho 10.
Detecção de duplicatas: percorremos o vetor com dois laços aninhados (índices i e j, com j iniciando em i+1) e comparamos v[i] e v[j]. Quando encontramos igualdade, sinaliza-se um possível duplicado.
Detecção de duplicatas: percorremos o vetor com dois laços aninhados (índices i e j, com j iniciando em i+1) e comparamos v[i] e v[j]. Quando encontramos igualdade, sinaliza-se um possível duplicado.
Passo 3
Evitar impressões repetidas: para garantir que cada valor duplicado só seja impresso uma vez, mantemos um vetor auxiliar dup[] e um contador dcount. Antes de imprimir um valor repetido, verificamos se ele já está em dup[]; se não estiver, adicionamos e imprimimos.
Exibição do resultado: após comparar todos os pares, se dcount for zero, exibimos mensagem informando que não há valores iguais; caso contrário, já mostramos cada duplicata durante a detecção.
Exibição do resultado: após comparar todos os pares, se dcount for zero, exibimos mensagem informando que não há valores iguais; caso contrário, já mostramos cada duplicata durante a detecção.
Resposta
#include <stdio.h>
#define N 10
#define N 10
int main() {
int v[N], dup[N], dcount = 0;
int i, j, k, isNew;
int v[N], dup[N], dcount = 0;
int i, j, k, isNew;
// Leitura do vetor de 10 elementos
for (i = 0; i < N; i++) {
printf("Digite o elemento %d: ", i + 1);
scanf("%d", &v[i]);
}
printf("\nValores iguais encontrados:\n");
// Comparação para encontrar duplicatas
for (i = 0; i < N - 1; i++) {
for (j = i + 1; j < N; j++) {
if (v[i] == v[j]) {
// Verifica se já imprimimos esse valor antes
isNew = 1;
for (k = 0; k < dcount; k++) {
if (dup[k] == v[i]) {
isNew = 0;
break;
}
}
// Se for um duplicado novo, armazena e imprime
if (isNew) {
dup[dcount++] = v[i];
printf("%d\n", v[i]);
}
}
}
}
// Se não encontrou nenhum duplicado
if (dcount == 0) {
printf("Nenhum valor igual encontrado.\n");
}
return 0;
}