Programa não executa ao preencher vetor com números randômicos não repetidos em C
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 :)