Ir para conteúdo
Fórum Script Brasil
  • 0

Programa: Monte seu carro


Léo Unicap

Pergunta

Galera, fiz um programa em C com o seguinte objetivo.

O usuário escolhe um carro e monta de acordo com seu gosto, depois por quando sai o carro.

Fiz 3 funções:

1 - Modelo, onde o usuario escolhe o carro desejado.

2- Cor, onde o usuario escolhe a cor do carro.

3- Acessórios, onde o usuario escolhe os acessórios do veículo.

Compilei o programa, até aí tudo bem, mas quando me foram mostrados os valores no fim do

programa, estavam todos absurdamente errados.

Li e reli o meu código varias vezes sem sucesso. Aí então resolvi apelar pra o forum.

Não estou achando esse bug, mas creio que eu tenha errado na forma de passar e de retornar os valores

para as funções.

segue o código.

#include <stdio.h>

/*Programa Monte seu carro e veja quanto deu*/
/*O programa consiste em 4 funções, uma para escolha do modelo, outra para
escolha da cor do carro, e outra para escolha dos acessorios, tendo esta 
ultima um loop para escolha de masi de um acessorio.*/

int modelo(int valCar){
    int mod;
    printf ("\n==========");
    printf ("\n  Modelo  ");
    printf ("\n==========");
    do{
      printf ("\n1-Celta\n2-Gol\n3-Palio\n4-Corsa\n5-Fox\n6-Montana\n7-Vectra\n8-Corola\n9-Civic\n\nEscolha o modelo de acordo com o numero correspondente: ");
      scanf ("%i",&mod);
      fflush (stdin);
      if (mod==1){
         valCar=27800;
         printf ("Celta = R$27800");}
      else if (mod==2){
         valCar=32490;
         printf ("Gol = R$32490");}
      else if (mod==3){
           valCar=32240;
           printf ("Palio = R$32240");}
      else if (mod==4){
           valCar=30690;
           printf ("Corsa = R$30690");}
      else if (mod==5){
           valCar=38400;
           printf ("Fox = R$38400");}
      else if (mod==6){
           valCar=32445;
           printf ("Montana = R$32445");}
      else if (mod==7){
           valCar=53444;
           printf ("Vectra = R$53444");}
      else if (mod==8){
           valCar=65945;
           printf ("Corola = R$65945");}
      else if (mod==9){
           valCar=73994;
           printf ("Civic = R$73994");}
      printf ("\n\nTem certeza que este é o carro o qual voce dejesa montar?\n1-sim\n2-não\nDigite a resposta correspondente ao numero: ");
      scanf ("%i",&mod);
      fflush (stdin);
    }while (mod==2);
    return valCar;
    getchar();
}
/*OBS: Mostrar o valor do carro selecionado no final do MAIN*/
int cor(int valCor){
    int tipo, cor;
    printf ("\n=======");
    printf ("\n  Cor  ");
    printf ("\n=======");
    do{
       printf ("\n\n1-Solido\n2-Metalico\n3-Perolado\n\nEscolha o tipo de cor que deseja para o seu carro de acordo com os numeros: ");
       scanf ("%i",&tipo);
       fflush (stdin);
       if (tipo==1){
          printf ("\nTipo da cor escolhida: Solido");
          valCor = valCor;
          printf ("\n1-Branco\n2-Amarelo\n3-Verde\n4-Roza\n5-Vermelho\n6-Azul\n7-Preto\nEscolha a cor de acordo com os numeros: ");
          scanf ("%i",&cor);
          fflush (stdin);
          if (cor==1 || cor==7)
             valCor = valCor;
          else if (cor>=2 && cor<=6)
               valCor = valCor + 50;
       }
       else if (tipo==2){
            printf ("\nTipo da cor escolhida: Metalico");
            valCor = 800;
            printf ("\n1-Branco\n2-Amarelo\n3-Verde\n4-Roza\n5-Vermelho\n6-Azul\n7-Preto\nEscolha a cor de acordo com os numeros: ");
            scanf ("%i",&cor);
            fflush (stdin);
            if (cor==1 || cor==7)
               valCor = valCor;
            else if (cor>=2 && cor<=6)
                 valCor = valCor + 120;
       }
       else{
            printf ("\nTipo da cor escolhida: Perolado");
            valCor = 1367;
            printf ("\n1-Branco\n2-Amarelo\n3-Verde\n4-Roza\n5-Vermelho\n6-Azul\n7-Preto\nEscolha a cor de acordo com os numeros: ");
          scanf ("%i",&cor);
          fflush (stdin);
          if (cor==1 || cor==7)
             valCor = valCor;
          else if (cor>=2 && cor<=6)
               valCor = valCor + 230;
       }
       printf ("\n\nTem certeza que esta é a cor que voce dejesa para do seu carro?\n1-sim\n2-não\nDigite a resposta correspondente ao numero: ");
      scanf ("%i",&tipo);
      fflush (stdin);
    }while (tipo==2);
    return valCor;
    getchar();
}

int acessorios(int portas, int vidros, int travas, int ar, int rodas, int cambio, int alarme, int direcao){
    int conf;
    printf ("\n==============");
    printf ("\n  Acessorios  ");
    printf ("\n==============");
    do{
       printf ("\n\nVoce deseja que o carro tenha 2 ou 4 portas?\nDigite 2 ou 4: ");
       scanf ("%i",&portas);
       fflush (stdin);
       if (portas==2)
          portas = 0;
       else if (portas==4)
            portas = 800;
       printf ("\nDeseja vidros Eletricos ou Manuais?\n1-Eletricos\n2-Manuais\nEscolha: ");
       scanf ("%i",&vidros);
       fflush (stdin);
       if (vidros==1)
          vidros = 400;
       else if (vidros==2)
            vidros = 0;
       printf ("\nDeseja travas Eletricas em Nenhuma, nas 2 da frente ou nas 4 portas?\n0-Nenhuma\n2-Duas portas da frente\n4-Nas 4 quatro portas\nEscolha: ");
       scanf ("%i",&travas);
       fflush (stdin);
       if (travas==0)
          travas = 0;
       else if (travas==2)
            travas = 266;
       else if (travas==4)
            travas = 500;
       printf ("\nVoce deseja que seu carro tenha Ar Condicionado?\n1-Sim\n2-não\nEscolha: ");
       scanf ("%i",&ar);
       fflush (stdin);
       if (ar==1)
          ar = 170;
       else if (ar==2)
            ar = 0;
       printf ("\nDeseja que seu carro tenha Rodas de liga leve?\n1-Sim\n2-não\nEscolha: ");
       scanf ("%i",&rodas);
       fflush (stdin);
       if (rodas==1){
                     printf ("\nDeseja que o Aro seja 14'', 15'' ou 17''?\nDigite 14, 15 ou 17: ");
                     scanf ("%i",&rodas);
                     fflush (stdin);
                     if (rodas==14)
                     rodas = 900;
                     else if (rodas==15)
                     rodas = 1300;
                     else if (rodas==17)
                     rodas = 1890;
       }
       printf ("\nDeseja que seu carro tenha alarme de fabrica?\n1-Sim\n2-não\nEscolha: ");
       scanf ("%i",&alarme);
       fflush (stdin);
       if (alarme==1)
          alarme = 200;
       else
           alarme = 0;
       printf ("\nDeseja que seu carro tenha drirecao mecanica ou hidraulica?\n1-Mecanica\n2-Hidraulica\nEscolha:");
       scanf ("%i",&direcao);
       fflush (stdin);
       if (direcao==1)
          direcao = 0;
       else if (direcao==2)
            direcao = 300;
       printf ("Tem certeza de que os acessorios que deseja são os que escolheu?\n1-Sim\n2Nao\nEscolha: ");
       scanf ("%i",&conf);
       fflush (stdin);
    }while(conf==2);
    return portas,vidros,travas,ar,rodas,alarme,direcao;
    getchar();
}

void main(){
     int valCar, valCor, portas, vidros, travas, ar, rodas, cambio, alarme, direcao, cond;
     do{
         printf ("\n/=====================\\ ");
         printf ("\n|   Monte Seu Carro   |");
         printf ("\n|       ver. 0.1      |");
         printf ("\n\\=====================/");
         printf ("\n\n\n\nEscolha o modelo do seu carro");
         modelo(valCar);
         printf ("\n\nEscola a cor do seu carro");
         cor(valCor);
         printf ("\n\nEscolha os acessorios");
         acessorios(portas, vidros, travas, ar, rodas, cambio, alarme, direcao);
         printf ("\n\nValor do carro: %i\nValor da cor: %i\nValor dos acessorios: %i",valCar,valCor,portas+vidros+travas+ar+rodas+alarme+direcao);
         printf ("\n\nDeseja executar o programa novamente?\n1-Sim\n2-não\nEscolha: ");
         scanf ("%i",&cond);
         fflush (stdin);
     }while (cond==1);
     getchar();
}

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Você não pode retornar mais de um valor por função (exemplo: return 31, 30). Você deve passar por referência o valor e então escrever no valor apontado pelo ponteiro.

Exemplo:

#include <stdio.h>

int x(int *y) {
    *y = 50;
}

int main(void)
    int j;

    x(&j);
    printf("%d", j); /* Imprime 50 */

    return 0;
}

Outra coisa, você está escrevendo código depois de um return, ele não vai executar.

O compilador deveria emitir um warning de unreachable code.

Abraços.

Link para o comentário
Compartilhar em outros sites

  • 0
Você não pode retornar mais de um valor por função (exemplo: return 31, 30). Você deve passar por referência o valor e então escrever no valor apontado pelo ponteiro.

Exemplo:

#include <stdio.h>

int x(int *y) {
    *y = 50;
}

int main(void)
    int j;

    x(&j);
    printf("%d", j); /* Imprime 50 */

    return 0;
}

Outra coisa, você está escrevendo código depois de um return, ele não vai executar.

O compilador deveria emitir um warning de unreachable code.

Abraços.

Fiz o que eu me recomendaram, compilei e rodei, so que numa determinada parte do programa, da uma menssagem na tela:

"O Monte seu carro.exe encontrou um erro e precisa ser fechado."

Socorro, naõ sei mais o que faço...

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...