Jump to content

Recommended Posts

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;
}

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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?

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites
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");    
}

 

Edited by Wilkyn Fernandes Taborda
Linha de código errada retirada.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.