Jump to content

Ajuda com linguagem C/C++, urgente!!


Recommended Posts

Estou fazendo esse exercício: https://prnt.sc/12fddfc
mas travei quando cheguei na parte marcada… não estou conseguindo fazer essa função, alguém poderia me ajudar? desde já ficaria grata..

 

#include<stdio.h>

typedef struct 
 {
   char nome[50];
   char cargo[50];
   char endereco[100];
   char cpf[11];
   int idade;
   int salario;
 } Funcionario;
 Funcionario salarioCargo(Funcionario p1, Funcionario p2, Funcionario p3, Funcionario p4, Funcionario p5){
   
 };

 int main()
 {
     Funcionario p1;
     printf("\nNome do primeiro funcionario: ");
     scanf("%s", &p1.nome);
     printf("Cargo: ");
     scanf("%s", &p1.cargo);
     printf("Endereco: ");
     scanf("%s", &p1.endereco);
     printf("CPF: ");
     scanf("%s", &p1.cpf);
     printf("Idade: ");
     scanf("%d", &p1.idade);
     printf("Salario: ");
     scanf("%d", &p1.salario);
     printf("\nPrimeiro funcionario:\nNome: %s\nCargo: %s\nEndereco: %s\nCpf: %s\nIdade: %d\nSalario: %d\n", p1.nome, p1.cargo, p1.endereco, p1.cpf, p1.idade, p1.salario);

     Funcionario p2;
     printf("\nNome do segundo funcionario: ");
     scanf("%s", &p2.nome);
     printf("Cargo: ");
     scanf("%s", &p2.cargo);
     printf("Endereco: ");
     scanf("%s", &p2.endereco);
     printf("CPF: ");
     scanf("%s", &p2.cpf);
     printf("Idade: ");
     scanf("%d", &p2.idade);
     printf("Salario: ");
     scanf("%d", &p2.salario);
     printf("\nSegundo funcionario:\nNome: %s\nCargo: %s\nEndereco: %s\nCpf: %s\nIdade: %d\nSalario: %d\n", p2.nome, p2.cargo, p2.endereco, p2.cpf, p2.idade, p2.salario);

     Funcionario p3;
     printf("\nNome do terceiro funcionario: ");
     scanf("%s", &p3.nome);
     printf("Cargo: ");
     scanf("%s", &p3.cargo);
     printf("Endereco: ");
     scanf("%s", &p3.endereco);
     printf("CPF: ");
     scanf("%s", &p3.cpf);
     printf("Idade: ");
     scanf("%d", &p3.idade);
     printf("Salario: ");
     scanf("%d", &p3.salario);
     printf("\nTerceiro funcionario:\nNome: %s\nCargo: %s\nEndereco: %s\nCpf: %s\nIdade: %d\nSalario: %d\n", p3.nome, p3.cargo, p3.endereco, p3.cpf, p3.idade, p3.salario);

     Funcionario p4;
     printf("\nNome do quarto funcionario: ");
     scanf("%s", &p4.nome);
     printf("Cargo: ");
     scanf("%s", &p4.cargo);
     printf("Endereco: ");
     scanf("%s", &p4.endereco);
     printf("CPF: ");
     scanf("%s", &p4.cpf);
     printf("Idade: ");
     scanf("%d", &p4.idade);
     printf("Salario: ");
     scanf("%d", &p4.salario);
     printf("\nQuarto funcionario:\nNome: %s\nCargo: %s\nEndereco: %s\nCpf: %s\nIdade: %d\nSalario: %d\n", p4.nome, p4.cargo, p4.endereco, p4.cpf, p4.idade, p4.salario);

     Funcionario p5;
     printf("\nNome do ultimo funcionario: ");
     scanf("%s", &p5.nome);
     printf("Cargo: ");
     scanf("%s", &p5.cargo);
     printf("Endereco: ");
     scanf("%s", &p5.endereco);
     printf("CPF: ");
     scanf("%s", &p5.cpf);
     printf("Idade: ");
     scanf("%d", &p5.idade);
     printf("Salario: ");
     scanf("%d", &p5.salario);
     printf("\nQuinto funcionario:\nNome: %s\nCargo: %s\nEndereco: %s\nCpf: %s\nIdade: %d\nSalario: %d\n", p5.nome, p5.cargo, p5.endereco, p5.cpf, p5.idade, p5.salario);

     Funcionario p6;
     p6.salario = p1.salario + p2.salario + p3.salario + p4.salario + p5.salario;
     printf("\nNome e salario de todos funcionario:\n%s: %d\n%s: %d\n%s: %d\n%s: %d\n%s: %d\n\nTotal: %d", p1.nome, p1.salario, p2.nome, p2.salario, p3.nome, p3.salario, p4.nome, p4.salario, p5.nome, p5.salario, p6.salario);
 }

 

Link to post
Share on other sites
  • Administradores

Olá!

Que bom que você está tentando. Vira e mexe aparecem pessoas aqui que só querem as repostas. O problema disso é que não aprendem. :(

Indo ao assunto, bom, você vai precisar adicionar uma função. No momento o seu programa só tem uma função, a main. Para completar esse exercício você vai precisar de mais uma, que o exercício já te dá o nome, salarioCargo. Ela retorna o total pago, então você já sabe que o retorno da função é do tipo int (já que tá usando este tipo para o salário no programa todo). A função recebe 2 parâmetros: um vetor para a estrutura de funcionários e uma string. A declaração então ficaria mais ou menos assim:

int salarioCargo(Funcionario *funcionarios, char *cargo) {
  // seu código daqui
}

No código, você vai precisar iterar (usando um loop, tipo for ou while) pelo vetor de funcionários e comparar seus cargos com o cargo passado para a função. A partir daí somar os valores de seus salários.

Pontos importantes:

  • Na main, o jeito como você tá preenchendo as informações dos 5 funcionários é pouco otimizado. Seria melhor declarar um vetor de funcionários e fazer um loop para preencher as informações deles (for i=0; i<5; i++). Assim você já vai ter o vetor pra passar pra função salarioCargo também.
  • O exercício é seu, por isso por favor, nunca peça para alguém fazê-lo (não to dizendo que você fez isso - pelo contrário, você não fez, mas só deixando claro que ninguém vai fazer pra você, afinal você é a futura programadora que está se formando e o mercado vai contar com você ☺️).
  • Pode contar com a gente para todas as suas dúvidas.
  • Pode ser que você precise revisitar suas notas, reler livros etc para entender sobre funções, arrays (vetores), ponteiros e loops para completar este exercício.

Abraço,

Fernando

Link to post
Share on other sites
Posted (edited)

Eu mudei o jeito que estou fazendo igual recomendou, mas estou com problemas na hora de imprimir, já dei uma boa pesquisada e não sei oq estou errando, veja:

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

typedef struct 
 {
   char nome[50];
   char cargo[50];
   char endereco[100];
   char cpf[11];
   int idade;
   int salario;
 } Funcionario;
Funcionario func[2];

 int main()
 {
  int i;
  setlocale(LC_ALL,"portuguese");
  Funcionario soma;
  soma.salario= func[1].salario + func[2].salario;
  for(i=0; i<2; i++) {
    strcpy(func[i].nome, "NULL");
    strcpy(func[i].cargo, "NULL");
    strcpy(func[i].endereco, "NULL");
    strcpy(func[i].cpf, "NULL");
    func[i].idade = 0;
    func[i].salario = 0;
  }
  for(i=0; i<2; i++) {
    printf("\nNome do funcionario: ");
    scanf("%s", &func[i].nome);
    printf("Cargo: ");
    scanf("%s", &func[i].cargo);
    printf("Endereco: ");
    scanf("%s", &func[i].endereco);
    printf("CPF: ");
    scanf("%s", &func[i].cpf);
    printf("Idade: ");
    scanf("%d", &func[i].idade);
    printf("Salario: ");
    scanf("%d", &func[i].salario);
    printf("\nFuncionario registrado com sucesso!\n");
  }
    printf("\nNome e salario de todos funcionario:\n\n%s: %d\n%s: %d\n%s: %d\n%s: %d\n%s: %d\n\nTotal: %d", func[1].nome, func[1].salario, func[2].nome, func[2].salario, soma.salario);
}

já tentei usar o if pra imprimir, já tentei até else, mas na hora de imprimir ele imprime tudo errado..

a parte que quero imprimir será a do nome dos funcionários com a soma dos salários (obs: deixei só 2 para ficar mais rápido os testes)

Edited by gabiarruda4528
Link to post
Share on other sites
  • Administradores

Avançou bem! :)

Algumas observações aí:

  • Você não precisa desse "funcionário fantasma" (kkkkk) só pra manter a soma. Basta uma variável do tipo int (que precisa ser declarada na main) e no final do segundo loop você pode fazer algo como soma = soma + func[i].salario;
  • No seu printf no final você tá assumindo que o primeiro elemento do array (vetor) func tá na posição 1, mas na verdade arrays em C começam em zero, logo, o primeiro elemento é func[0] e o segundo é func[1].
  • Ainda no printf, parece que tem mais "percents" do que variáveis para substituí-los. Confere aí. O número de "percents" tem que ser igual ao número de argumentos depois dessa string que tem os "percents".
  • Uma dica pra ajudar a não se perder é pular linha no printf pra deixar mais legível. C permite isso. Só prestar atenção nas vírgulas e não esquecer de fechar parênteses no fim. Tipo:
printf("%s : R$ %d\n%s : R$ %d\n",
       func[0].nome, func[0].salario,
       func[1].nome, func[1].salario);

Boa sorte!

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...