Ir ao conteúdo
  • Cadastre-se

C++ Conversor de unidades com menu interativo em C++


Posts recomendados

Boa noite pessoal, preciso urgente de um help, preciso fazer um algoritmo que calcule e converta unidades em C++, mas não consigo fazer ele compilar, conseguem me ajudar a ver o que esta faltando?

#include <cstdlib>
#include <stdio.h>
#include <iostream>
using namespace std;

void un_comp(){
    int opcao = -1;
    float vlr=0;
    
    cout << "1 - milimetros para centimetros" << endl;
    cout << "2 - metros para centimetros" << endl;
    cout << "3 - quilometros para metros" << endl;
    cout << "4 - quilometros para hectares" << endl;
    cout << "5 - hectares para metros "<< endl;    
    cout << "0 - voltar ao menu" << endl;
    
    cin >>opcao;
            
        switch ( opcao ){
        case 0:
            opcao = 0;
            break;
        case 1:
            cout << "digite a medida a ser convertida:"<< endl;
            cin >>vlr;
            vlr = vlr / 10;
            cout <<"o valor digitado convertido para centrimetros fica:"<< vlr<< endl;
            break;
            
        case 2:
            cout << "digite a medida a ser convertida:"<< endl;
            cin >>vlr;
            vlr = vlr * 100;
            cout <<"o valor digitado convertido para metros fica:"<< vlr<< endl;
            break;
            
        case 3:
            cout << "digite a medida a ser convertida:"<< endl;
            cin >>vlr;
            vlr = vlr * 1000;
            cout <<"o valor digitado convertido para metros fica:"<< vlr<< endl;
            break;
            
        case 4:
            cout << "digite a medida a ser convertida:"<< endl;
            cin >>vlr;
            vlr = vlr * 100;
            cout <<"o valor digitado convertido para hectares fica:"<< vlr<< endl;
            break;
        case 5:
            cout << "digite a medida a ser convertida:"<< endl;
            cin >>vlr;
            vlr = vlr * 10000;
            cout <<"o valor digitado convertido para metros fica:"<< vlr<< endl;
            break;
        }
            
}

void un_area(){
    int opcao = -1;
    float vlr=0;
    
    cout << "1 - centimetros quadrados para metros quadrados" << endl;
    cout << "2 - metros quadrados para quilometros quadrados" << endl;
    cout << "3 - quilometros quadrados para hectares" << endl;
    cout << "4 - quilometros quadrados para metros quadrados" << endl;
    cout << "5 - metros quadrados para centimetros quadrados "<< endl;    
    cout << "0 - voltar ao menu" << endl;
    
    cin >>opcao;
            
        switch ( opcao ){
        case 0:
            opcao = 0;
            break;
        case 1:
            cout << "digite a medida a ser convertida:"<< endl;
            cin >>vlr;
            vlr = vlr / 1000;
            cout <<"o valor digitado convertido para metros fica:"<< vlr<< endl;
            break;
            
        case 2:
            cout << "digite a medida a ser convertida:"<< endl;
            cin >>vlr;
            vlr = vlr / 1000000;
            cout <<"o valor digitado convertido para quilometros fica:"<< vlr<< endl;
            break;
            
        case 3:
            cout << "digite a medida a ser convertida:"<< endl;
            cin >>vlr;
            vlr = vlr * 100;
            cout <<"o valor digitado convertido para hectares fica:"<< vlr<< endl;
            break;
            
        case 4:
            cout << "digite a medida a ser convertida:"<< endl;
            cin >>vlr;
            vlr = vlr * 1000000;
            cout <<"o valor digitado convertido para metros  fica:"<< vlr<< endl;
            break;
        case 5:
            cout << "digite a medida a ser convertida:"<< endl;
            cin >>vlr;
            vlr = vlr * 10000;
            cout <<"o valor digitado convertido para centimetros fica:"<< vlr<< endl;
            break;
        }
        }
        
void un_massa(){
    int opcao = -1;
    float vlr=0;
    
    cout << "1 - quilos para gramas" << endl;
    cout << "2 - toneladas para gramas" << endl;
    cout << "3 - toneladas para quilos" << endl;
    cout << "4 - gramas para quilos" << endl;
    cout << "5 - quilos para toneladas "<< endl;    
    cout << "0 - voltar ao menu" << endl;
    
    cin >>opcao;{
            
        switch ( opcao )
        case 0:
            opcao = 0;
            break;
        case 1:
            cout << "digite o peso a ser convertido:"<< endl;
            cin >>vlr;
            vlr = vlr * 1000;
            cout <<"o valor digitado convertido para gramas fica:"<< vlr<< endl;
            break;
            
        case 2:
            cout << "digite o peso a ser convertido:"<< endl;
            cin >>vlr;
            vlr = vlr * 1000000;
            cout <<"o valor digitado convertido para gramas fica:"<< vlr<< endl;
            break;
            
        case 3:
            cout << "digite o peso a ser convertido:"<< endl;
            cin >>vlr;
            vlr = vlr * 1000;
            cout <<"o valor digitado convertido para quilos fica:"<< vlr<< endl;
            break;
            
        case 4:
            cout << "digite o peso a ser convertido:"<< endl;
            cin >>vlr;
            vlr = vlr / 1000;
            cout <<"o valor digitado convertido para quilos fica:"<< vlr<< endl;
            break;
        case 5:
            cout << "digite o peso a ser convertido:"<< endl;
            cin >>vlr;
            vlr = vlr / 1000;
            cout <<"o valor digitado convertido para toneladas fica:"<< vlr<< endl;
            break;
        }
            
}

void un_temp(){
    int opcao = -1;
    float vlr=0;
    
    cout << "1 - celsius para fahrenheit" << endl;
    cout << "2 - celsius para kelvin" << endl;
    cout << "3 - fahrenheit para celsius" << endl;
    cout << "4 - fahrenheit para kelvin" << endl;
    cout << "5 - kelvin para celsius "<< endl;    
    cout << "6 - kelvin para fahrenheit"<< endl;
    cout << "0 - voltar ao menu" << endl;
    
    cin >> opcao;
            
        switch ( opcao ){
        
        case 0:
            opcao = 0;
            break;
        case 1:
            cout << "digite a unidade a ser convertida:"<< endl;
            cin >>vlr;
            vlr = (vlr * 9/5) + 32;
            cout <<"o valor digitado convertido para fahrenheit fica:"<< vlr<< endl;
            break;
            
        case 2:
            cout << "digite a unidade a ser convertida:"<< endl;
            cin >>vlr;
            vlr = vlr + 273.15;
            cout <<"o valor digitado convertido para kelvin fica:"<< vlr<< endl;
            break;
            
        case 3:
            cout << "digite a unidade a ser convertida:"<< endl;
            cin >>vlr;
            vlr = (vlr - 32) * 5/9;  
            cout <<"o valor digitado convertido para celsius fica:"<< vlr<< endl;
            break;
            
        case 4:
            cout << "digite a unidade a ser convertida:"<< endl;
            cin >>vlr;
            vlr = vlr - 273.15;
            cout <<"o valor digitado convertido para kelvin fica:"<< vlr<< endl;
            break;
        case 5:
            cout << "digite a unidade a ser convertida:"<< endl;
            cin >>vlr;
            vlr = vlr - 273.15;
            cout <<"o valor digitado convertido para celsius fica:"<< vlr<< endl;
            break;
            
            case 6:
            cout << "digite a unidade a ser convertida:"<< endl;
            cin >>vlr;
            vlr = (vlr - 273.15) * 9/5 + 32;
            cout <<"o valor digitado convertido para fahrenheit fica:"<< vlr<< endl;
            break;
        }
            
}

void un_vel(){
    int opcao = -1;
    float vlr=0;
    
    cout << "1 - m/s em km/h" << endl;
    cout << "2 - km/h em m/s" << endl;
    cout << "3 - mph em m/s" << endl;
    cout << "4 - mph em km/h" << endl;
    cout << "5 - km/h em mph "<< endl;    
    cout << "0 - voltar ao menu" << endl;
    
    cin >>opcao;{
            
        switch ( opcao )
        case 0:
            opcao = 0;
            break;
        case 1:
            cout << "digite a velocidade em m/s a ser convertida:"<< endl;
            cin >>vlr;
            vlr = vlr * 3.6;
            cout <<"a velocidade digitada convertida para quilometros fica:"<< vlr<< endl;
            break;
            
        case 2:
            cout << "digite a velocidade a ser convertida:"<< endl;
            cin >>vlr;
            vlr = vlr / 3.6;
            cout <<"a velocidade digitada convertida para metros fica:"<< vlr<< endl;
            break;
            
        case 3:
            cout << "digitea velocidade em mph a ser convertida:"<< endl;
            cin >>vlr;
            vlr = vlr / 2.237;
            cout <<"a velocidade digitada convertida para metros fica:"<< vlr<< endl;
            break;
            
        case 4:
            cout << "digitea velocidade em mph a ser convertida:"<< endl;
            cin >>vlr;
            vlr = vlr * 1.609;
            cout <<"a velocidade digitada convertida para quilometros fica:"<< vlr<< endl;
            break;
        case 5:
            cout << "digite a velocidade em km/h a ser convertida:"<< endl;
            cin >>vlr;
            vlr = vlr / 1.609;
            cout <<"a velocidade convertida para milhas  fica:"<< vlr<< endl;
            break;
        }
            
}

void un_moeda(){
    int opcao = -1;
    float vlr=0;
    
    cout << "1 - real para dolar" << endl;
    cout << "2 - dolar para real" << endl;
    cout << "3 - real para euro" << endl;
    cout << "4 - euro para real" << endl;
    cout << "5 - dolar para euro"<< endl;    
    cout << "0 - voltar ao menu" << endl;
    
    cin >>opcao;
            
        switch ( opcao ){
        case 0:
            opcao = 0;
            break;
        case 1:
            cout << "digite a medida a ser convertida:"<< endl;
            cin >>vlr;
            vlr = vlr * 5.44;
            cout <<"o valor digitado convertido para dolar fica:"<< vlr<< endl;
            break;
            
        case 2:
            cout << "digite a medida a ser convertida:"<< endl;
            cin >>vlr;
            vlr = vlr / 5.44;
            cout <<"o valor digitado convertido para real fica:"<< vlr<< endl;
            break;
            
        case 3:
            cout << "digite a medida a ser convertida:"<< endl;
            cin >>vlr;
            vlr = vlr * 6.54;
            cout <<"o valor digitado convertido para euro fica:"<< vlr<< endl;
            break;
            
        case 4:
            cout << "digite a medida a ser convertida:"<< endl;
            cin >>vlr;
            vlr = vlr / 6.54;
            cout <<"o valor digitado convertido para real  fica:"<< vlr<< endl;
            break;
        case 5:
            cout << "digite a medida a ser convertida:"<< endl;
            cin >>vlr;
            vlr = vlr / 1.20;
            cout <<"o valor digitado convertido para euro fica:"<< vlr<< endl;
            break;
        }
        }    
        
void un_fusos(){
    int opcao = -1;
    int hr=0;
    int min=0;
    
    
    cout << "1 - Horario de Brailia para Horario da Inglaterra" << endl;
    cout << "2 - Horario de Brasilia para Horario da Italia" << endl;
    cout << "3 - Horario de Brasilia para Horario de washington" << endl;
    cout << "4 - Horario de Brasilia para Horario de Paris" << endl;
    cout << "5 - Horario de Brasilia para horario de Santiago "<< endl;    
    cout << "0 - voltar ao menu" << endl;
    
    cin >>opcao;
            
        switch ( opcao ){
        case 0:
            opcao = 0;
            break;
        case 1:
            cout << "digite a hora atual do brasil:"<< endl;
            cin >>hr;
            cout << "digite os minutos";
            hr = hr + 4;
            cout <<"o horario britanico atual é:"<< hr<<"." <<min << endl;
            break;
            
            case 2:
            cout << "digite a hora atual do brasil:"<< endl;
            cin >>hr;
            cout << "digite os minutos";
            hr = hr + 5;
            cout <<"o horario italiano atual é:"<< hr<<"." <<min << endl;
            break;
    
            case 3:
            cout << "digite a hora atual do brasil:"<< endl;
            cin >>hr;
            cout << "digite os minutos";
            hr = hr - 1;
            cout <<"o horario americano atual é:"<< hr<<"." <<min << endl;
            break;
            
        case 4:
            cout << "digite a hora atual do brasil:"<< endl;
            cin >>hr;
            cout << "digite os minutos";
            hr = hr + 5;
            cout <<"o horario frances atual é:"<< hr<<"." <<min << endl;
            break;
            
            case 5:
            cout << "digite a hora atual do brasil:"<< endl;
            cin >>hr;
            cout << "digite os minutos";
            hr = hr - 1;
            cout <<"o horario chileno atual é:"<< hr<<"." <<min << endl;
            break;
        }
        }
        
main() {
setlocale(LC_ALL, "Portuguese");
    
    int opcao1 = 0;
    int opcao2 = 0;
    
    while(opcao1 !=0){
        
        system("cls");
        
        cout << "SEJA BEM VINDO AO voce ESTA COLANDO!" << endl;
        cout << "1 - conversao de unidades de comrimento" << endl;
        cout << "2 - conversao de unidades de area" << endl;
        cout << "3 - conversao de unidades de massa" << endl;
        cout << "4 - conversao de unidades de temperatura" << endl;
        cout << "5 - conversao de medidas de velocidade" << endl;
        cout << "6 - conversoes de moedas" << endl;
        cout << "7 - Fusos horarios" << endl;
        cout << "8 - Sobre o programa" << endl;
        cout << "0 - Sair" << endl;
        cout << "Digite uma opcao do menu:";
        
        cin >> opcao1;
    
    switch(opcao1){
            
            case 1:
                un_comp();
                break;
            case 2:
                un_area();
                break;
            case 3:
                un_massa();
                break;
            case 4:
                un_temp();
                break;
            case 5:
                un_vel();
                break;
            case 6:
                un_moeda();
                break;
            case 7:
                un_fusos();
                break;
            case 8:
                cout <<" Este programa é tem a finalidade de realizar a conversão"<<endl;
                cout <<" e entregar informações específicas, conforme solicitado para o"<<endl;
                cout <<"trabalho da disciplina de Algoritmos e Programação."<< endl;
                cout <<" desenvolvedor:  Roberto Carlos Frantz."<< endl;
                cout <<"email: desenvolv.rc@cmaismais.com.br"<< endl;
                cout <<"fone: 51 3568-4587"<< endl;
                break;
                default:
                opcao1 = 1;
                break;
        }
        
    }
    
    
    return 0;
}
        

  • Curtir 1
Link para o post
Compartilhar em outros sites

@Roberto.C Compilou o código? Deu uma olhada nos erros?

O comando switch faz com que o controle seja transferido para um label, e usamos break para transferir o controle para fora do corpo, mas o último não precisa de break, certo? O corpo acaba ali.

O código está extenso e deu vários erros... Dê uma olhada onde o break realmente é necessário, veja se não faltam chaves em algum switch, etc.

Pra resumir: releia seu código :D

 

Alguns outros problemas:

  • iostream faz parte da biblioteca padrão do C++, e stdio.h, da biblioteca padrão do C, se está programando em C++, não precisa desta segunda;
  • Evite declarar funções do tipo void e sem parâmetros, é um desperdício;
  • A função principal deve sempre retornar um int;
  • Chamou setlocale() sem incluir locale, e evite fazer isso;
  • É difícil localizar a função principal dentro do seu código, ela está lá no final, então deixe apenas os protótipos das funções que criou antes da main e as funções em si depois da mesma.
  • Curtir 1
  • Obrigado 1
Link para o post
Compartilhar em outros sites

Então, sobre reler o meu código.... eu vim aqui pedir ajuda justamente por isso, eu olho, olho, altero aqui, altero lá, mas ainda tem erros.

A biblioteca e o último break eu removi, obrigado.

 

Link para o post
Compartilhar em outros sites

Não escreva um programa inteiro antes de testar. É perda de tempo.

 

Atente para as coisas que @Lucca Rodrigues citou. 

 

Você está indo no caminho errado. Pode dar certo mas vai levar uma eternidade e vai aprender pouco ou nada a cada programa que escrever assim.

 

 

image.thumb.png.972ba7e216d64ded1ddb586c6e14f924.pngVou separar um pedaço aqui a direita como exemplo.

 

Que d1@b0 é essa chave na linha 124? É a que está faltando no final da linha 126.

 

Preste atenção a esse tipo de construção.

 

Parece pouco útil, se opção for 0 escrever opcao = 0 e sair do case :D Se você acabou de ver que opcao é zero qual o propóstio de escrever a mesma coisa de novo? 

 

Não misture o código da conversão com entrada e saída. Sei que é o comum mas é uma ideia ruim.

 

O simples é escrever SEMPRE em torno dos dados. Veja como pode ser:
 

    float cnv_massa( float original, char tipo );


E você usa por exemplo


 

    float valor_convertido =  cnv_massa( valor, 2 ) ;


para converter valor de toneladas para gramas. E assim pode testar todas as conversões sem usar um infeliz programa interativo. Não é esperto ficar parado em frente  a níveis diversos de menus inventando dados. Apenas colete os dados em separado e chame as funções certas. E antes de ler os dados faça o simples e teste com constantes...

 

    float um_kg__em gramas = cnv_massa( .001, 2 );

 

deve dar 1000 certo?

 

Note que em C++ como em java você pode escrever
 

        vlr = vlr * 1000000;

	    // ou

        vlr = vlr * 1'000'000;

	// ou mesmo

 		vlr = 1 * 1000* 1000;

 

O compilador faz as contas por você, só que antes disso você já consegue ler sem ficar contando zeros, que é muito chato...

 

Seu programa não está bom. Mas está incrivelmente complicado antes de tudo.

 

 

  • Curtir 1
  • Obrigado 1
Link para o post
Compartilhar em outros sites

AGORA ESTÁ FUNCIONANDO! Só falta ajustar os cálculos e testar a opção voltar (0).

Muuuito obrigado mesmo, eu sei que para vocês isso que eu fiz foi um código totalmente coisado, mas para mim, que ainda sei muito pouco foi o que deu para fazer

Vou melhorar esse código aí obrigadão.

  • Curtir 1
Link para o post
Compartilhar em outros sites

Assim está compilando

 

#include <cstdlib>
#include <stdio.h>
#include <iostream>
using namespace std;

void un_comp(){
    int opcao = -1;
    float vlr=0;
    
    cout << "1 - milimetros para centimetros" << endl;
    cout << "2 - metros para centimetros" << endl;
    cout << "3 - quilometros para metros" << endl;
    cout << "4 - quilometros para hectares" << endl;
    cout << "5 - hectares para metros "<< endl;    
    cout << "0 - voltar ao menu" << endl;
    
    cin >>opcao;
            
        switch ( opcao ){
        case 0:
            opcao = 0;
            break;
        case 1:
            cout << "digite a medida a ser convertida:"<< endl;
            cin >>vlr;
            vlr = vlr / 10;
            cout <<"o valor digitado convertido para centrimetros fica:"<< vlr<< endl;
            break;
            
        case 2:
            cout << "digite a medida a ser convertida:"<< endl;
            cin >>vlr;
            vlr = vlr * 100;
            cout <<"o valor digitado convertido para metros fica:"<< vlr<< endl;
            break;
            
        case 3:
            cout << "digite a medida a ser convertida:"<< endl;
            cin >>vlr;
            vlr = vlr * 1000;
            cout <<"o valor digitado convertido para metros fica:"<< vlr<< endl;
            break;
            
        case 4:
            cout << "digite a medida a ser convertida:"<< endl;
            cin >>vlr;
            vlr = vlr * 100;
            cout <<"o valor digitado convertido para hectares fica:"<< vlr<< endl;
            break;
        case 5:
            cout << "digite a medida a ser convertida:"<< endl;
            cin >>vlr;
            vlr = vlr * 10000;
            cout <<"o valor digitado convertido para metros fica:"<< vlr<< endl;
            break;
        }
            
}

void un_area(){
    int opcao;
    float vlr=0;
    
    cout << "1 - centimetros quadrados para metros quadrados" << endl;
    cout << "2 - metros quadrados para quilometros quadrados" << endl;
    cout << "3 - quilometros quadrados para hectares" << endl;
    cout << "4 - quilometros quadrados para metros quadrados" << endl;
    cout << "5 - metros quadrados para centimetros quadrados "<< endl;    
    cout << "0 - voltar ao menu" << endl;
    
    cin >>opcao;
            
        switch ( opcao ){
        case 0:
            opcao = 0;
            break;
        case 1:
            cout << "digite a medida a ser convertida:"<< endl;
            cin >>vlr;
            vlr = vlr / 1000;
            cout <<"o valor digitado convertido para metros fica:"<< vlr<< endl;
            break;
            
        case 2:
            cout << "digite a medida a ser convertida:"<< endl;
            cin >>vlr;
            vlr = vlr / 1000000;
            cout <<"o valor digitado convertido para quilometros fica:"<< vlr<< endl;
            break;
            
        case 3:
            cout << "digite a medida a ser convertida:"<< endl;
            cin >>vlr;
            vlr = vlr * 100;
            cout <<"o valor digitado convertido para hectares fica:"<< vlr<< endl;
            break;
            
        case 4:
            cout << "digite a medida a ser convertida:"<< endl;
            cin >>vlr;
            vlr = vlr * 1000000;
            cout <<"o valor digitado convertido para metros  fica:"<< vlr<< endl;
            break;
        case 5:
            cout << "digite a medida a ser convertida:"<< endl;
            cin >>vlr;
            vlr = vlr * 10000;
            cout <<"o valor digitado convertido para centimetros fica:"<< vlr<< endl;
            break;
        }
        }
        
void un_massa(){
    int opcao = -1;
    float vlr=0;
    
    cout << "1 - quilos para gramas" << endl;
    cout << "2 - toneladas para gramas" << endl;
    cout << "3 - toneladas para quilos" << endl;
    cout << "4 - gramas para quilos" << endl;
    cout << "5 - quilos para toneladas "<< endl;    
    cout << "0 - voltar ao menu" << endl;

    cin>>opcao;{
            
        switch ( opcao ){
        
        case 0:
            opcao = 0;
            //break;
        case 1:
            cout << "digite o peso a ser convertido:"<< endl;
            cin >>vlr;
            vlr = vlr * 1000;
            cout <<"o valor digitado convertido para gramas fica:"<< vlr<< endl;
            break;
            
        case 2:
            cout << "digite o peso a ser convertido:"<< endl;
            cin >>vlr;
            vlr = vlr * 1000000;
            cout <<"o valor digitado convertido para gramas fica:"<< vlr<< endl;
            break;
            
        case 3:
            cout << "digite o peso a ser convertido:"<< endl;
            cin >>vlr;
            vlr = vlr * 1000;
            cout <<"o valor digitado convertido para quilos fica:"<< vlr<< endl;
            break;
            
        case 4:
            cout << "digite o peso a ser convertido:"<< endl;
            cin >>vlr;
            vlr = vlr / 1000;
            cout <<"o valor digitado convertido para quilos fica:"<< vlr<< endl;
            break;
        case 5:
            cout << "digite o peso a ser convertido:"<< endl;
            cin >>vlr;
            vlr = vlr / 1000;
            cout <<"o valor digitado convertido para toneladas fica:"<< vlr<< endl;
            break;
        }
            
}
}
void un_temp(){
    int opcao = -1;
    float vlr=0;
    
    cout << "1 - celsius para fahrenheit" << endl;
    cout << "2 - celsius para kelvin" << endl;
    cout << "3 - fahrenheit para celsius" << endl;
    cout << "4 - fahrenheit para kelvin" << endl;
    cout << "5 - kelvin para celsius "<< endl;    
    cout << "6 - kelvin para fahrenheit"<< endl;
    cout << "0 - voltar ao menu" << endl;
    
    cin >> opcao;
            
        switch ( opcao ){
        
        case 0:
            opcao = 0;
            break;
        case 1:
            cout << "digite a unidade a ser convertida:"<< endl;
            cin >>vlr;
            vlr = (vlr * 9/5) + 32;
            cout <<"o valor digitado convertido para fahrenheit fica:"<< vlr<< endl;
            break;
            
        case 2:
            cout << "digite a unidade a ser convertida:"<< endl;
            cin >>vlr;
            vlr = vlr + 273.15;
            cout <<"o valor digitado convertido para kelvin fica:"<< vlr<< endl;
            break;
            
        case 3:
            cout << "digite a unidade a ser convertida:"<< endl;
            cin >>vlr;
            vlr = (vlr - 32) * 5/9;  
            cout <<"o valor digitado convertido para celsius fica:"<< vlr<< endl;
            break;
            
        case 4:
            cout << "digite a unidade a ser convertida:"<< endl;
            cin >>vlr;
            vlr = vlr - 273.15;
            cout <<"o valor digitado convertido para kelvin fica:"<< vlr<< endl;
            break;
        case 5:
            cout << "digite a unidade a ser convertida:"<< endl;
            cin >>vlr;
            vlr = vlr - 273.15;
            cout <<"o valor digitado convertido para celsius fica:"<< vlr<< endl;
            break;
            
            case 6:
            cout << "digite a unidade a ser convertida:"<< endl;
            cin >>vlr;
            vlr = (vlr - 273.15) * 9/5 + 32;
            cout <<"o valor digitado convertido para fahrenheit fica:"<< vlr<< endl;
            break;
        }
            
}

void un_vel(){
    int opcao = -1;
    float vlr=0;
    
    cout << "1 - m/s em km/h" << endl;
    cout << "2 - km/h em m/s" << endl;
    cout << "3 - mph em m/s" << endl;
    cout << "4 - mph em km/h" << endl;
    cout << "5 - km/h em mph "<< endl;    
    cout << "0 - voltar ao menu" << endl;
    
    cin >>opcao;
            
        switch ( opcao ){
        case 0:
            opcao = 0;
            break;
        case 1:
            cout << "digite a velocidade em m/s a ser convertida:"<< endl;
            cin >>vlr;
            vlr = vlr * 3.6;
            cout <<"a velocidade digitada convertida para quilometros fica:"<< vlr<< endl;
            break;
            
        case 2:
            cout << "digite a velocidade a ser convertida:"<< endl;
            cin >>vlr;
            vlr = vlr / 3.6;
            cout <<"a velocidade digitada convertida para metros fica:"<< vlr<< endl;
            break;
            
        case 3:
            cout << "digitea velocidade em mph a ser convertida:"<< endl;
            cin >>vlr;
            vlr = vlr / 2.237;
            cout <<"a velocidade digitada convertida para metros fica:"<< vlr<< endl;
            break;
            
        case 4:
            cout << "digitea velocidade em mph a ser convertida:"<< endl;
            cin >>vlr;
            vlr = vlr * 1.609;
            cout <<"a velocidade digitada convertida para quilometros fica:"<< vlr<< endl;
            break;
        case 5:
            cout << "digite a velocidade em km/h a ser convertida:"<< endl;
            cin >>vlr;
            vlr = vlr / 1.609;
            cout <<"a velocidade convertida para milhas  fica:"<< vlr<< endl;
            break;
        }
            
}

void un_moeda(){
    int opcao = -1;
    float vlr=0;
    
    cout << "1 - real para dolar" << endl;
    cout << "2 - dolar para real" << endl;
    cout << "3 - real para euro" << endl;
    cout << "4 - euro para real" << endl;
    cout << "5 - dolar para euro"<< endl;    
    cout << "0 - voltar ao menu" << endl;
    
    cin >>opcao;
            
        switch ( opcao ){
        case 0:
            opcao = 0;
            break;
        case 1:
            cout << "digite a medida a ser convertida:"<< endl;
            cin >>vlr;
            vlr = vlr * 5.44;
            cout <<"o valor digitado convertido para dolar fica:"<< vlr<< endl;
            break;
            
        case 2:
            cout << "digite a medida a ser convertida:"<< endl;
            cin >>vlr;
            vlr = vlr / 5.44;
            cout <<"o valor digitado convertido para real fica:"<< vlr<< endl;
            break;
            
        case 3:
            cout << "digite a medida a ser convertida:"<< endl;
            cin >>vlr;
            vlr = vlr * 6.54;
            cout <<"o valor digitado convertido para euro fica:"<< vlr<< endl;
            break;
            
        case 4:
            cout << "digite a medida a ser convertida:"<< endl;
            cin >>vlr;
            vlr = vlr / 6.54;
            cout <<"o valor digitado convertido para real  fica:"<< vlr<< endl;
            break;
        case 5:
            cout << "digite a medida a ser convertida:"<< endl;
            cin >>vlr;
            vlr = vlr / 1.20;
            cout <<"o valor digitado convertido para euro fica:"<< vlr<< endl;
            break;
        }
        }    
        
void un_fusos(){
    int opcao = -1;
    int hr=0;
    int min=0;
    
    
    cout << "1 - Horario de Brailia para Horario da Inglaterra" << endl;
    cout << "2 - Horario de Brasilia para Horario da Italia" << endl;
    cout << "3 - Horario de Brasilia para Horario de washington" << endl;
    cout << "4 - Horario de Brasilia para Horario de Paris" << endl;
    cout << "5 - Horario de Brasilia para horario de Santiago "<< endl;    
    cout << "0 - voltar ao menu" << endl;
    
    cin >>opcao;
            
        switch ( opcao ){
        case 0:
            opcao = 0;
            break;
        case 1:
            cout << "digite a hora atual do brasil:"<< endl;
            cin >>hr;
            cout << "digite os minutos";
            hr = hr + 4;
            cout <<"o horario britanico atual é:"<< hr<<"." <<min << endl;
            break;
            
            case 2:
            cout << "digite a hora atual do brasil:"<< endl;
            cin >>hr;
            cout << "digite os minutos";
            hr = hr + 5;
            cout <<"o horario italiano atual é:"<< hr<<"." <<min << endl;
            break;
    
            case 3:
            cout << "digite a hora atual do brasil:"<< endl;
            cin >>hr;
            cout << "digite os minutos";
            hr = hr - 1;
            cout <<"o horario americano atual é:"<< hr<<"." <<min << endl;
            break;
            
        case 4:
            cout << "digite a hora atual do brasil:"<< endl;
            cin >>hr;
            cout << "digite os minutos";
            hr = hr + 5;
            cout <<"o horario frances atual é:"<< hr<<"." <<min << endl;
            break;
            
            case 5:
            cout << "digite a hora atual do brasil:"<< endl;
            cin >>hr;
            cout << "digite os minutos";
            hr = hr - 1;
            cout <<"o horario chileno atual é:"<< hr<<"." <<min << endl;
            break;
        }
        }
        
main() {
setlocale(LC_ALL, "Portuguese");
    
    int opcao1 = 0;
    int opcao2 = 0;
    
   do {
        
        system("cls");
        
        cout << "SEJA BEM VINDO AO voce ESTA COLANDO!" << endl;
        cout << "1 - conversao de unidades de comrimento" << endl;
        cout << "2 - conversao de unidades de area" << endl;
        cout << "3 - conversao de unidades de massa" << endl;
        cout << "4 - conversao de unidades de temperatura" << endl;
        cout << "5 - conversao de medidas de velocidade" << endl;
        cout << "6 - conversoes de moedas" << endl;
        cout << "7 - Fusos horarios" << endl;
        cout << "8 - Sobre o programa" << endl;
        cout << "0 - Sair" << endl;
        cout << "Digite uma opcao do menu:";
        
        cin >> opcao1;
    
    switch(opcao1){
            
            case 1:
                un_comp();
                break;
            case 2:
                un_area();
                break;
            case 3:
                un_massa();
                break;
            case 4:
                un_temp();
                break;
            case 5:
                un_vel();
                break;
            case 6:
                un_moeda();
                break;
            case 7:
                un_fusos();
                break;
            case 8:
                cout <<" Este programa é tem a finalidade de realizar a conversão"<<endl;
                cout <<" e entregar informações específicas, conforme solicitado para o"<<endl;
                cout <<"trabalho da disciplina de Algoritmos e Programação."<< endl;
                cout <<" desenvolvedor:  Roberto Carlos Frantz."<< endl;
                cout <<"email: desenvolv.rc@cmaismais.com.br"<< endl;
                cout <<"fone: 51 3568-4587"<< endl;
                break;
                default:
                opcao1 = 1;
                break;
        }
    
    }while(opcao1 !=0);
}

Link para o post
Compartilhar em outros sites

Estava pensando como reduzir a quantidade de switch nesse tipo de exercício e deixar o cálculo mais simples. Uma forma foi tabelando os valores das conversões na função, apliquei isso com massa e temperatura,

 

#include <iostream>
using namespace std;

enum{
    MenuPrincipal,
    MenuMassa,
    MenuTemperatura
};
enum{Quilograma, Grama, Tonelada};
enum{Celcius, Fahrenheit, Kelvin};

typedef struct{
    const char *texto_menu;
    const int tabela[6][6];
    int converte;
    int para;
    int opcao;
}TConverte;

TConverte converte[] = {
    {
        "[MENU PRINCIPAL | CONVERSAO DE UNIDADES]\n"
        "1] Massa\n"
        "2] Temperatura\n"
        "0] Sair\n: ",
            {{0}}
    },
    {
        "1] Quilograma -> Grama\n"
        "2] Tonelada -> Grama\n"
        "3] Tonelada -> Quilograma\n"
        "4] Grama -> Quilograma\n"
        "5] Quilograma -> Tonelada\n"
        "0] Voltar\n: ",
        {
            {Quilograma,Grama},
            {Tonelada,Grama},
            {Tonelada,Quilograma},
            {Grama,Quilograma},
            {Quilograma,Tonelada}
        }
    },
    {
        "1] Celcius -> Fahrenheit\n"
        "2] Celcius -> Kelvin\n"
        "3] Fahrenheit -> Celcius\n"
        "4] Fahrenheit -> Kelvin\n"
        "5] Kelvin -> Fahrenheit\n"
        "6] Kelvin -> Celcius\n"
        "0] Voltar\n: ",
        {
            {Celcius,Fahrenheit},
            {Celcius,Kelvin},
            {Fahrenheit,Celcius},
            {Fahrenheit,Kelvin},
            {Kelvin,Fahrenheit},
            {Kelvin,Celcius}
         }
    }
};

TConverte *menu(int tipo){
    TConverte *opcao_menu = &converte[tipo];
    int opcao;
    
    cout << opcao_menu->texto_menu;
    cin >> opcao;
  
    opcao_menu->opcao = opcao;
    opcao_menu->converte = opcao_menu->tabela[opcao - 1][0];
    opcao_menu->para = opcao_menu->tabela[opcao - 1][1];
  
    return opcao_menu;
}

float massa(float valor, int converter, int para){
    float tabela[3][3] = {0};

    tabela[Quilograma][Grama] = valor * 1000;
    tabela[Tonelada][Grama] = valor * 1E6;
    tabela[Tonelada][Quilograma] = valor * 1000;
    tabela[Grama][Quilograma] = valor/1000;
    tabela[Quilograma][Tonelada] = valor/1000;
    return tabela[converter][para];
}

float temperatura(float valor, int converter, int para){
    float tabela[3][3] = {0};

    tabela[Celcius][Fahrenheit] = valor * 9/5.0 + 32;
    tabela[Celcius][Kelvin] = valor + 273.15;
    tabela[Fahrenheit][Celcius] = (valor - 32) * (9/5.0);
    tabela[Fahrenheit][Kelvin] = (valor - 32) * 9/5.0 + 273.15;
    tabela[Kelvin][Fahrenheit] = (valor - 273.15) * 9/5.0 + 32;
    tabela[Kelvin][Celcius] = valor - 273.15;
    return tabela[converter][para];
}

int main(){
    TConverte *M;
    do{
        M = menu(MenuPrincipal);
        if(M->opcao){
            TConverte *C;
            do{
                C = menu(M->opcao);
                if(C->opcao){
                    float valor;
                    cout << "Valor: ";
                    cin >> valor;
                    switch(M->opcao){
                        case MenuMassa:
                            valor = massa(valor, C->converte, C->para);
                            break;
                        case MenuTemperatura:
                            valor = temperatura(valor, C->converte, C->para);
                            break;
                    }
                    cout.precision(2);
                    cout << fixed << "\n ** VALOR CONVERTIDO = " 
                        << valor << " **\n\n";
                }
            }while(C->opcao);
        }
    }while(M->opcao);
    return 0;
}

 

  • Obrigado 1
Link para o post
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...

Aprenda a ler resistores e capacitores

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!