Programa não executa ao preencher vetor com números randômicos não repetidos em C

28/03/2017

0

C C++

Estou tentando fazer com que o números randômicos sejam gerados e preencher um vetor em uma função separada, porém o programa não executa e trava se eu colocar um número alto, e nem tão alto, como 50 ou 100. Abaixo segue meu código, se alguém souber o que está errado me ajuda aí, pfv.

#include<time.h>
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
#include<locale.h>

//variáveis globais
int tamanho = 0;

//links das funções
int menuPrincipal();
int retornaTamanho();
void preencheVetor(int tamanhoVetor, int *vetor);

int main(){
    setlocale(LC_ALL, "Portuguese");

    int opcao = 0, vetor[tamanho];

    do{
        opcao = menuPrincipal();

        switch(opcao){
        case 0:
            printf("\\n ----------- APLICAÇÃO ENCERRADA! ----------- \\n");
            exit(0);
            break;
        case 1:
            tamanho = retornaTamanho();

            printf("\\n Tamanho do Vetor = %d \\n", tamanho);

            preencheVetor(tamanho, vetor);

            break;
        default:
            printf("\\n ----------- OPÇÃO INVÁLIDA ----------- \\n\\n");
            system("pause");
            system("cls");
            break;
        }
    }while(true);

    return 0;
}

int menuPrincipal(){
    int opcaoMenu = 0;

    printf("\\n ------------ MENU ------------ \\n");
    printf("\\n ESCOLHA O MÉTODO DE ORDENAÇÃO: \\n");
    printf("\\n 1 - BUBBLE SORT \\n");
    printf("\\n 2 - SELECT SORT \\n");
    printf("\\n 3 - INSERT SORT \\n");
    printf("\\n 0 - SAIR \\n");
    printf("\\n DIGITE SUA OPÇÃO = ");
    scanf("%d", &opcaoMenu);

    system("cls");

    return opcaoMenu;
}

int retornaTamanho(){
    int opcaoTamanho = 0, valorTamanho = 0;

    printf("\\n ------- TAMANHO DO VETOR -------- \\n");
    printf("\\n ESCOLHA O TAMANHO DO VETOR: \\n");
    printf("\\n 1 - 100 \\n");
    printf("\\n 2 - 10.000 \\n");
    printf("\\n 3 - 100.000 \\n");
    printf("\\n 4 - 1.000.000 \\n");
    printf("\\n 0 - VOLTAR \\n");
    printf("\\n DIGITE SUA OPÇÃO = ");
    scanf("%d", &opcaoTamanho);

    system("cls");

    switch(opcaoTamanho){
    case 0:
        main();
        break;
    case 1:
        valorTamanho = 100;
        break;
    case 2:
        valorTamanho = 10000;
        break;
    case 3:
        valorTamanho = 100000;
        break;
    case 4:
        valorTamanho = 1000000;
        break;
    default:
        retornaTamanho();
        break;
    }

    return valorTamanho;
}

void preencheVetor(int tamanhoVetor, int *vetor){
    int randomico = 0;

    bool numExistente = false;

    srand(time(NULL));

    for(int i = 0; i < tamanhoVetor; i++){

        randomico = (int) rand() % tamanhoVetor;

        for(int j = 0; j < i; j++){
            if(randomico == vetor[j]){
                numExistente = true;
                break;
            }
        }

        if(!numExistente){
            vetor[i] = randomico;
        }else{
            i--;
        }
    }
}
Alisson Boucinhas

Alisson Boucinhas

Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar