Buscar

Atividade Prática Estrutura de Dados

Boa Noite

Alguem tem a resposta dessa questao ja corrigida pela uninter?

criar um progrma utilizando a linguagem de programaçao c/c++ que seja capaz de armazenar em uma matriz 3x20 o peso(linha 0), a altura (linha 1) e 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çao seja selecionada, o programa deve exibir a matriz ordenada. 

💡 3 Respostas

User badge image

RD Resoluções

Vou apresentar o código pra você em Linguagem C, tudo bem? Mais algumas observações quanto ao código, irei utilizar o conceito de modularização e funções, caso esse conteúdo ainda não tenha sido explorado por você sugiro que dê uma olhadinha em materias sobre modularização, é bastante útil e auxilia bastante a reutilização de códigos ;) Segue o algoritmo:

#include <stdio.h>
#include <stdlib.h>

void ordenar(int opc, int matriz[3][20]);

int main()
{
    int i, j, matriz[3][20], opc;
    
    printf("Insira os dados na ordem: peso-altura-idade\n");
    for(i=0;i<20;i++){
        printf("\nPessoa %d:\n", i+1);
        for(j=0;j<3;j++){
            scanf("%d", &matriz[j][i]);
        }
    }
    
    printf("\nEscolha por qual grandeza ordenar:\n");
    printf("1-Peso\n2-Altura\n3-Idade\nOpcao: ");
    scanf("%d", &opc);
    
    while(opc<1 || opc>3){
        printf("\nO valor inserido nao corresponde a uma opcao verdadeira, favor inserir novamente: ");
        scanf("%d", &opc);
    }
        
    ordenar(opc-1, matriz);
    
    printf("\nPessoa - peso - altura - idade\n");
    for(i=0;i<20;i++){
        printf("%3d   %5d   %5d   %5d\n", i, matriz[0][i], matriz[1][i], matriz[2][i]);
    }
    
    return 0;
}
void ordenar(int opc, int matriz[3][20])
{
    int i, j, aux;
    
    for(i=0;i<20-1;i++){
        for(j=i;j<20-1;j++){
            if(matriz[opc][i]>matriz[opc][j]){
                aux=matriz[0][i];
                matriz[0][i]=matriz[0][j];
                matriz[0][j]=aux;
                
                aux=matriz[1][i];
                matriz[1][i]=matriz[1][j];
                matriz[1][j]=aux;
                
                aux=matriz[2][i];
                matriz[2][i]=matriz[2][j];
                matriz[2][j]=aux;
            }
        }
    }
}
2
Dislike0
User badge image

Joao Andre MArtins Dias


/*
 * File:   main.cpp
 * Author: joao
 *
 * Created on 20 de junho de 2017, 15:35
 * criar um progrma utilizando a linguagem de programaçao c/c++ que seja capaz de armazenar
 * em uma matriz 3x20 o peso(linha 0), a altura (linha 1) e 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çao seja selecionada, o programa deve exibir a matriz ordenada.
 */

#include <stdlib.h>
#include <stdio.h>
#include<math.h>
using namespace std;

void preencheMatriz(int mat[20][3], int m, int n) {
    int randon;
    for (int i = 0; i < m; i++) {
        for (int k = 0; k < n; k++) {
            switch (k) {
                case 0:
                    randon = (rand() % ((150 - 1) + 1)) + 1;
                    break;
                case 1:
                    randon = (rand() % ((200 - 1) + 1)) + 1;
                    break;
                case 2:
                    randon = (rand() % ((99 - 1) + 1)) + 1;
                    break;
            }
            mat[i][k] = randon;
        }
    }
}

void exibeMatriz(int mat[20][3], int m, int n) {
    printf("\nPeso - Altura - Idade\n");
    for (int i = 0; i < m; i++) {
        printf("\n");
        for (int j = 0; j < n; j++) {
            printf("[%d] ", mat[i][j]);
        }
    }
}

void gnomeSort(int vet[20][3], int m, int n, int posChave) {
    int i = 1, j = 2, aux;
    while (i < m) {
        if (vet[i - 1][posChave] <= vet[i][posChave]) {
            i = j;
            j++;
        } else {//copia do vetor na posição i(linha) em l (colunas)
            for (int l = 0; l < n; l++) {
                aux = vet[i][l];
                vet[i][l] = vet[i - 1][l];
                vet[i - 1][l] = aux;
            }
            i--;
            if (i == 0) {
                i = j;
                j++;
            }
        }
    }
}

int main(int argc, char** argv) {
    int op = 0;
    int matriz[20][3];

    preencheMatriz(matriz, 20, 3);
    exibeMatriz(matriz, 20, 3);
    printf("Digite [0] para ordenar por peso\n");    
    printf("Digite [1] para ordenar por altura\n");    
    printf("Digite [2] para ordenar por idade\n");    
    scanf("%d",op);        
        gnomeSort(matriz, 20, 3, op);
        exibeMatriz(matriz, 20, 3);
    

}

Parceiro para ordenar usei o Método gnomeSort que entre os métodos ditos "burros" é o mais espertinho. até um bolha resolvia, mas esse -e bem mais eficiente.

 

1
Dislike0
User badge image

Luiz Fernando

Tenho nos meus materiais, provas

0
Dislike0

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

✏️ Responder

SetasNegritoItálicoSublinhadoTachadoCitaçãoCódigoLista numeradaLista com marcadoresSubscritoSobrescritoDiminuir recuoAumentar recuoCor da fonteCor de fundoAlinhamentoLimparInserir linkImagemFórmula

Para escrever sua resposta aqui, entre ou crie uma conta

User badge image

Outros materiais

Outros materiais