paulafabiana 0 Denunciar post Postado Outubro 26, 2016 Olá estou tendo problema com esse programa , nao estou conseguindo fazer a logica dele Faça um programa que preencha aleatoriamente um vetor de 50 posições com valores entre 1 e 1000. O programa deverá garantir que todos os valores colocados no vetor são distintos entre si. Isto é, só deverá ser colocado um elemento no vetor quando o mesmo não é encontrado dentro dele. Código para gerar um número aleatório entre 1 e 1000: srand(time(NULL)); numAleatorio = rand() % 1000; estou fazendo assim #include <stdio.h> #include <stdlib.h> #include <locale.h> #include <time.h> int main (){ setlocale(LC_ALL, "portuguese"); int a, i, consta, posicao, vetor[50]; for(i=0; i<50; i++){ printf("\n Digite um numero entre 0 e 1000: \n"); scanf("%d", &a); srand(time(NULL)); } for(i=0; i<50; i++){ if(vetor==a){ consta=vetor; posicao=i; vetor=rand()%1000; } } return 0; } Compartilhar este post Link para o post Compartilhar em outros sites
Eduardo_555 4 Denunciar post Postado Outubro 26, 2016 Seguinte: Primeiro de tudo- Você deve ler um valor do teclado, pelo que entendi (Confira se estiver errado!!) depois com este valor armazenado em uma variável você pode fazer um for e ir verificando posição a posição do vetor para ver se o valor da variavel não e igual, caso não encontre um valor igual basta inserir no final. caso encontre você não insere e retorna a leitura para fazer outra inserção. Nao entendi para que o gerador de números aleatórios, era só pra testar? Se você ja sabe função seria interessante dividir este programa em funções. fica mais fácil o entendimento. Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Outubro 26, 2016 Seguinte: Primeiro de tudo- Você deve ler um valor do teclado, pelo que entendi (Confira se estiver errado!!) depois com este valor armazenado em uma variável você pode fazer um for e ir verificando posição a posição do vetor para ver se o valor da variavel não e igual, caso não encontre um valor igual basta inserir no final. caso encontre você não insere e retorna a leitura para fazer outra inserção. Nao entendi para que o gerador de números aleatórios, era só pra testar? Se você ja sabe função seria interessante dividir este programa em funções. fica mais fácil o entendimento. Não. Deve ser preenchido aleatoriamente. Inclusive o enunciado dá a maneira de fazer isso. nao estou conseguindo fazer a logica dele Qual parte? Compartilhar este post Link para o post Compartilhar em outros sites
maou2707 0 Denunciar post Postado Outubro 26, 2016 Olha colega, faz da seguinte forma, um for como você já fez com o for(i=0; i<50; i++), depois deste for, você deve criar uma variável de teste para receber o numero randômico, então você entra em outro for, desta forma, for(int j = 0; j < i; j++), para percorrer todo o vetor ja existente e ver se o numero já existe no vetor, e fazer um if para saber se a variável teste é diferente do vetor (lembre-se faça isso dentro do segundo for) Apos tudo isso faça outro for para imprimir na tela todo o vetor, para via de testes faça o numero randômico ir até 50, deste forma deve-se ver de forma mais nítida se seu programa estiver correto. Boa sorte. Se ainda estiver duvida só perguntar. Compartilhar este post Link para o post Compartilhar em outros sites
Wilkyn Fernandes Taborda 0 Denunciar post Postado Janeiro 10, 2020 (editado) Em 25/10/2016 at 21:54, paulafabiana disse: Código para gerar um número aleatório entre 1 e 1000: srand(time(NULL)); numAleatorio = rand() % 1000; Esse código não irá gerar um número entre 1 e 1000 mas sim entre 0 e 999 incluindo os extremos. Pra que gere entre um e mil incluindo os extremos você deve incrementar essa variável numAleatorio em um após fazer o código acima usando essa linha: numAleatorio++; Abaixo está o código desse programa funcionando perfeitamente e fazendo tudo que o enunciado pede: #include<stdlib.h> int main(){ int i,j,vetor[50],valortemp; srand(time(NULL)); for(i=0;i<50;i++) vetor[i]=-1; for(i=0;i<50;i++){ valortemp=rand()%1000; valortemp++; //para o valor nao ser 0 e chegar ate 1000 for(j=0;j<50;j++){ if(vetor[j]==valortemp){ i--; break; } } if(j==50) vetor[i]=valortemp; } for(i=0;i<50;i++) printf("%d\n",vetor[i]); system("pause"); } Editado Janeiro 10, 2020 por Wilkyn Fernandes Taborda Linha de código errada retirada. Compartilhar este post Link para o post Compartilhar em outros sites