How to fill an array [ ][ ] with struct in C++, in the code below

Asked

Viewed 2,243 times

0

Need to put the employee code in a [2][100] matrix and the sum of children multiplied by how much each earns, in the module:

int calculo(CADASTRO_FUNCIONARIOS  cadastro[100], int n)

Code:

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

typedef struct
{
        int codigo;
        float salario;
        int filMaior;
        int filMenor;

} CADASTRO_FUNCIONARIOS;

// prototipacao dos módulos

void leitura(CADASTRO_FUNCIONARIOS cadastro[100],int n);
void impressao(CADASTRO_FUNCIONARIOS cadastro[100],int n);
int calculo(CADASTRO_FUNCIONARIOS  cadastro[100],int n);
//------------------------------------------------------

void leitura(CADASTRO_FUNCIONARIOS cadastro[100],int n)
{
     int i;
     printf("\n\n Cadastro de Funcionarios");
     for (i=0;i<n;i++)
     {
         printf("\n\n Funcionario %d", i+1);
         printf("\n Informe o codigo..........: ");
         fflush(stdin);
         scanf("%d",&cadastro[i].codigo);
         printf("\n Informe o salario.........: ");
         fflush(stdin);
         scanf("%f",&cadastro[i].salario); 
         printf("\n Informe o Numero de filhos Maiores de idade...: ");
         fflush(stdin);
         scanf("%i",&cadastro[i].filMaior);
         printf("\n Informe o Numero de filhos Menores de idade...: ");
         scanf("%i",&cadastro[i].filMenor);

     }
}

void impressao(CADASTRO_FUNCIONARIOS cadastro[100],int n)
{
     int i;
     system("cls");
     printf("\n\n Relatorio de Funcionarios");
     for (i=0;i<n;i++)
     {
         printf("\n\n Funcionario %d", i+1);
         printf("\n Codigo..........: %i", cadastro[i].codigo);
         printf("\n Salario.........: %.2f", cadastro[i].salario); 
         printf("\n Numero de filhos Maiores de idade...: %i", cadastro[i].filMaior);
         printf("\n Numero de filhos Menores de idade...: %i", cadastro[i].filMenor);        
     }
}

int calculo(CADASTRO_FUNCIONARIOS  cadastro[100], int n)
{ 
    int i,t, cod, filhoMaior, filhoMenor, numfil;

    float o = 20,soma = 0, dados[100][2];

    printf("\n\n Matriz somatorio codigo cliente\n\n");


    for (i = 0;i < n; ++i){

        cod = cadastro[i].codigo;

        filhoMenor = cadastro[i].filMenor ;
        filhoMenor = cadastro[i].filMaior ;

        numfil = filhoMenor + filhoMenor ; 

        if (filhoMenor <= 0){
            soma = soma + (filhoMenor * 10);    
        } 

        if (filhoMaior <= 0 ){
            soma = soma + (filhoMaior * 15);    
        }

        printf("Codigo do Funcionario %i\n ",cadastro[i].codigo);
        printf("Numero de Filhos Maior de Idade %i\n ",cadastro[i].filMaior);
        printf("Numero de Filhos Menor de Idade %i\n ",cadastro[i].filMenor);
        printf("Custo Empresa Por Filho %2.f",soma);

    }

}

main(void)
{
          int num,i;

          CADASTRO_FUNCIONARIOS cadastro[100];
          CADASTRO_FUNCIONARIOS cadastros[2][100];

          do{
               printf("\n Quantos funcionarios deseja cadastrar (no maximo 100 funcionarios): ");
               scanf("%d",&num);
          }while(num<1 || num >100);
          leitura (cadastro,num);
          impressao(cadastro,num);
          calculo(cadastro,num);

          getch();
}
  • 1

    In C++ it’s absurdly different from what C is.

  • So how should I peoceder Mr. bigown,?

  • Despite being on the C++ tag and title, this code is much more C-like than C++-like.

1 answer

1

POO usually stops using struct and starts using Classes and Objects, in your case you should create an employee class.

The header of the working class. h would look like this:

class Funcionario {
public:
    Funcionario();
    Funcionario(const Funcionario& orig);
    virtual ~Funcionario();

    int GetCodigo() const;

    void SetCodigo(int codigo);

    int GetFilMario() const;

    void SetFilMario(int filMario);

    int GetFilMenor() const;

    void SetFilMenor(int filMenor);

    float GetSalario() const;

    void SetSalario(float salario);


private:

    int codigo;   
    float salario;    
    int filMario;    
    int filMenor;

};

The employee.cpp implementation

#include "Funcionario.h"

Funcionario::Funcionario() {
}

Funcionario::Funcionario(const Funcionario& orig) {
}

Funcionario::~Funcionario() {
}

int Funcionario::GetCodigo() const {
    return codigo;
}

int Funcionario::GetFilMario() const {
    return filMario;
}

int Funcionario::GetFilMenor() const {
    return filMenor;
}

float Funcionario::GetSalario() const {
    return salario;
}

void Funcionario::SetCodigo(int codigo) {
    this->codigo = codigo;
}

void Funcionario::SetFilMario(int filMario) {
    this->filMario = filMario;
}

void Funcionario::SetFilMenor(int filMenor) {
    this->filMenor = filMenor;
}

void Funcionario::SetSalario(float salario) {
    this->salario = salario;
}

Of course you can create methods of manipulating and calculating data for the class.

In case you can declare Funcionario funcionario[100];

  • Thanks Thiago helped me a lot.

  • @Mauriciomoccellin , if that answer was what saved your day, mark it as accepted

Browser other questions tagged

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