Ir ao conteúdo
  • Cadastre-se

C estou com um erro no codigo, na parte de calcular o valor do carro com os dias


mosiah santos

Posts recomendados

#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>

int i=0, j=0;
char tecla;

struct cadastro_cliente
  {
	  int cod;
	  char nome [40];
	  char rua [30];
	  int numero;
	  int cpf;
	  int cnh;
	  char bairro [30];
	  char cidade [30]; 
	  int codigocar;
  };

struct cadastro_cliente Cliente[50];

struct cadastro_carro
  {
	  int codcar;
	  char modelo [20];
	  char marca [15];
	  char placa [15];
	  int tipocarro;
	  double valor ,finaldeloc;
	  int valorlocacao;//funcao nova
	  int status;
  };

struct cadastro_carro Carro[50];

int cad_cliente(void);
int list_cliente(void);
int cad_carro(void);
int tipodocarro(void);
int loc_carro(void);
int mostra_clientes(void);
int devo_carro(void);
int dias(void);//funcao nova
int valor(void); //funcao nova

double calc (double resultado){
	int sn;//funcao nova
	int esc;//funcao nova
	int dias;
	
	resultado = dias*Carro.tipocarro;
	//funcao nova
	printf("escolha a categoria para ser alugada: ");
	printf ("1- Basico");
    printf ("2- Intermediario");
    printf ("3- Executivo");
    scanf("%i",&esc);
    system ("cls");
    
    printf("confirmacao do aluguel");
    printf("1- confirmar");
    printf("2- voltar ");
    printf("3- sair");
    scanf("%i",&Opcao);
    
    if (Opcao==1)
    { 
    switch (esc)
	}
	//opcao 1
    case 1:
    	system ("cls");
    	printf("categoria basica");
    	printf("valor da diaria: R$ 80,00");
    	printf("quantos dias voce ira ficar com o carro ?");
    	scanf("");
    	printf("seu aluguel ficara no valor :");
    	printf("deseja alugar carro :");
    	printf("1- sim");
    	printf("2-nao");
    	scanf("");
    	 
    	 if (sn==1)
    	{
    	printf ("Seu carro ja esta liberado");
        printf ("Tenha um Bom Dia");	
		}
    	
    	 else if (sn==2)
    	{
    		printf ("Seu carro nao esta liberado");
            printf ("Tenha um Bom Dia");
		}
    	system ("pause");
    	break;
    	//opcao2
    	case 2:
    	system ("cls");
    	
    	printf("categoria intermediaria");
    	printf("valor da diaria: R$ 100,00");
    	printf("quantos dias voce ira ficar com o carro ?");
    	scanf("");
    	printf("seu aluguel ficara no valor :");
    	printf("deseja alugar carro :");
    	printf("1- sim");
    	printf("2-nao");
    	scanf("");
    	 
    	 if (sn==1)
    	{
    	printf ("Seu carro ja esta liberado");
        printf ("Tenha um Bom Dia");	
		}
    	
    	 else if (sn==2)
    	{
    		printf ("Seu carro nao esta liberado");
            printf ("Tenha um Bom Dia");
		}
    	system ("pause");
    	break;
    	//opcao3
    	case 3:
    	system ("cls");
    	
    	printf("categoria avançada");
    	printf("valor da diaria: R$ 300,00");
    	printf("quantos dias voce ira ficar com o carro ?");
    	scanf("");
    	printf("seu aluguel ficara no valor :");
    	printf("deseja alugar carro :");
    	printf("1- sim");
    	printf("2-nao");
    	scanf("");
    	 
    	 if (sn==1)
    	{
    	printf ("Seu carro ja esta liberado");
        printf ("Tenha um Bom Dia");	
		}
    	
    	 else if (sn==2)
    	{
    		printf ("Seu carro nao esta liberado");
            printf ("Tenha um Bom Dia");
		}
    	system ("pause");
    	break;
   else if(Opcao==2){
   
   	system ("cls");
   	printf("escolha a categoria para ser alugada: ");
	printf ("1- Basico");
    printf ("2- Intermediario");
    printf ("3- Executivo");
    scanf("%i",&esc);
}
    else if (Opcao==3){
    	system ("cls");
    	printf("voce voltar ao menu principal");
    	system ("pause");	
	}
	break;
    
    	
	return(resultado);

}

int cad_cliente (void)
{
   printf("Cadastro %d de 50\n", j);
   if (j<50)
	  {
		printf("Digite o codigo do Cliente: ");
		scanf("%d", &Cliente[j].cod);
				fflush(stdin);
		printf("Digite o nome do Cliente: ");
		gets(Cliente[j].nome);
		printf("Digite o CPF do Cliente: ");
		scanf("%d", &Cliente[j].cpf);
				fflush(stdin);
		printf("Digite a CNH do Cliente: ");
		scanf("%d", &Cliente[j].cnh);
				fflush(stdin);
		printf("Digite o nome da Rua: ");
				gets(Cliente[j].rua);
		fflush(stdin);
		printf("Digite o numero da casa: ");
		scanf("%d", &Cliente[j].numero);
		fflush(stdin);
		printf("Digite o nome do Bairro: ");
		gets(Cliente[j].bairro);
				fflush(stdin);
		printf("Digite o nome da Cidade: ");
		gets(Cliente[j].cidade);
		j++;
	  }
   return(0);
}

int list_cliente (void)
{
  int k=0;
  
  if(Cliente[k].cod != 0)
	   {
	k++;
	printf("\nNome do Cliente: %s\n", Cliente[k].nome);
	getch();
	   }
  return (0);
}

int tipo_do_carro (int tp)
{
	double valor;
	// 1 para basico, 2 para intemediario e 3 para executivo
	if(tp == 1){
		valor = 80.00;
	}
	if(tp == 2){
		valor = 100.00;
	}
	if(tp == 3){
		valor = 300.00;
	}
	if (tp == 0 || tp <= 4){
		printf("tipo de carro não existe");
	}
	return(tp);
}

int cad_carro (void)
{
  
  printf("Cadastro de carro %d de 50\n", i);
  if(i<50)
	{
	 printf("Digite o codigo do veiculo: ");
	 scanf("%d", &Carro[i].codcar);
	 fflush(stdin);
	 printf("Digite o modelo do carro: ");
	 gets(Carro[i].modelo);
	 fflush(stdin);
	 printf("Digite a marca do carro: ");
	 gets(Carro[i].marca);
	 fflush(stdin);
	 printf("Digite a placa do carro: ");
	 gets(Carro[i].placa);
	 fflush(stdin);
	 printf("Tipo do Carro \n CARRO BASICO 1 \n CARRO INTERMEDIARIO 2\n CARRO EXECUTIVO 3 \n Digite o tipo do carro: ");
	 scanf("%d", &Carro[i].tipocarro);
	 printf("valor de locação (por dia): ");
	 scanf("%f", &Carro[i].valorlocacao);
	 fflush(stdin);
	 tipo_do_carro(Carro[i].tipocarro);
	 printf("%f", &Carro[i].valor);
	 i++;
	}
  return(0);
}

int loc_carro (void)
{
  int k=0;
  char consulta[40];
  char resposta;
  int codi;
  int dias, valorfinaldeloc;
  int valor; //funcao nova
  fflush(stdin);
  printf("Digite o nome do cliente que quer locar um veiculo: ");
  gets(consulta);
  Reconsulta:
  for(k=0; k<50; k++)
  {
	if(consulta == Cliente[k].nome);
	{
	  printf("Cliente cadastrado, deseja locar veiculo s/n: ");
	  scanf("%c", &resposta);
	  if(resposta == 's')
		{
		  printf("Digite o codigo do Carro: ");
		  scanf("%d", &codi);
		  //quantos o cliente vai ficar com o carro.
		  print("Quantos dias você deseja ficar com o carro?");
		  scanf("%d", &dias);
		  scanf("%d",&valor); //funcao nova
		  //recuperar o valor da diaricarro[k].valor;
		  //multiplicar a quantidade de dias pelo valor da diaria
		  valorfinaldeloc = Carro[i].valor*dias;
		  prntf("Valor de locação é %d "&valorfinaldeloc"!\n Deseja locar carro?");
		  
		  Cliente[k].codigocar=codi;
		  Carro[k].status= 1; // quando tiver o status 1 é porque está locado.
		};
	 };
   };
   printf("Cliente nao Cadastrado");
   return(0);
}

int mostra_clientes (void)
{
  
	for (j=0; j<50; j++)
	{
	   if(Cliente[j].codigocar != 0)
		{
		   printf("Cliente: %c", Cliente[i].nome);
		   printf("Marca do veiculo: %c", Carro[i].marca);
		}
	}
  return(0);
}

int devo_carro (void)
{
  
  char dev, devolucao[40];
  printf("Digite o Nome do Cliente que vai devolver o veiculo: ");
  scanf("%c", &devolucao);
  for (i=0; i<50; i++)
   {
	if(devolucao == Cliente[i].nome)
	  {
		printf("Realizar devolucao s/n? ");
		scanf("%c", &dev);
		if (dev == 's')
		  {
			Cliente[i].codigocar=0 ;
			Carro[i].status=0;
		  }
	  }
   }
  return(0);
}

int main (void)
{
	// variavel opcao serve para o menu
  int opcao=0;
  // signifa enquanto o menu for menor que 8 vai está em um loop do menu
  while(opcao<8)
  {
	printf("\n\nLOCADORA DE VEICULOS\n");
	printf("..................\n\n");
	printf("1 - CADASTRAR CLIENTE\n");
	printf("2 - LISTAR CLIENTES CADASTRADOS\n");
	printf("3 - CADASTRAR CARRO\n");
	printf("4 - LOCAR CARRO\n");
	printf("5 - CLIENTES COM CARROS LOCADOS\n");
	printf("6 - DEVOLUCAO DE CARRO\n");
	printf("7 - SAIR\n");
	printf("Escolha uma opcao:");
	fflush(stdin);
	scanf("%d", &opcao);
	switch(opcao)
	  {
		  case 1: cad_cliente(); break;
		  case 2: list_cliente(); break;
		  case 3: cad_carro(); break;
		  case 4: loc_carro(); break;
		  case 5: mostra_clientes(); break;
		  case 6: devo_carro(); break;
		  case 7: exit(0); break;
		  default: printf("\nopcao invalida - tecle <enter>");
		  fflush(stdin);
		  while ((tecla=getchar())!='\r')
		  break;
	  }/*fim do swith*/
  }/*fim do while*/
  getch();

return (0);
}

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@mosiah santos   se programa está com alguns erros de compilação,  e ali na função tipo_do_carro  você tem um return que retorna  o mesmo valor de entrada tp  e deveria retornar o resultado que é valor,  então como esse código é bem extenso vai demorar para conseguir acertar .

Link para o comentário
Compartilhar em outros sites

Tem muitos erros que precisam ser corrigidos. Verifique o que o compilador está relatando e mude para consertar o bug.

 

Em muitos casos você usou apenas Carro.(...), que está causando erros porque é um vetor:

struct cadastro_carro Carro[50];

E para que fique funcionando corretamente, você deverá passar a posição no vetor pela função, por exemplo:

double calc (double resultado, int i)

E logo em seguida, alterar a linha do resultado para isto:

resultado = dias*Carro[i].tipocarro;

Encontrei erros também nessa linha, que está errada em escrita e também em sintaxe.

//Errado:
prntf("Valor de locação é %d "&valorfinaldeloc"!\n Deseja locar carro?");

//Correto:
printf("Valor de locação é %d!\n Deseja locar carro?", valorfinaldeloc);

Você colocou a variável no meio do texto e colocou o & utilizado no scanf de números ou caracteres únicos, que é um operador de endereço.

Link para o comentário
Compartilhar em outros sites

#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>

int i=0, j=0;
char tecla;

struct cadastro_cliente
  {
	  int cod;
	  char nome [40];
	  char rua [30];
	  int numero;
	  int cpf;
	  int cnh;
	  char bairro [30];
	  char cidade [30];
	  int codigocar;
  };

struct cadastro_cliente Cliente[50];

struct cadastro_carro
  {
	  int codcar;
	  char modelo [20];
	  char marca [15];
	  char placa [15];
	  int tipocarro;
	  double valor ,finaldeloc;
	  int valorlocacao;//funcao nova
	  int status;
  };

struct cadastro_carro Carro[50];

int cad_cliente(void);
int list_cliente(void);
int cad_carro(void);
int tipodocarro(void);
int loc_carro(void);
int mostra_clientes(void);
int devo_carro(void);
int dias(void);//funcao nova
int valor(void); //funcao nova

double calc (double resultado,int tp){
	float valor,produto;
	int dias;
    int esc,car=0,sn;
	//resultado = dias*Carro[i].tipocarro;
	//funcao nova
	printf("escolha a categoria para ser alugada: ");
	printf ("1- Basico");
    printf ("2- Intermediario");
    printf ("3- Executivo");
    scanf("%i",&esc);
    
if (car==1)
    switch (esc);
    {
    	case 1:
    	printf("voce selecionou a opcao de carro basico:"):
    	printf("o valor da diaria de :R$ 80,00");
    	printf("quantos dias vai ficar com o carro ?");
    	scanf("%f",&valor);
    	produto = 80*valor;
    	printf ("\t Seu aluguel vai ficar vai no valor de R$%.000f \n",produto);
    	printf ("\t Deseja alugar o carro: \n");
        printf ("1- sim");
        printf ("2- NAO");
        scanf ("%i",&sn);
        
        if (sn == 1)
        {
        printf ("\t Seu carro ja esta liberado. \n");
        printf ("\t Volte Sempre. \n");
        }

       else if (sn == 2)
        {
        printf ("\t Seu carro nao esta liberado. \n");
        printf ("\t Tenha um Bom Dia. \n");
        }
		 system ("pause");
    break;
    	case 2:
    		printf("voce selecionou a opcao de carro basico:"):
    	printf("o valor da diaria de :R$ 150,00");
    	printf("quantos dias vai ficar com o carro ?");
    	scanf("%f",&valor);
    	produto = 150*valor;
    	printf ("\t Seu aluguel vai ficar vai no valor de R$%.000f \n",produto);
    	printf ("\t Deseja alugar o carro: \n");
        printf ("1- sim");
        printf ("2- NAO");
        scanf ("%i",&sn);
        
        if (sn == 1)
        {
        printf ("\t Seu carro ja esta liberado. \n");
        printf ("\t Volte Sempre. \n");
        }

       else if (sn == 2)
        {
        printf ("\t Seu carro nao esta liberado. \n");
        printf ("\t Tenha um Bom Dia. \n");
        }
		 system ("pause");
		 
		 	case 3:
    	printf("voce selecionou a opcao de carro basico:"):
    	printf("o valor da diaria de :R$ 300,00");
    	printf("quantos dias vai ficar com o carro ?");
    	scanf("%f",&valor);
    	produto = 300*valor;
    	printf ("\t Seu aluguel vai ficar vai no valor de R$%.000f \n",produto);
    	printf ("\t Deseja alugar o carro: \n");
        printf ("1- sim");
        printf ("2- NAO");
        scanf ("%i",&sn);
        
        if (sn == 1)
        {
        printf ("\t Seu carro ja esta liberado. \n");
        printf ("\t Volte Sempre. \n");
        }

       else if (sn == 2)
        {
        printf ("\t Seu carro nao esta liberado. \n");
        printf ("\t Tenha um Bom Dia. \n");
        }
		 system ("pause");
	}
	}


	return(resultado);

}

int cad_cliente (void)
{
   printf("Cadastro %d de 50\n", j);
   if (j<50)
	  {
		printf("Digite o codigo do Cliente: ");
		scanf("%d", &Cliente[j].cod);
				fflush(stdin);
		printf("Digite o nome do Cliente: ");
		gets(Cliente[j].nome);
		printf("Digite o CPF do Cliente: ");
		scanf("%d", &Cliente[j].cpf);
				fflush(stdin);
		printf("Digite a CNH do Cliente: ");
		scanf("%d", &Cliente[j].cnh);
				fflush(stdin);
		printf("Digite o nome da Rua: ");
				gets(Cliente[j].rua);
		fflush(stdin);
		printf("Digite o numero da casa: ");
		scanf("%d", &Cliente[j].numero);
		fflush(stdin);
		printf("Digite o nome do Bairro: ");
		gets(Cliente[j].bairro);
				fflush(stdin);
		printf("Digite o nome da Cidade: ");
		gets(Cliente[j].cidade);
		j++;
	  }
   return(0);
}

int list_cliente (void)
{
  int k=0;

  if(Cliente[k].cod != 0)
	   {
	k++;
	printf("\nNome do Cliente: %s\n", Cliente[k].nome);
	getch();
	   }
  return (0);
}

int tipo_do_carro (int tp)
{
	double valor;
	// 1 para basico, 2 para intemediario e 3 para executivo
	if(tp == 1){
		valor = 80.00;
	}
	if(tp == 2){
		valor = 150.00;
	}
	if(tp == 3){
		valor = 300.00;
	}
	if (tp == 0 || tp <= 4){
		printf("tipo de carro não existe");
	}
	return(tp);
}

int cad_carro (void)
{

  printf("Cadastro de carro %d de 50\n", i);
  if(i<50)
	{
	 printf("Digite o codigo do veiculo: ");
	 scanf("%d", &Carro[i].codcar);
	 fflush(stdin);
	 printf("Digite o modelo do carro: ");
	 gets(Carro[i].modelo);
	 fflush(stdin);
	 printf("Digite a marca do carro: ");
	 gets(Carro[i].marca);
	 fflush(stdin);
	 printf("Digite a placa do carro: ");
	 gets(Carro[i].placa);
	 fflush(stdin);
	 printf("Tipo do Carro \n CARRO BASICO 1 \n CARRO INTERMEDIARIO 2\n CARRO EXECUTIVO 3 \n Digite o tipo do carro: ");
	 scanf("%d", &Carro[i].tipocarro);
	 printf("valor de locação (por dia): ");
	 scanf("%f", &Carro[i].valorlocacao);
	 fflush(stdin);
	 tipo_do_carro(Carro[i].tipocarro);
	 printf("%f", &Carro[i].valor);
	 i++;
	}
  return(0);
}

int loc_carro (void)
{
  int k=0;
  char consulta[40];
  char resposta;
  int codi;
  int dias, valorfinaldeloc;
  int valor; //funcao nova
  fflush(stdin);
  printf("Digite o nome do cliente que quer locar um veiculo: ");
  gets(consulta);
  Reconsulta:
  for(k=0; k<50; k++)
  {
	if(consulta == Cliente[k].nome);
	{
	  printf("Cliente cadastrado, deseja locar veiculo s/n: ");
	  scanf("%c", &resposta);
	  if(resposta == 's')
		{
		  printf("Digite o codigo do Carro: ");
		  scanf("%d", &codi);
		  //quantos o cliente vai ficar com o carro.
		  print("Quantos dias você deseja ficar com o carro?");
		  scanf("%d", &dias);
		  scanf("%d",&valor); //funcao nova
		  //recuperar o valor da diaricarro[k].valor;
		  //multiplicar a quantidade de dias pelo valor da diaria
		  valorfinaldeloc = Carro[i].valor*dias;
		  printf("Valor de locação é %d!\n Deseja locar carro?", valorfinaldeloc);//corrigido
		  Cliente[k].codigocar=codi;
		  Carro[k].status= 1; // quando tiver o status 1 é porque está locado.
		};
	 };
   };
   printf("Cliente nao Cadastrado");
   return(0);
}

int mostra_clientes (void)
{

	for (j=0; j<50; j++)
	{
	   if(Cliente[j].codigocar != 0)
		{
		   printf("Cliente: %c", Cliente[i].nome);
		   printf("Marca do veiculo: %c", Carro[i].marca);
		}
	}
  return(0);
}

int devo_carro (void)
{

  char dev, devolucao[40];
  printf("Digite o Nome do Cliente que vai devolver o veiculo: ");
  scanf("%c", &devolucao);
  for (i=0; i<50; i++)
   {
	if(devolucao == Cliente[i].nome)
	  {
		printf("Realizar devolucao s/n? ");
		scanf("%c", &dev);
		if (dev == 's')
		  {
			Cliente[i].codigocar=0 ;
			Carro[i].status=0;
		  }
	  }
   }
  return(0);
}

int main (void)
{
	// variavel opcao serve para o menu
  int opcao=0;
  // signifa enquanto o menu for menor que 8 vai está em um loop do menu
  while(opcao<8)
  {
	printf("\n\nLOCADORA DE VEICULOS\n");
	printf("..................\n\n");
	printf("1 - CADASTRAR CLIENTE\n");
	printf("2 - LISTAR CLIENTES CADASTRADOS\n");
	printf("3 - CADASTRAR CARRO\n");
	printf("4 - LOCAR CARRO\n");
	printf("5 - CLIENTES COM CARROS LOCADOS\n");
	printf("6 - DEVOLUCAO DE CARRO\n");
	printf("7 - SAIR\n");
	printf("Escolha uma opcao:");
	fflush(stdin);
	scanf("%d", &opcao);
	switch(opcao)
	  {
		  case 1: cad_cliente(); break;
		  case 2: list_cliente(); break;
		  case 3: cad_carro(); break;
		  case 4: loc_carro(); break;
		  case 5: mostra_clientes(); break;
		  case 6: devo_carro(); break;
		  case 7: exit(0); break;
		  default: printf("\nopcao invalida - tecle <enter>");
		  fflush(stdin);
		  while ((tecla=getchar())!='\r')
		  break;
	  }/*fim do swith*/
  }/*fim do while*/
  getch();

return (0);
}

eu refiz o codigo , mas o mesmo problema persiste

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...