Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Estou tentando não repetir um valor em um array mas não estou dando conta

#include <stdio.h>

int main(void) {
  int i, j, k, qtd, codigo[100];

  printf("Digite a quantidade de funcionarios ");
  scanf("%d", &qtd);

  for(i = 1; i < qtd; i++){
    printf("Digite o codigo do funcionario ");
    scanf("%d", &codigo[i]);
      for(j = 1; j < i - 1; j++){
        while(codigo[i] == codigo[j]){
          printf("Codigo repetido, digite novamente ");
          scanf("%d", &codigo[i]);
        }
      }

  }



  return 0;
}
1 resposta
solução!

Olá Jefferson, tudo bem com você?

Existem alguns pequenos erros de lógica em seu código que podemos alterar :)

int main(void) {

A função main não tem parâmetros nenhum, podemos deixar apenas int main(){

Acredito que você acabou colocando sem querer :)

Agora o maior problema do seu código está aqui:

for(j = 1; j < i - 1; j++){

Como você colocou o sinal de < na verdade iremos ir duas posições anterioes do array, e dessa forma quando quando inserimos por exemplo:

>> 3
Inserido Corretamente
>> 8
Inserido Corretamente
>> 8

Devido a nossa verificação não pegar o último elemento, vamos conseguir o 8 novamente, pois vamos checar apenas se ele é igual a 3, o que é falso, para corrigir isso precisamos trocar para <= para que tenha essa comparação com o último elemento inserido :)

Fora isso o seu código irá funcionar corretamente!

Abraços e Bons Estudos :)