Ir ao conteúdo

Posts recomendados

Postado

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
Postado

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

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.

 

Postado

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
Postado

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
Postado

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);
}

Postado

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

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!