brujah999 0 Denunciar post Postado Maio 26, 2009 Ok, tenho esse programa, ele ta rodando lindo, mais tem um problema ele deveria gravar dados de 4 departamentos e 6 funcionarios e quando pedido gerar relatorio com os dados do funcionario de acordo com o setor. Exemplo se setor 1 cabe 10 funcionarios a 2 reais hora, e setor 2, 20 funcionarios a 5 reais hora ( digitados pelo usuario, como ta no programa ), no final ele analisa o setor quantas horas extras e da o salario final do cara. Bem como falei ta rodando mais apenas para 1 funcionario e 1 setor, sempre que coloco um vetor da erro. Alguém poderia me ajudar a colocar um vetor funcional ?? segue codigo **************************************** #include<stdio.h> #include<stdlib.h> #include<string.h> /*****ESTRUTURA*****/ struct departamento { char nomed[30]; float maxhoras, valorhora; int codigo; }; typedef struct departamento tipodepartamento; struct funcionario { char nomef[30]; float bancohoras, horastrab; int codigo, codigodep; }; typedef struct funcionario tipofuncionario; /*****PROTÓTIPOS DAS FUNÇÕES*****/ float receber(float n1, float n2, float n3); /*****FUNÇÃO PRINCIPAL COM MENU*****/ int main() { int opc, i; float totalhorastrab, totalreceber, v1, v2; do { printf("Folha de Pagamento\n"); printf("\nPor favor digite a sua opcao\n\n"); printf("1 - Cadastrar Departamento\n"); printf("2 - Cadastrar Funcionario\n"); printf("3 - Folha de Pagamento por Funcionario\n"); printf("4 - Sair\n\n\nopcao:"); scanf("%d",&opc); system("cls"); /***** ESTRUTURA DE CONTROLE - MENU*****/ switch (opc) { case 1: tipodepartamento dep; printf("\nNome do setor: "); scanf("%s",&dep.nomed); printf("\nNumero Departamento: "); scanf("%d",&dep.codigo); printf("\nNumero maximo de horas: "); scanf("%d",&dep.maxhoras); printf("\nValor hora do funcionario: "); scanf("%f",&dep.valorhora); break; case 2: tipofuncionario func; printf("\nNome do Funcionario: "); scanf("%s",&func.nomef); printf("\nNumero do Funcionario: "); scanf("%d",&func.codigo); while(func.codigodep != dep.codigo) { printf("\nNumero do Departamento: "); scanf("%d",&func.codigodep); } printf("\nQuantidade de horas trabalhadas: "); scanf("%f",&func.horastrab); break; case 3: totalhorastrab=func.horastrab; totalreceber=receber(totalhorastrab,dep.maxhoras,dep.valorhora); printf("Dados do Funcionario\n\n Nome: %s\n Departamento: %d\n Horas trabalhadas: %4.0f horas\n Total a Receber: R$%6.2f\n\n", func.nomef, func.codigodep, totalhorastrab, totalreceber); break; case 4: printf("\nSAINDO...\n\n"); break; default: printf("\n\nOpcao invalida!!!\n\n"); break; } } while(opc !=4); } /*****Função Total a Receber*****/ float hextra; float receber (float n1, float n2, float n3) { if(n1<=n2) return n3*n1; else { hextra=n1-n2; return (((n1-hextra)*n3)+((n3*1.5)*hextra)); } } ****************************************************** vlw a ajuda 4.gif Compartilhar este post Link para o post Compartilhar em outros sites
VictorCacciari 42 Denunciar post Postado Maio 26, 2009 Título Editado, retirada a palavra "Ajuda" do título: Ajuda em C++ http://forum.imasters.com.br/public/style_emoticons/default/seta.gif Problema com Vetores Compartilhar este post Link para o post Compartilhar em outros sites
rafael.t.a 0 Denunciar post Postado Maio 26, 2009 brujah999, você terá que criar um vetor de ponteiros... assim: typedef struct{ char nomed[30]; float maxhoras, valorhora; int codigo; }*tipodepartamento; tipodepartamento dep[4]; Compartilhar este post Link para o post Compartilhar em outros sites
brujah999 0 Denunciar post Postado Maio 27, 2009 cara eu tentei is da erro.. veja se fiz algo errado plz // Cria um programa. #include<stdio.h> #include<stdlib.h> #include<string.h> /*****ESTRUTURA*****/ struct departamento { char nomed[30]; float maxhoras, valorhora; int codigo; }; typedef struct departamento *tipodepartamento; struct funcionario { char nomef[30]; float bancohoras, horastrab; int codigo, codigodep; }; typedef struct funcionario *tipofuncionario; /*****PROTÓTIPOS DAS FUNÇÕES*****/ float receber(float n1, float n2, float n3); /*****FUNÇÃO PRINCIPAL COM MENU*****/ int main() { int opc, i; float totalhorastrab, totalreceber, v1, v2; do { printf("Folha de Pagamento\n"); printf("\nPor favor digite a sua opcao\n\n"); printf("1 - Cadastrar Departamento\n"); printf("2 - Cadastrar Funcionario\n"); printf("3 - Folha de Pagamento por Funcionario\n"); printf("4 - Sair\n\n\nopcao:"); scanf("%d",&opc); system("cls"); /***** ESTRUTURA DE CONTROLE - MENU*****/ switch (opc) { case 1: tipodepartamento dep[2]; for (i=0;i<2;i++){ printf("\nNome do setor: "); scanf("%s",&dep[i].nomed); printf("\nNumero Departamento: "); scanf("%d",&dep[i].codigo); printf("\nNumero maximo de horas: "); scanf("%d",&dep[i].maxhoras); printf("\nValor hora do funcionario: "); scanf("%f",&dep[i].valorhora); }//fim "for" break; case 2: tipofuncionario func[2]; for (i=0;i<2;i++){ printf("\nNome do Funcionario: "); scanf("%s",&func[i].nomef); printf("\nNumero do Funcionario: "); scanf("%d",&func[i].codigo); while(func.codigodep != dep[i].codigo) { printf("\nNumero do Departamento: "); scanf("%d",&func[i].codigodep); } printf("\nQuantidade de horas trabalhadas: "); scanf("%f",&func[i].horastrab); }//fim "for" break; case 3: for (i=0;i<2;i++){ totalhorastrab=func.horastrab; totalreceber=receber(totalhorastrab,dep[i].maxhoras,dep[i].valorhora); printf("Dados do Funcionario\n\n Nome: %s\n Departamento: %d\n Horas trabalhadas: %4.0f horas\n Total a Receber: R$%6.2f\n\n", func[i].nomef, func[i].codigodep, totalhorastrab, totalreceber); }//fim "for" break; case 4: printf("\nSAINDO...\n\n"); break; default: printf("\n\nOpcao invalida!!!\n\n"); break; } } while(opc !=4); } /*****Função Total a Receber*****/ float hextra; float receber (float n1, float n2, float n3) { if(n1<=n2) return n3*n1; else { hextra=n1-n2; return (((n1-hextra)*n3)+((n3*1.5)*hextra)); } } Compartilhar este post Link para o post Compartilhar em outros sites
rafael.t.a 0 Denunciar post Postado Maio 27, 2009 É assim: struct departamento { char nomed[30]; float maxhoras, valorhora; int codigo; }; typedef struct departamento *tipodepartamento; struct funcionario { char nomef[30]; float bancohoras, horastrab; int codigo, codigodep; }; typedef struct funcionario *tipofuncionario; tipodepartamento dep[2]; int main(){ int i = 0; // repete teu main // no switch case, tu faz assim na hora de ler: scanf("%s",dep[i]->nome); // faz isso para os outros scanf também // no printf é do mesmo jeito: printf("%s",dep[i]->nome); return 0; } Entendeu?? Da uma lida em ponteiro, fala tudo isso e mais um pouco... Compartilhar este post Link para o post Compartilhar em outros sites
brujah999 0 Denunciar post Postado Maio 27, 2009 Entendi, vlw msm... eu tentei o que me disse e rodou, vlw.. o problema agora preciso de ajuda de todos, nao sei pq, mais o programa rodando, começo a cadastras ou funcionarios ou departamento e acusa erro e o windows fecha a janela. Que tipo de erro pode fazer o windows fechar hora sim, hora nao ??? vlw galera vou postar o codigo para vcs testarem e ver o erro // Cria um programa de calcule a folha de pagamento. #include<stdio.h> #include<stdlib.h> #include<string.h> /*****ESTRUTURA*****/ struct departamento { char nomed[30]; float maxhoras, valorhora; int codigo; }; typedef struct departamento *tipodepartamento; struct funcionario { char nomef[30]; float bancohoras, horastrab; int codigo2, codigodep; }; typedef struct funcionario *tipofuncionario; /*****PROTÓTIPOS DAS FUNÇÕES*****/ float receber(float n1, float n2, float n3); /*****FUNÇÃO PRINCIPAL COM MENU*****/ int main() { int opc, i=0; float totalhorastrab, totalreceber, v1, v2; do { printf("Folha de Pagamento\n"); printf("\nPor favor digite a sua opcao\n\n"); printf("1 - Cadastrar Departamento\n"); printf("2 - Cadastrar Funcionario\n"); printf("3 - Folha de Pagamento por Funcionario\n"); printf("4 - Sair\n\n\nopcao:"); scanf("%d",&opc); system("cls"); /***** ESTRUTURA DE CONTROLE - MENU*****/ switch (opc) { case 1: tipodepartamento dep[4]; for (i=0;i<2;i++){ printf("Nome do setor: "); scanf("%s",&dep[i]->nomed); printf("\nNumero Departamento: "); scanf("%d",&dep[i]->codigo); printf("\nNumero maximo de horas: "); scanf("%d",&dep[i]->maxhoras); printf("\nValor hora do funcionario: "); scanf("%f",&dep[i]->valorhora); }//fim "for" break; case 2: tipofuncionario func[6]; for (i=0;i<2;i++){ printf("Nome do Funcionario: "); scanf("%s",&func[i]->nomef); printf("\nNumero do Funcionario: "); scanf("%d",&func[i]->codigo2); while(func[i]->codigodep != dep[i]->codigo) { printf("\nNumero do Departamento: "); scanf("%d",&func[i]->codigodep); } printf("\nQuantidade de horas trabalhadas: "); scanf("%f",&func[i]->horastrab); }//fim "for" break; case 3: for (i=0;i<2;i++){ totalhorastrab=func[i]->horastrab; totalreceber=receber(totalhorastrab,dep[i]->maxhoras,dep[i]->valorhora); printf("Dados do Funcionario\n\n Nome: %s\n Departamento: %d\n Horas trabalhadas: %4.0f horas\n Total a Receber: R$%6.2f\n\n", func[i]->nomef, func[i]->codigodep, totalhorastrab, totalreceber); }//fim "for" break; case 4: printf("\nSAINDO...\n\n"); break; default: printf("\n\nOpcao invalida!!!\n\n"); break; } } while(opc !=4); } /*****Função Total a Receber*****/ float hextra; float receber (float n1, float n2, float n3) { if(n1<=n2) return n3*n1; else { hextra=n1-n2; return (((n1-hextra)*n3)+((n3*1.5)*hextra)); } } Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Maio 28, 2009 normalmente qnd fecha é pq você ta mechendo onde n deve Compartilhar este post Link para o post Compartilhar em outros sites