I'm trying to get the random numbers to be generated and fill a vector in a separate function, but the program does not execute and hangs if I put a high, and not as high, number as 50 or 100. Below is my code , if anyone knows what's wrong help me there, 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--;
}
}
}