faça um algoritmo que obriga a pessoa a digitar 5 numeros não repetidos e primos, e armazene-os no vetor x de 5 posições, e logo após classifique-os em ordem crescente linguagem c
Soluções para a tarefa
Respondido por
0
Parece simples, mas não é
#include <stdio.h>#include <stdlib.h>#define LIMIT 5 /* número máximo de entradas*/int eh_prim( int numero){ int eh = 1; int i; for (i=2;i<=(numero/2);i++){ eh *= (numero%i !=0); } return eh;}int repetiu( int vetor[], int a_buscar) { int tem = 0; int i; for (i=0;i<LIMIT;i++) { tem += (vetor[i]==a_buscar); }; return ( tem);};void bubble_sort( int vetor[]) { int passou; int i,j,aux; do { passou = 1; for (i=0;i<LIMIT-1;i++){ for (j=i+1;j<LIMIT;j++){ if (vetor[i]>vetor[j]){ passou = 0; aux = vetor[j]; vetor[j] = vetor[i]; vetor[i] = aux; } } } } while(!passou); return; } void main(){ int *numeros ; int quantos; int auxiliar; int i; quantos = 0; numeros = malloc(sizeof(int)*LIMIT); auxiliar =1; while(quantos < LIMIT && auxiliar ) { printf("Ainda temos %d vagas. Digite um número qualquer ou 0 para terminar",LIMIT-quantos); scanf("%d", &auxiliar); printf("Usuário digitou %d \n",auxiliar); if (auxiliar) { if (repetiu( numeros, auxiliar)){ printf("Lamento mas esse número já foi digitado. Tente outro \n"); } else if (!eh_prim(auxiliar)){ printf("Lamento mas esse número não é primo. Tente outro \n"); } else{ numeros[quantos++] = auxiliar; } } else { printf("entrada terminada pelo usuário \n"); } };
auxiliar = 1 ; printf("\n"); printf("Eis o vetor \n"); for (i=0;i<LIMIT;i++){ printf("Posiçao %d contém o número %d \n",i,numeros[i]); }; bubble_sort(numeros); printf("\n"); printf("Eis o vetor \n"); for (i=0;i<LIMIT;i++){ printf("Posiçao %d contém o número %d \n",i,numeros[i]); }; }
Pode vë-lo corretamente identado aqui https://repl.it/OHXx/
#include <stdio.h>#include <stdlib.h>#define LIMIT 5 /* número máximo de entradas*/int eh_prim( int numero){ int eh = 1; int i; for (i=2;i<=(numero/2);i++){ eh *= (numero%i !=0); } return eh;}int repetiu( int vetor[], int a_buscar) { int tem = 0; int i; for (i=0;i<LIMIT;i++) { tem += (vetor[i]==a_buscar); }; return ( tem);};void bubble_sort( int vetor[]) { int passou; int i,j,aux; do { passou = 1; for (i=0;i<LIMIT-1;i++){ for (j=i+1;j<LIMIT;j++){ if (vetor[i]>vetor[j]){ passou = 0; aux = vetor[j]; vetor[j] = vetor[i]; vetor[i] = aux; } } } } while(!passou); return; } void main(){ int *numeros ; int quantos; int auxiliar; int i; quantos = 0; numeros = malloc(sizeof(int)*LIMIT); auxiliar =1; while(quantos < LIMIT && auxiliar ) { printf("Ainda temos %d vagas. Digite um número qualquer ou 0 para terminar",LIMIT-quantos); scanf("%d", &auxiliar); printf("Usuário digitou %d \n",auxiliar); if (auxiliar) { if (repetiu( numeros, auxiliar)){ printf("Lamento mas esse número já foi digitado. Tente outro \n"); } else if (!eh_prim(auxiliar)){ printf("Lamento mas esse número não é primo. Tente outro \n"); } else{ numeros[quantos++] = auxiliar; } } else { printf("entrada terminada pelo usuário \n"); } };
auxiliar = 1 ; printf("\n"); printf("Eis o vetor \n"); for (i=0;i<LIMIT;i++){ printf("Posiçao %d contém o número %d \n",i,numeros[i]); }; bubble_sort(numeros); printf("\n"); printf("Eis o vetor \n"); for (i=0;i<LIMIT;i++){ printf("Posiçao %d contém o número %d \n",i,numeros[i]); }; }
Pode vë-lo corretamente identado aqui https://repl.it/OHXx/
Perguntas interessantes