Faça um programa que leva cinco grupos de quatro valores (A,B,C,D) e mostre-os na ordem lida. Em seguida, organiza-os em ordem crescente e decrescente.
Estrutura de repetição
Faça um programa que leva cinco grupos de quatro valores (A,B,C,D) e mostre-os na ordem lida. Em seguida, organiza-os em ordem crescente e decrescente.
Para cada grupo usamos um vetor, e para cada valor um inteiro, podemos criar sub-rotinas para reaproveitarmos para cada grupo (vetor), então criamos uma rotina para ordenar crescendo, outra para ordenar decrescendo, outra pra imprimir os valores de um dado grupo e um para inserirmos os valores no grupo. Também podemos criar uma rotina para inserir os valores num dado grupo automaticamente.
Para ordenar os valores dos grupos usamos o algoritmo de bubble sort (ordenação em bolha) onde consiste em verificar cada elemento de um array, trocando de posição posterior os elementos de maior valor. Para ordenar de maneira decrescente, basta inverter a essa lógica, movendo para posição posterior o elemento de menor valor.
Feito isso só chamamos nossas rotinas criadas passado a referência de cada grupo criado.
#include<stdio.h>
//Constante para o tamanho dos vetores
const int TAM = 4;
//Ordena crescentemente
void ordena_crescente(int *vetor[]) {
int k, j, aux;
for (k = 0; k < TAM - 1; k++) {
for (j = 0; j < TAM - k - 1; j++) {
if (vetor[j] > vetor[j + 1]) {
aux = vetor[j];
vetor[j] = vetor[j + 1];
vetor[j + 1] = aux;
}
}
}
return;
}
//Ordena decrescentemente
void ordena_decrescente(int *vetor[]) {
int k, j, aux;
for (k = 0; k < TAM - 1; k++) {
for (j = 0; j < TAM - k - 1; j++) {
if (vetor[j] < vetor[j + 1]) {
aux = vetor[j];
vetor[j] = vetor[j + 1];
vetor[j + 1] = aux;
}
}
}
return;
}
//Inicializa com valores randômicos
void inicializa_vetor(int *vetor[]) {
for(int i = 0; i < TAM; i++){
vetor[i] = (rand() / 1000) + 1;
}
return;
}
//Inicializa manualmente
void inicializa_vetor_manual(int *vetor[], int n) {
for(int i = 0; i < TAM; i++){
printf("Informe um valor para a posicao %d do vetor %d: ", i+1, n);
scanf("%d", &vetor[i]);
}
return;
}
//Imprime um vetor
void imprime_vetor(int *vetor[], int n) {
printf("-----VETOR-%d----\n", n);
for(int i = 0; i < TAM; i++){
printf(" %d ", vetor[i]);
}
printf("\n----------------\n\n");
return;
}
int main(){
int Va[TAM], Vb[TAM], Vc[TAM], Vd[TAM], Ve[TAM];
/*//Inicialização automática
inicializa_vetor(&Va);
inicializa_vetor(&Vb);
inicializa_vetor(&Vc);
inicializa_vetor(&Vd);
inicializa_vetor(&Ve);
*/
inicializa_vetor_manual(&Va, 1);
inicializa_vetor_manual(&Vb, 2);
inicializa_vetor_manual(&Vc, 3);
inicializa_vetor_manual(&Vd, 4);
inicializa_vetor_manual(&Ve, 5);
printf("Vetores\n\n");
imprime_vetor(&Va, 1);
imprime_vetor(&Vb, 2);
imprime_vetor(&Vc, 3);
imprime_vetor(&Vd, 4);
imprime_vetor(&Ve, 5);
ordena_decrescente(&Va);
ordena_decrescente(&Vb);
ordena_decrescente(&Vc);
ordena_decrescente(&Vd);
ordena_decrescente(&Ve);
printf("\n\n\nOrdem Decrescente\n\n");
imprime_vetor(&Va, 1);
imprime_vetor(&Vb, 2);
imprime_vetor(&Vc, 3);
imprime_vetor(&Vd, 4);
imprime_vetor(&Ve, 5);
ordena_crescente(&Va);
ordena_crescente(&Vb);
ordena_crescente(&Vc);
ordena_crescente(&Vd);
ordena_crescente(&Ve);
printf("\n\n\nOrdem Crescente\n\n");
imprime_vetor(&Va, 1);
imprime_vetor(&Vb, 2);
imprime_vetor(&Vc, 3);
imprime_vetor(&Vd, 4);
imprime_vetor(&Ve, 5);
return 0;
}
Para cada grupo usamos um vetor, e para cada valor um inteiro, podemos criar sub-rotinas para reaproveitarmos para cada grupo (vetor), então criamos uma rotina para ordenar crescendo, outra para ordenar decrescendo, outra pra imprimir os valores de um dado grupo e um para inserirmos os valores no grupo. Também podemos criar uma rotina para inserir os valores num dado grupo automaticamente.
Para ordenar os valores dos grupos usamos o algoritmo de bubble sort (ordenação em bolha) onde consiste em verificar cada elemento de um array, trocando de posição posterior os elementos de maior valor. Para ordenar de maneira decrescente, basta inverter a essa lógica, movendo para posição posterior o elemento de menor valor.
Feito isso só chamamos nossas rotinas criadas passado a referência de cada grupo criado.
#include<stdio.h>
//Constante para o tamanho dos vetores
const int TAM = 4;
//Ordena crescentemente
void ordena_crescente(int *vetor[]) {
int k, j, aux;
for (k = 0; k < TAM - 1; k++) {
for (j = 0; j < TAM - k - 1; j++) {
if (vetor[j] > vetor[j + 1]) {
aux = vetor[j];
vetor[j] = vetor[j + 1];
vetor[j + 1] = aux;
}
}
}
return;
}
//Ordena decrescentemente
void ordena_decrescente(int *vetor[]) {
int k, j, aux;
for (k = 0; k < TAM - 1; k++) {
for (j = 0; j < TAM - k - 1; j++) {
if (vetor[j] < vetor[j + 1]) {
aux = vetor[j];
vetor[j] = vetor[j + 1];
vetor[j + 1] = aux;
}
}
}
return;
}
//Inicializa com valores randômicos
void inicializa_vetor(int *vetor[]) {
for(int i = 0; i < TAM; i++){
vetor[i] = (rand() / 1000) + 1;
}
return;
}
//Inicializa manualmente
void inicializa_vetor_manual(int *vetor[], int n) {
for(int i = 0; i < TAM; i++){
printf("Informe um valor para a posicao %d do vetor %d: ", i+1, n);
scanf("%d", &vetor[i]);
}
return;
}
//Imprime um vetor
void imprime_vetor(int *vetor[], int n) {
printf("-----VETOR-%d----\n", n);
for(int i = 0; i < TAM; i++){
printf(" %d ", vetor[i]);
}
printf("\n----------------\n\n");
return;
}
int main(){
int Va[TAM], Vb[TAM], Vc[TAM], Vd[TAM], Ve[TAM];
/*//Inicialização automática
inicializa_vetor(&Va);
inicializa_vetor(&Vb);
inicializa_vetor(&Vc);
inicializa_vetor(&Vd);
inicializa_vetor(&Ve);
*/
inicializa_vetor_manual(&Va, 1);
inicializa_vetor_manual(&Vb, 2);
inicializa_vetor_manual(&Vc, 3);
inicializa_vetor_manual(&Vd, 4);
inicializa_vetor_manual(&Ve, 5);
printf("Vetores\n\n");
imprime_vetor(&Va, 1);
imprime_vetor(&Vb, 2);
imprime_vetor(&Vc, 3);
imprime_vetor(&Vd, 4);
imprime_vetor(&Ve, 5);
ordena_decrescente(&Va);
ordena_decrescente(&Vb);
ordena_decrescente(&Vc);
ordena_decrescente(&Vd);
ordena_decrescente(&Ve);
printf("\n\n\nOrdem Decrescente\n\n");
imprime_vetor(&Va, 1);
imprime_vetor(&Vb, 2);
imprime_vetor(&Vc, 3);
imprime_vetor(&Vd, 4);
imprime_vetor(&Ve, 5);
ordena_crescente(&Va);
ordena_crescente(&Vb);
ordena_crescente(&Vc);
ordena_crescente(&Vd);
ordena_crescente(&Ve);
printf("\n\n\nOrdem Crescente\n\n");
imprime_vetor(&Va, 1);
imprime_vetor(&Vb, 2);
imprime_vetor(&Vc, 3);
imprime_vetor(&Vd, 4);
imprime_vetor(&Ve, 5);
return 0;
}
Para escrever sua resposta aqui, entre ou crie uma conta
Compartilhar