records matrix vector

0

Students were asked to replicate a teacher-designed scheme in the classroom. In this scheme he made a vector, within each position he made a matrix and within each position of the matrix he designed a structure containing name, address and age. Make it clear that I am not asking you to solve it for me, I just want you to explain the logic of this exercise.

Here's what I've done 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;
}
    
asked by anonymous 09.08.2017 / 19:42

2 answers

0

It was quite simple: Just mount this structure.

#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;
}
    
11.08.2017 / 21:24
0

Simple, let's la in the main function you will fill the vector of the struct person, you will pick up at position 0, 1 ie 2 rows and 2 columns, in that row you are creating an array of 3 rows and 3 columns of the struct person

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 go through it, row 0 and row 1, column 0 and 1 and shows the data you 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");
    }
}

So what do you say?

Inside the same main function you will create a Vector of the Person type, and store the arrays of the Person struct within 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;
}
    
09.08.2017 / 21:03