Estou na disciplina de Algoritmos e Programação usando a linguagem C, já aprendemos laços de repetição e agora estamos entrando em vetor e matriz. Estou com dúvida neste exercício de como representar no código que o numero não pode ser igual aos outros que estão armazenados no vetor.
EXERCÌCIO: Escreva um programa que lê e armazena em um vetor 6 números inteiros digitados pelo usuário, sendo eles todos diferentes entre si. Ao final, exibe todos os valores.
Para resolver esse exercício, você precisa garantir que os números inseridos pelo usuário sejam diferentes entre si. Uma forma de fazer isso é verificar se o número inserido já está presente no vetor antes de armazená-lo. Para isso, você pode usar um laço de repetição para percorrer o vetor e comparar cada elemento com o número digitado. Se o número já estiver presente, exiba uma mensagem de erro e solicite que o usuário digite um novo número. Caso contrário, armazene o número no vetor.
Segue abaixo um exemplo de como implementar esse programa em C:
c
Copy code
#include <stdio.h>
int main() {
int numeros[6];
int i, j, num;
for (i = 0; i < 6; i++) {
do {
printf("Digite o %do numero: ", i+1);
scanf("%d", &num);
// Verifica se o número já está no vetor
for (j = 0; j < i; j++) {
if (numeros[j] == num) {
printf("Numero repetido. Digite outro numero.\n");
num = 0;
break;
}
}
} while (num == 0); // Repete enquanto o número for repetido
numeros[i] = num;
}
printf("Numeros digitados: ");
for (i = 0; i < 6; i++) {
printf("%d ", numeros[i]);
}
printf("\n");
return 0;
}
Nesse programa, o vetor numeros é inicializado com tamanho 6 e as variáveis i e j são usadas nos laços de repetição. A cada iteração do laço principal, o programa solicita que o usuário digite um número e, em seguida, verifica se ele já está presente no vetor. Se estiver, exibe uma mensagem de erro e solicita que o usuário digite um novo número. Se não estiver, armazena o número no vetor. Após a coleta de todos os números, o programa exibe os valores armazenados no vetor.
Segue uma sugestão de código em C para o exercício proposto:
```
#include <stdio.h>
int main() {
// declaração do vetor e variáveis auxiliares
int nums[6], i, j, num;
// leitura e validação dos números
for (i=0; i<6; i++) {
do {
printf("Digite um numero inteiro diferente dos demais: ");
scanf("%d", &num);
// verifica se o número já foi digitado antes
for (j=0; j<i; j++) {
if (num == nums[j]) {
printf("ERRO: Numero ja digitado, tente novamente.\n");
num = -1; // atribui um valor inválido para entrar no loop novamente
break; // sai do loop para não comparar com os números já verificados
}
}
} while (num == -1);
nums[i] = num; // armazena o número no vetor
}
// exibição dos números armazenados
printf("\nNumeros digitados:\n");
for (i=0; i<6; i++) {
printf("%d ", nums[i]);
}
printf("\n");
return 0;
}
```
O código acima utiliza dois loops de repetição (um `for` externo e um `do-while` interno) para validar e armazenar os seis números digitados pelo usuário, verificando se cada um deles já foi digitado anteriormente. Se o número for inválido (já digitado), o usuário é informado do erro e solicitado a digitar um novo número. Após a validação e armazenamento dos números, é feita a exibição dos mesmos na tela.
Lista de comentários
Resposta:
Para resolver esse exercício, você precisa garantir que os números inseridos pelo usuário sejam diferentes entre si. Uma forma de fazer isso é verificar se o número inserido já está presente no vetor antes de armazená-lo. Para isso, você pode usar um laço de repetição para percorrer o vetor e comparar cada elemento com o número digitado. Se o número já estiver presente, exiba uma mensagem de erro e solicite que o usuário digite um novo número. Caso contrário, armazene o número no vetor.
Segue abaixo um exemplo de como implementar esse programa em C:
c
Copy code
#include <stdio.h>
int main() {
int numeros[6];
int i, j, num;
for (i = 0; i < 6; i++) {
do {
printf("Digite o %do numero: ", i+1);
scanf("%d", &num);
// Verifica se o número já está no vetor
for (j = 0; j < i; j++) {
if (numeros[j] == num) {
printf("Numero repetido. Digite outro numero.\n");
num = 0;
break;
}
}
} while (num == 0); // Repete enquanto o número for repetido
numeros[i] = num;
}
printf("Numeros digitados: ");
for (i = 0; i < 6; i++) {
printf("%d ", numeros[i]);
}
printf("\n");
return 0;
}
Nesse programa, o vetor numeros é inicializado com tamanho 6 e as variáveis i e j são usadas nos laços de repetição. A cada iteração do laço principal, o programa solicita que o usuário digite um número e, em seguida, verifica se ele já está presente no vetor. Se estiver, exibe uma mensagem de erro e solicita que o usuário digite um novo número. Se não estiver, armazena o número no vetor. Após a coleta de todos os números, o programa exibe os valores armazenados no vetor.
Explicação:
Verified answer
Resposta:
Segue uma sugestão de código em C para o exercício proposto:
```
#include <stdio.h>
int main() {
// declaração do vetor e variáveis auxiliares
int nums[6], i, j, num;
// leitura e validação dos números
for (i=0; i<6; i++) {
do {
printf("Digite um numero inteiro diferente dos demais: ");
scanf("%d", &num);
// verifica se o número já foi digitado antes
for (j=0; j<i; j++) {
if (num == nums[j]) {
printf("ERRO: Numero ja digitado, tente novamente.\n");
num = -1; // atribui um valor inválido para entrar no loop novamente
break; // sai do loop para não comparar com os números já verificados
}
}
} while (num == -1);
nums[i] = num; // armazena o número no vetor
}
// exibição dos números armazenados
printf("\nNumeros digitados:\n");
for (i=0; i<6; i++) {
printf("%d ", nums[i]);
}
printf("\n");
return 0;
}
```
O código acima utiliza dois loops de repetição (um `for` externo e um `do-while` interno) para validar e armazenar os seis números digitados pelo usuário, verificando se cada um deles já foi digitado anteriormente. Se o número for inválido (já digitado), o usuário é informado do erro e solicitado a digitar um novo número. Após a validação e armazenamento dos números, é feita a exibição dos mesmos na tela.
Espero ter ajudado! :)