Jump to content

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


gabiarruda4528

Recommended Posts

Posted

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);
 }

 

  • Administrators
Posted

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

Posted

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)

  • Administrators
Posted

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!

Archived

This topic is now archived and is closed to further replies.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...