dudosurf 0 Denunciar post Postado Maio 23, 2008 Olá pessoal, sou iniciante em C e estou começando agora com funções... será que alguem poderia me ajudar com esse codigo, está dando alguns erros que não consigo corrigi-los ... estou usando o dev C++ #include<stdio.h> #include<stdlib.h> /**** Função do exercíio 01 ****/ void exerc01() { int horai, horaf, minutoi, minutof, total; printf ("Digite a hora inicial (hh:mm)\n", horai, minutoi); scanf ("%d : %d", &horai, &minutoi); printf ("Digite a hora final (hh:mm)\n", horai, minutoi); scanf ("%d : %d", &horaf, &minutof); total = (horaf - horai) * 60 + (minutof - minutoi); printf ("O total de minutos é: %d\n", total); } /**** Função do exercíio 02****/ void exerc02() { int dia, mes, ano, ok=0; printf("Digite o dia\n", dia); scanf("%d/", &dia); printf("Digite o mes\n", mes); scanf("%d/", &mes); printf("Digite o ano\n", ano); scanf("%d/", &ano); if(dia <= 0 || dia >= 31){ printf("Dia invalido %d\n",dia); ok=1; } if(mes <= 0 || mes >= 12){ printf("Mês invalido %d\n",mes); ok=1; } if(mes==2 && dia>29){ printf("Data invalida\n"); ok=1; } if(ano >= 2008){ printf("ano invalido", ano); ok=1; } if(ok==0){ printf(" Data valida\n"); } system("PAUSE"); } /**** Função do exercíio 03****/ void exerc03() { int num, dobro, quadrado, cubo, cont = 0; printf ("Digite um número: "); scanf ("%d", &num); while (cont <= num){ printf ("número %d\t", cont); dobro = 2 * cont; printf ("dobro %d\t", dobro); quadrado = cont * cont; printf ("quadrado %d\t", quadrado); cubo = cont * cont * cont; printf ("cubo %d\n", cubo); cont++; system("PAUSE"); } /**** Função do exercíio 04****/ void exerc04() { int nfuncionarios; float salario = 0; int i = 0; printf("Digite o numero de funcionarios:\n", nfuncionarios); scanf ("%d", & nfuncionarios); printf("Digite os %d salario:\n", nfuncionarios); for (i=0; i<=nfuncionarios; i++){ scanf ("%f", & salario); if (salario <= 500.00){ salario = ((salario * 0.05)/100)+ salario + 20; } if (salario > 500.00 && salario <= 1000.00){ salario = ((salario * 0.04)/100)+ salario; } if (salario > 1000.00 && salario <= 2000.00){ salario = ((salario * 0.02)/100)+ salario; } if (salario > 2000.00){ salario = (salario + 40.00); } printf ("O novo salario e: %d funcionario: %4.2f\n",i ,salario ); system("PAUSE"); } /**** Função do exercíio 05****/ void exerc05() { int cont=0, soma=0, media=0, maior=0, num; do{ printf("Digite os numeros e (0) p/ sair\n "); scanf("%d",&num); cont++; soma = soma+num; media = soma/cont; if (num>maior){ maior=num; } } while(num>0); printf("Os números digitados são %d\n ", cont); printf("A soma é %d\n", soma); printf("A média é %d\n", media); printf("O maior número é %d\n", maior); system("PAUSE"); } /*****FUNÇÃO PRINCIPAL COM MENU*****/ int main() { int opc,exerc01,exerc02,exerc03,exerc04,exerc05; printf("\nPor favor digite a sua opcao\n\n"); printf("1 - EXERCICIO 01\n"); printf("2 - EXERCICIO 02\n"); printf("3 - EXERCICIO 03\n"); printf("4 - EXERCICIO 04\n"); printf("5 - EXERCICIO 05\n"); scanf("%d",&opc); /***** ESTRUTURA DE CONTROLE - MENU*****/ switch (opc) { case 1: exerc01(); break; case 2: exerc02(); break; case 3: exerc03(); break; case 4: exerc04(); break; case 5: exerc05(); break; default: printf("\n\nOpcao invalida!!!\n\n"); break; } } system("pause"); } Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Maio 23, 2008 int opc,exerc01,exerc02,exerc03,exerc04,exerc05; se você não está usando,não declare. está dando alguns erros que não consigo corrigi-los Ajuda mais se você falar que erro dá. Provavelmente um deles é nessa parte: scanf ("%f", & salario); if (salario <= 500.00){ salario = ((salario * 0.05)/100)+ salario + 20; } if (salario > 500.00 && salario <= 1000.00){ salario = ((salario * 0.04)/100)+ salario; } if (salario > 1000.00 && salario <= 2000.00){ salario = ((salario * 0.02)/100)+ salario; } if (salario > 2000.00){ salario = (salario + 40.00); } Ele deve estar executando todos os ifs ne? Se for isso é porque você não esta usando if-else (novamente,sem saber o que a função tem que fazer e sem você falar os erros fica meio difícil adivinhar) O outro deve ser aqui: if(dia <= 0 || dia >= 31){ printf("Dia invalido %d\n",dia); ok=1; } if(mes <= 0 || mes >= 12){ printf("Mês invalido %d\n",mes); ok=1; Por que dia = 31 é inválido? Por que mes = 12 é invalido? if(mes==2 && dia>29){ printf("Data invalida\n"); ok=1; } você está contando anos bissexto quando dia ==29? for (i=0; i<=nfuncionarios; i++) você está contando nfuncionarios+1.O correto é iniciar i=1.Caso contrario, o for fica for(i=0;i<nfuncionarios;i++) do{ printf("Digite os numeros e (0) p/ sair\n "); scanf("%d",&num); cont++; soma = soma+num; media = soma/cont; if (num>maior) maior=num; } while(num>0); A média está errada porque você conta o zero.O certo é do{ printf("Digite o numero e (0) p/ sair\n "); scanf("%d",&num); if (!num) { cont++; soma = soma+num; media = soma/cont; if (num>maior) maior=num; } } while(num>0); Compartilhar este post Link para o post Compartilhar em outros sites
José Enésio 4 Denunciar post Postado Maio 23, 2008 Isso aí tava bisonho.... Mas arrumei os erros que tavam dando, pelo menos agora compila: CODE #include<stdio.h>#include<stdlib.h> /**** Função do exercíio 01 ****/ void exerc01() { int horai, horaf, minutoi, minutof, total; printf ("Digite a hora inicial (hh:mm)\n", horai, minutoi); scanf ("%d : %d", &horai, &minutoi); printf ("Digite a hora final (hh:mm)\n", horai, minutoi); scanf ("%d : %d", &horaf, &minutof); total = (horaf - horai) * 60 + (minutof - minutoi); printf ("O total de minutos é: %d\n", total); } /**** Função do exercíio 02****/ void exerc02() { int dia, mes, ano, ok=0; printf("Digite o dia\n", dia); scanf("%d/", &dia); printf("Digite o mes\n", mes); scanf("%d/", &mes); printf("Digite o ano\n", ano); scanf("%d/", &ano); if(dia <= 0 || dia >= 31){ printf("Dia invalido %d\n",dia); ok=1; } if(mes <= 0 || mes >= 12){ printf("Mês invalido %d\n",mes); ok=1; } if(mes==2 && dia>29){ printf("Data invalida\n"); ok=1; } if(ano >= 2008){ printf("ano invalido", ano); ok=1; } if(ok==0){ printf(" Data valida\n"); } system("PAUSE"); } /**** Função do exercíio 03****/ void exerc03() { int num, dobro, quadrado, cubo, cont = 0; printf ("Digite um número: "); scanf ("%d", &num); while (cont <= num){ printf ("número %d\t", cont); dobro = 2 * cont; printf ("dobro %d\t", dobro); quadrado = cont * cont; printf ("quadrado %d\t", quadrado); cubo = cont * cont * cont; printf ("cubo %d\n", cubo); cont++; system("PAUSE"); } } /**** Função do exercíio 04****/ void exerc04() { int nfuncionarios; float salario = 0; int i = 0; printf("Digite o numero de funcionarios:\n", nfuncionarios); scanf ("%d", & nfuncionarios); printf("Digite os %d salario:\n", nfuncionarios); for (i=0; i<=nfuncionarios; i++){ scanf ("%f", & salario); if (salario <= 500.00){ salario = ((salario * 0.05)/100)+ salario + 20; } if (salario > 500.00 && salario <= 1000.00){ salario = ((salario * 0.04)/100)+ salario; } if (salario > 1000.00 && salario <= 2000.00){ salario = ((salario * 0.02)/100)+ salario; } if (salario > 2000.00){ salario = (salario + 40.00); } printf ("O novo salario e: %d funcionario: %4.2f\n",i ,salario ); system("PAUSE"); } } /**** Função do exercíio 05****/ void exerc05() { int cont=0, soma=0, media=0, maior=0, num; do{ printf("Digite os numeros e (0) p/ sair\n "); scanf("%d",&num); cont++; soma = soma+num; media = soma/cont; if (num>maior){ maior=num; } } while(num>0); printf("Os números digitados são %d\n ", cont); printf("A soma é %d\n", soma); printf("A média é %d\n", media); printf("O maior número é %d\n", maior); system("PAUSE"); } /*****FUNÇÃO PRINCIPAL COM MENU*****/ int main() { int opc; printf("\nPor favor digite a sua opcao\n\n"); printf("1 - EXERCICIO 01\n"); printf("2 - EXERCICIO 02\n"); printf("3 - EXERCICIO 03\n"); printf("4 - EXERCICIO 04\n"); printf("5 - EXERCICIO 05\n"); scanf("%d",&opc); /***** ESTRUTURA DE CONTROLE - MENU*****/ switch (opc) { case 1: exerc01(); break; case 2: exerc02(); break; case 3: exerc03(); break; case 4: exerc04(); break; case 5: exerc05(); break; default: printf("\n\nOpcao invalida!!!\n\n"); break; } system("pause"); } Pelo menos agora compila. Aí você combina com as sugestões da nossa amiga ali em cima! Não pergunte pra mim dizer onde estavam os erros porque eu não vou saber dizer ^^ Mas é só erro de fechar os loops nos lugares errados (loop abria na função exercnão-sei-das-quantas e fechava no fim do main), e também o fato de tu declarar as funções no main como variáveis. Outra coisa, seu código está mal indentado; pode me excomungar agora mas mais tarde quando tu tiver que entregar um programa no dia seguinte e o código não tiver indentado corretamente tu vai ter um infarte tentando achar o erro. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Maio 24, 2008 Outra coisa, seu código está mal indentado; pode me excomungar agora mas mais tarde quando tu tiver que entregar um programa no dia seguinte e o código não tiver indentado corretamente tu vai ter um infarte tentando achar o erro. E pelo amor de deus: comentários e nomes significativos. Compartilhar este post Link para o post Compartilhar em outros sites
dudosurf 0 Denunciar post Postado Maio 24, 2008 pessoal, pesso descupa pela má expressão em relação a dúvida... ainda estou iniciando em programação, o que eu tinha feito foi pegar 5 programinhas que estavam prontos e chamar eles em uma função... (pelo menos foi o que eu estava tentando fazer), agradeço pela colaboração vou terminar ele e posto aqui de novo, e vlw pelas dicas http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites