Ir para conteúdo
paulafabiana

vetor em c

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

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros 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?

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros 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");    
}

 

Editado por Wilkyn Fernandes Taborda
Linha de código errada retirada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.