Fórum Programa não executa ao preencher vetor com números randômicos não repetidos em C #579437
28/03/2017
0
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
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)