3
Good evening, I am with a work of completion of discipline in which I have to register N employees, in my code I put 5 to get faster the tests.
This information would be saved in a structure and how I would use the structure more than once, both for registration and for registration update I decided to use the same code in conjunction with switch case. But then I thought, since this structure is going to be used more than once, I can create a function with it and call when necessary, but it’s not working, can anyone tell me where I’m going wrong? Follows the code:
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
struct funcionarios
{
int cod_func;
int cod_cargo;
char end_func[100];
char nome_func[100];
};
struct funcionarios x[4];
struct funcionarios cadastro1(struct funcionarios c)
{
for(c = 0; c < 5; c++)
{
setbuf(stdin, NULL);
printf("Digite o nome completo do funcionário: ");
gets(x[c].nome_func);
setbuf(stdin, NULL);
printf("Digite o endereço do funcionário: ");
gets(x[c].end_func);
setbuf(stdin, NULL);
printf("Digite o código do funcionário: ");
scanf("%i", &x[c].cod_func);
setbuf(stdin, NULL);
printf("Digite o código do cargo: ");
scanf("%i", &x[c].cod_cargo);
printf("\n");
}
return c;
};
int main()
{
setlocale(LC_ALL, "");
int i, c, f, controle1, controle2, controle3, controle4, controle5;
int menu=0, menu1=0, menu2=0, menu3=0, menu4=0, menu5=0, menu6=0;
float cargos[5] = {2.500, 1.500, 12.000, 1.800, 950};
do
{
if(menu < 0 || menu > 6)
{
printf("\nEntrada inválida, Selecione conforme mostrado.\n");
printf("Opções válidas de 1 até 6 e 7 para encerrar.\n");
}
printf("\n\nSelecione uma opção conforme mostrado abaixo.\n\n");
printf("1 - Cargos da Empresa.\n");
printf("2 - Funcionários da Empresa.\n");
printf("3 - Exibir relatório completo.\n");
printf("4 - Exibir média salarial dos funcionários.\n");
printf("5 - Exibir o valor pago que pertençam a determinado cargo.\n");
printf("6 - Ordenação.\n");
printf("7 - Sair.\n\n");
printf("Digite a opção desejada: ");
scanf("%i", &menu);
controle1 = menu;
system("cls");
}
while (menu < 0 || menu > 6);
switch (controle1)
{
case 1:
{
do
{
system("cls");
printf("\nSelecione uma opção.\n\n");
printf("1 - Cadastrar Cargos: \n");
printf("2 - Atualizar Cargos existentes: \n");
printf("\nDigite a opção desejada: ");
scanf("%i", &menu1);
controle2 = menu1;
}
while(menu1 < 1 || menu1 > 2);
}
switch (controle2)
{
case 1:
{
system("cls");
printf("CADASTRO DE CARGOS, PREENCHA FORMULÁRIO:\n\n");
cadastro1(c); //Aqui chamo a função para preenche o formulário
break;
}
case 2:
{
system("cls");
printf("ALTERAR INFORMAÇÕES DE CARGOS, PREENCHA:\n\n");
cadastro1(c); ////Aqui chamo a função para preenche o formulário
break;
}
}
}
}
I made a version that works from code but using switch, this at least runs... But the function would be to optimize code.
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
struct funcionarios
{
int cod_func;
int cod_cargo;
char end_func[100];
char nome_func[100];
};
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int main()
{
setlocale(LC_ALL, "");
int i, c, f, controle1, controle2, controle3, controle4, controle5;
int menu=0, menu1=0, menu2=0, menu3=0, menu4=0, menu5=0, menu6=0;
float cargos[5] = {2.500, 1.500, 12.000, 1.800, 950};
struct funcionarios x[4];
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
do
{
if(menu < 0 || menu > 6)
{
printf("\nEntrada inválida, Selecione conforme mostrado.\n");
printf("Opções válidas de 1 até 6 e 7 para encerrar.\n");
}
printf("\n\nSelecione uma opção conforme mostrado abaixo.\n\n");
printf("1 - Cargos da Empresa.\n");
printf("2 - Funcionários da Empresa.\n");
printf("3 - Exibir relatório completo.\n");
printf("4 - Exibir média salarial dos funcionários.\n");
printf("5 - Exibir o valor pago que pertençam a determinado cargo.\n");
printf("6 - Ordenação.\n");
printf("7 - Sair.\n\n");
printf("Digite a opção desejada: ");
scanf("%i", &menu);
controle1 = menu;
system("cls");
}
while (menu < 0 || menu > 6);
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
switch (controle1)
{
case 1:
{
do
{
system("cls");
printf("\nSelecione uma opção.\n\n");
printf("1 - Cadastrar Cargos: \n");
printf("2 - Atualizar Cargos existentes: \n");
printf("\nDigite a opção desejada: ");
scanf("%i", &menu1);
controle2 = menu1;
}
while(menu1 < 1 || menu1 > 2);
}
switch (controle2)
{
case 1:
{
do
{
system("cls");
printf("CADASTRO DE CARGOS, PREENCHA FORMULÁRIO:\n\n");
for(c = 0; c < 5; c++)
{
setbuf(stdin, NULL);
printf("Digite o nome completo do funcionário: ");
gets(x[c].nome_func);
setbuf(stdin, NULL);
printf("Digite o endereço do funcionário: ");
gets(x[c].end_func);
setbuf(stdin, NULL);
printf("Digite o código do funcionário: ");
scanf("%i", &x[c].cod_func);
setbuf(stdin, NULL);
printf("Digite o código do cargo: ");
scanf("%i", &x[c].cod_cargo);
printf("\n");
}
//printf("Retornar para tela principal? SIM - 1 / NÃO - 2: ");
//scanf("%i", &controle1);
}
while(x[i].cod_cargo < 1 || x[i].cod_cargo > 5);
}
case 2:
{
do
{
system("cls");
printf("ALTERAR INFORMAÇÕES DE CARGOS, PREENCHA:\n\n");
for(c = 0; c < 5; c++)
{
setbuf(stdin, NULL);
printf("Digite o nome completo do funcionário: ");
gets(x[c].nome_func);
setbuf(stdin, NULL);
printf("Digite o endereço do funcionário: ");
gets(x[c].end_func);
setbuf(stdin, NULL);
printf("Digite o código do funcionário: ");
scanf("%i", &x[c].cod_func);
setbuf(stdin, NULL);
printf("Digite o código do cargo: ");
scanf("%i", &x[c].cod_cargo);
printf("\n");
}
//printf("Retornar para tela principal? SIM - 1 / NÃO - 2: ");
//scanf("%i", &controle1);
}
while(x[i].cod_cargo < 1 || x[i].cod_cargo > 5);
}
}
}
}
Can someone give me a light on how I can pass the structure to function and call it whenever the user will use it? Whether to register or replace information...