Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

dudosurf

programação C

Recommended Posts

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

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

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
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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.