criar um programa utilizando a linguagem c/c++ que seja capaz de armazenar, em uma matriz 3x20, o peso (linha 0), a altura (linha 1) e a idade (linha 2) de 20 pessoas. apos armazenado o programa deve oferecer ao usuario a possibilidade de ordenar a matriz pela idade pela altura e pelo peso uma vez que a forma de ordenação seja selecionada, o programa deve exibir a matriz ordenada.
Soluções para a tarefa
Oi!
Segue abaixo um exemplo de programa utilizando a linguagem c/c++ que seja capaz de armazenar, em uma matriz 3x20, seguindo as orientações fornecidas no enunciado.
void preencheDados(double matriz[MAX_LINHAS][MAX_COLUNAS], int l, int c){
for( l = 0; l < MAX_LINHAS; l++){
for (c = 0; c < MAX_COLUNAS; c++){
switch(c){
case 0:
printf("Digite o Peso do %d elemento: \n", l + 1);
scanf("%d",&matriz[l][c]);
break;
case 1:
printf("Digite a altura do %d elemento: \n", l + 1);
scanf("%d",&matriz[l][c]);
break;
case 2:
printf("Digite a Idade do %d elemento: \n", l + 1);
scanf("%d",&matriz[l][c]);
system("cls");
}
void exibeMatriz(double matriz[MAX_LINHAS][MAX_COLUNAS]){
int a, b;
char flag;
printf("\nPeso Altura Idade\n");
for(a = 0 ; a< MAX_LINHAS; a++){
printf("\n");
for(b = 0; b< MAX_COLUNAS; b++){
printf(" %d ", matriz[a][b]);
void ordenaPorPeso(double matriz[MAX_LINHAS][MAX_COLUNAS]){
int a,b,x,y,k,p;
double temp[MAX_COLUNAS], maior[MAX_COLUNAS];
//temp e o vetor correspondente a uma pessoa (uma linha) com 3 colunas.
// p e o indice do peso
p = 0;
for(a = 1; a < MAX_LINHAS; a++){
for (b = 0; b < MAX_LINHAS - a; b++){
printf("\n\n if (matriz[%d][%d] (%d) < matriz [%d[%d] (%d))",b,p,matriz[b][p],b+1,p,matriz[b+1][p]);
if(matriz[b][p] < matriz[b+1][p]){
//Armazenando em vetor auxiliar a menor linha da matriz.
for(x = 0; x < MAX_COLUNAS; x++){
maior[x] = matriz[b][x];
printf("\n\nArmazenei: matriz[%d][%d] = %d", b,x,matriz[b][x]);
}
//Passando para uma posicao para "cima" a linha de maior posicao.
for(x = 0; x < MAX_COLUNAS; x++){
matriz[b][x] = matriz[b+1][x];
printf("\n\nArmazenei: matriz[%d][%d] = %d", b,x,matriz[b][x]);
}
for(x = 0; x < MAX_COLUNAS; x++){
matriz[b+1][x] = maior[x];
printf("\n\nArmazenei: matriz[%d][%d] = %d", b,x,matriz[b][x]);
}
}
}
}
char flag;
printf("\nPeso Altura Idade\n");
for(a = 0 ; a< MAX_LINHAS; a++){
printf("\n");
for(b = 0; b< MAX_COLUNAS; b++){
printf(" %d ", matriz[a][b]);
}
}
printf("Para continuar pressione ENTER.\n");
fflush(stdin);
scanf("%c",&flag);
system("cls");
}
void ordenaPorAltura(double matriz[MAX_LINHAS][MAX_COLUNAS]){
int a,b,x,y,k,p;
double temp[MAX_COLUNAS], maior[MAX_COLUNAS], pesoMenor;
//temp e o vetor correspondente a uma pessoa (uma linha) com 3 colunas.
// p e o indice do peso
p = 2;
for(a = 1; a < MAX_LINHAS; a++){
for (b = 0; b < MAX_LINHAS - a; b++){
if(matriz[b][p] < matriz[b+1][p]){
//Armazenando em vetor auxiliar a menor matriz.
for(x = 0; x < MAX_COLUNAS; x++){
maior[x] = matriz[b][x];
}
//Passando para uma posicao para "cima" a linha de maior posicao.
for(y = 0; y < MAX_COLUNAS; y++){
matriz[b][y] = matriz[b+1][y];
}
for(k = 0; k < MAX_COLUNAS; k++){
matriz[b+1][k] = maior[k];
char flag;
printf("\nPeso Altura Idade\n");
for(a = 0 ; a< MAX_LINHAS; a++){
printf("\n");
for(b = 0; b< MAX_COLUNAS; b++){
printf(" %d ", matriz[a][b]);
}
}
printf("Para continuar pressione ENTER.\n");
fflush(stdin);
scanf("%c",&flag);
system("cls");
}
void ordenaPorIdade( double matriz[MAX_LINHAS][MAX_COLUNAS]){
int a,b,x,y,k,p;
double temp[MAX_COLUNAS], maior[MAX_COLUNAS], pesoMenor;
//temp e o vetor correspondente a uma pessoa (uma linha) com 3 colunas.
// p e o indice do peso
p = 2;
for(a = 1; a < MAX_LINHAS; a++){
for (b = 0; b < MAX_LINHAS - a; b++){
if(matriz[b][p] < matriz[b+1][p]){
//Armazenando em vetor auxiliar a menor matriz.
for(x = 0; x < MAX_COLUNAS; x++){
maior[x] = matriz[b][x];
}
//Passando para uma posicao para "cima" a linha de maior posicao.
for(y = 0; y < MAX_COLUNAS; y++){
matriz[b][y] = matriz[b+1][y];
}
for(k = 0; k < MAX_COLUNAS; k++){
matriz[b+1][k] = maior[k];
}
}
}
}
char flag;
printf("\nPeso Altura Idade\n");
for(a = 0 ; a< MAX_LINHAS; a++){
printf("\n");
for(b = 0; b< MAX_COLUNAS; b++){
printf(" %d ", matriz[a][b]);
}
}
printf("Para continuar pressione ENTER.\n");
fflush(stdin);
scanf("%c",&flag);
system("cls");
}
int exibeMenu(){
int opcao;
printf("Selecione uma opcao:\n");
printf("1 - Para preencher os dados da matriz.\n");
printf("2 - Para exibir os dados da matriz\n");
printf("3 - Para ordenar pelo Peso os dados da matriz\n");
printf("4 - Para ordenar pela Altura os dados da matriz\n");
printf("5 - Para ordenar pelo Idade os dados da matriz\n");
printf("6 - Para sair\n")
scanf("%d", &opcao);
return opcao;
}
int main(int argc, char *argv[]) {
int opcao;
double matriz[MAX_LINHAS][MAX_COLUNAS];
printf("**** Exercicio 3 ****");
while((opcao = exibeMenu()) != 6){
switch(opcao){
case 1:
system("cls");
printf("**** Preenchimento de dados ****\n");
preencheDados(matriz, MAX_LINHAS, MAX_COLUNAS);
break;
case 2:
system("cls");
printf("**** Exibindo Matriz ****\n");
exibeMatriz(matriz);
printf("\n");
break;