Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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