gabiarruda4528 Posted May 3, 2021 Posted May 3, 2021 Estou fazendo esse exercício: https://prnt.sc/12fddfcmas 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 Fernando Mercês Posted May 3, 2021 Administrators Posted May 3, 2021 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
gabiarruda4528 Posted May 3, 2021 Author Posted May 3, 2021 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 Fernando Mercês Posted May 3, 2021 Administrators Posted May 3, 2021 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!
Recommended Posts
Archived
This topic is now archived and is closed to further replies.