Informática, perguntado por samuelalmy9425, 11 meses atrás

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

Respondido por mayaravieiraj
1

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;

 

Perguntas interessantes