Eae galera, beleza? Gostaria de uma ajuda nesse tópico de recursão. Meu professor pediu para que ordenássemos um vetor, onde os numeros primos ficassem nas primeiras posições e os não-primos nas últimas. Eu não faço ideia de como fazer isso. Alguém aí pra dar um help?
Segue abaixo o que consegui fazer até agora:
<
#include <stdio.h>
#define TAM 10
int ordenar(int *vet, int fim,int ini);
int retorno(int *vet,int fim, int ini);
int main(){
int vet[TAM] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10},
i, fim = TAM-1,ini=0;
printf("\n\nVetor ANTES da ordenacao: ");
for(i = 0; i < TAM; i++)
printf(" %d", vet); ordenar(vet,fim,ini); //ordenar(vet,fim,ini); printf("\n\nVetor DEPOIS da ordenacao: "); for(i = 0; i < TAM; i++) printf(" %d", vet); printf("\n\n");
return 0; } int ordenar(int *vet, int fim,int ini){ int troca; if (fim == 0) { return 1; } else if (retorno(vet,fim,ini)==1) { if(ini<=fim){
troca = vet[ini]; vet[ini] = vet[fim ]; vet[fim ] = troca; ini++; return ordenar(vet,fim-1,ini); } } else if (retorno(vet,fim,ini)==0){ return ordenar(vet, fim - 1, ini); } } int retorno(int *vet, int fim, int ini){ // função q retoro se é primo ou nao int i, j, cont=0, cont2; for(i=1;i<vet[fim];i++){ if (vet[fim ] % i == 0) cont++; }
if(cont==0){ return 1; } else{ return 0; } }
>