Matrix vector of records

Asked

Viewed 194 times

0

In the classroom, students were asked to replicate a scheme designed by the teacher. In this scheme he made a vector, within each position he made a matrix and within each position of the matrix he drew a structure containing name, address and age. Let it be clear that I’m not asking you to solve for me, I just want you to explain to me the logic of this exercise.

Follow my code so far:

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

struct Pessoa{
    char nome[40];
    char endereco[100];
    int idade;
};

void mostrar(Pessoa vetor[][2]){
    for(int i=0; i<2; i++){
        for(int j=0; j<2; j++){
            printf("\nCOD-%d\n", i);
            printf("\tNome: %s", vetor[i][j].nome);
            printf("\n\tEndereco: %s", vetor[i][j].endereco);
            printf("\n\tIdade: %d", vetor[i][j].idade); 
        }
        printf("\n");
    }
}

int main(void){
    Pessoa clientes[2][2];

    for(int i=0; i<2; i++)
        for(int j=0; j<2; j++){
            fflush(stdin);
            printf("\nCOD-%d%d\n", i,j);
            printf("\tNome: ");
            gets(clientes[i][j].nome);
            printf("\tEndereco: ");
            gets(clientes[i][j].endereco);
            printf("\tIdade: ");
            scanf("%d", &clientes[i][j].idade); 
        }

    system("cls");
    mostrar(clientes);
    return 0;
}

2 answers

0

Simple, come on in the main function you will fill the vector of the person struct, you will pick at position 0, 1 or 2 rows and 2 columns, in this row you are creating an array of 3 rows and 3 columns of the person struct

Pessoa clientes[2][2];

Aqui na main você irá percorrer as linhas da matriz e as colunas passando os dados para a clientes que referencia a struct criada, basicamente oque faz é em na linha 0 e coluna 0 passa um nome idade e endereço, linha 0 e coluna 1 passa um nome idade e endereço, e assim por diante, e na mostrar ao invés de receber ele mostra os dados passados

int main(void){
    Pessoa clientes[2][2];

    for(int i=0; i<2; i++)
        for(int j=0; j<2; j++){
            fflush(stdin);
            printf("\nCOD-%d%d\n", i,j);
            printf("\tNome: ");
            //Aqui você pegará o nome
            gets(clientes[i][j].nome);
            printf("\tEndereco: ");
            //Aqui você pegará o endereço
            gets(clientes[i][j].endereco);
            printf("\tIdade: ");
             //Aqui você pegará a idade
            scanf("%d", &clientes[i][j].idade); 
        }

    system("cls");
    //Aqui chama a função mostrar
    mostrar(clientes);
    return 0;
}

In the show function you receive the matrix and traverse it, row 0 and row 1, column 0 and 1 and show the data entered in it

void mostrar(Pessoa vetor[][2]){
    for(int i=0; i<2; i++){
        for(int j=0; j<2; j++){
            printf("\nCOD-%d\n", i);
            //Mostra o nome
            printf("\tNome: %s", vetor[i][j].nome);
             //Mostra o endereço
            printf("\n\tEndereco: %s", vetor[i][j].endereco);
             //Mostra a idade
            printf("\n\tIdade: %d", vetor[i][j].idade); 
        }
        printf("\n");
    }
}

As soon as you speak?

Inside the same main function you will create a vector of type Person, and store the matrices of the struct Person inside the vector and show

int main(void){
    Pessoa clientes[2][2];
    Pessoa clienteGuarda[5];
    //variavel auxiliar
    int aux = 0;
    for(int i=0; i<2; i++){
        for(int j=0; j<2; j++){
            fflush(stdin);
            printf("\nCOD-%d%d\n", i,j);
            printf("\tNome: ");
            gets(clientes[i][j].nome);
            printf("\tEndereco: ");
            gets(clientes[i][j].endereco);
            printf("\tIdade: ");
            scanf("%d", &clientes[i][j].idade); 
        }
    }


    system("cls");
    mostrar(clientes);
    //for para percorrer o vetor e adicionar matrizes a ele
     for(int i=0; i<2; i++){
        for(int j=0; j<2; j++){
            //adiciona o struct armazenado em cada posição da matriz
            clienteGuarda[aux] = clientes[i][j];
            //Printa os dados do vetor 
            printf("%s",clienteGuarda[aux].nome);
            printf("%s",clienteGuarda[aux].endereco);
            printf("%d",clienteGuarda[aux].idade);
            aux++;
        }
    }
    return 0;
}
  • This was the code I made, but I still need the client matrix to stay within a vector[3].

  • How so I didn’t understand your doubt so... you want it to have one more row and one more column?

  • At the moment I was able to make a struct matrix, to get to what the teacher asked for, it is missing to place this matrix inside a vector (each vector position will have a struct matrix)

  • I will edit the publication

0


It was very simple: Just put this structure together.

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

struct dados{
    char *nome;
    char *endereco;
    int idade;
};

struct matriz{
    struct dados mat[3][3];
};

main(){
    struct matriz vet[3];
    return 0;
}

Browser other questions tagged

You are not signed in. Login or sign up in order to post.