rzp 0 Denunciar post Postado Novembro 8, 2016 Olá, estou com um exercício para fazer:Suponha um vetor com números inteiros positivos pares e ímpares. Elaborarum algoritmo para colocar todos os números pares à frente no vetor e os ímpares no final. NÃO DEVE SER UTILIZADO UM VETOR AUXILIAR.O usuário deve determinar o tamanho do vetor, e gerar valores aleatorios.Meu código por enquanto está assim, só não sei como fazer para organizar os pares de um "lado" e os impares do outro sem usar um vetor/variavel auxiliar. @EDIT: Também tenho que mostrar quanto tempo se passou na execução inteira do programa. #include <stdio.h> #include <stdlib.h> int main () { int i, n, vetor[n]; printf("Digite o tamanho do vetor: "); scanf("%d", &n); srand(1000000); for (i = 0; i < n ; i++) { printf("Os valores são %d.\n", rand() % n); } return 0; } Compartilhar este post Link para o post Compartilhar em outros sites
Nefisto 0 Denunciar post Postado Novembro 8, 2016 Bom dia rzp, vou tentar te auxiliar nesse problema ;P 1- Quando você cria uma variavel, como você fez com N em "int n;", e nao atribui um valor para ela, dentro dela tem oq a gente chama de lixo de memoria, q pode ser qualquer valor, entao você criar int n, e depois vetor[n]; você esta criando um vetor de tamanho desconhecido, oq pode ou n funcionar, mas isso gera comportamentos inesperados no seu codigo e pode nao vai funcionar da maneira esperada. Uma forma de se resolver seria criar o vetor depois de receber o valor do usuario: scanf("%d", &n); int vetor[n]; Porém isto nao é uma boa pratica e pode gerar errors sutis. A forma correta de lidar com esses casos é alocar um espaço na heap: int *vetor; scanf("%d", &n); vetor = (int*)malloc(n * sizeof(int)); 2- O srand(time(NULL)) é só para garantir numeros aleatorios diferentes a cada vez q o codigo é compilado. 3- Esta linha nao faz sentido, ja q você nao armazena o random em lugar nenhum. "printf("Os valores são %d.\n", rand() % n);" E eu n sei se você intendeu bem o uso do rand, ja q N é a quantia de numeros e você fazer "rand % n" é como dizer pro computador pegar um aleatorio de 0 a N O codigo esta bem comentado, mas qualquer duvida manda pm ou pergunta aew q noiz tenta responde #include <stdio.h> #include <time.h> #include <stdlib.h> int main () { srand(time(NULL)); int i, j;//controle int n;//quantia de numeros int *vetor;//ponteiro para o vetor printf("Digite o tamanho do vetor: "); scanf("%d", &n); vetor = (int*)malloc(n * sizeof(int)); for(i = 0; i < n ; i++) vetor[i] = (rand() % 10) + 1;//armazena o random //Mostra o vetor antes de organizado printf("Vetor desorganizado:\n"); for(i = 0; i < n; i++) { printf("Vetor[%d] = %d\t", i, vetor[i]); if(!((i+1) % 5))//só para organizar, quebra linha a cada 5 numeros printf("\n"); } printf("\n"); for(i = 0; i < n; i++)//escaneia o vetor if(vetor[i]%2)//se encontrar um numero impar for(j = i; j < n; j++)//procura pelo resto do vetor if(!(vetor[j]%2))//por um numero par { //e troca um pelo outro int tmp = vetor[i]; vetor[i] = vetor[j]; vetor[j] = tmp; } //Mostra o vetor depois de organizado printf("Vetor organizado:\n"); for(i = 0; i < n; i++) { printf("Vetor[%d] = %d\t", i, vetor[i]); if(!((i+1) % 5))//só para organizar, quebra linha a cada 5 numeros printf("\n"); } printf("\n"); return 0; } Compartilhar este post Link para o post Compartilhar em outros sites