Ir ao conteúdo

Posts recomendados

Postado

preciso que o código leia esses dados quando eu informar o tipo de apartamento

TIPO DO APTO. VALOR DA DIÁRIA (R$)

A 150,00

B 100,00

C 75,00

D 50,00

 

código não dá erro, porém não lê o valor que coloco

#include <iostream>
using namespace std;

int main() {
  string nome;
  int apt=0; 
  int diaria=0, v_apt=0, v_int=0, t_diaria=0, subtotal=0, servico=0, total=0;
  int A, B, C, D;
  
  cout<<"Nome do hóspede"<<endl;
  cin>>nome;
  cout<<"Número de diárias"<<endl;
  cin>>diaria;
  cout<<"Valor do consumo interno"<<endl;
  cin>>v_int;
  cout<<"Tipo de apartamento"<<endl;
  cin>>apt;

  apt=A||B||C||D;

  A=150;
  B=100;
  C=75;
  D=50;
  
    if(apt=='A'){
    v_apt=150;
    }
    else if(apt=='B'){
    v_apt=100;
    }
    else if(apt=='C'){
    v_apt=75;
    }
    else {
    v_apt=50;
    }

  t_diaria=(apt*diaria);
  subtotal=(t_diaria+v_int);
  servico=(subtotal*0.1);
  total=(subtotal+servico);

  cout<<"Valor da diária: "<<v_apt<<endl;
  cout<<"Valor total das diárias: "<<t_diaria<<endl;
  cout<<"Consumo interno: "<<v_int<<endl;
  cout<<"Subtotal: "<<subtotal<<endl;
  cout<<"Taxa de serviço: "<<servico<<endl;
  cout<<"Total geral: "<<total<<endl;

  return 0;
  }

 

  • Obrigado 1
  • Membro VIP
Postado
4 horas atrás, elisa_schneider disse:
apt=A||B||C||D;

Em c++ não sei mas em c o código acima não faz a operação OR direito. Precisa ser um | apenas. Com || ele faz teste de condição e com | faz a operação OR propriamente dita. E tem +:  você faz a operação (seja ela qual for) antes de atribuir os valores às variáveis... 🤔

  • Curtir 1
Postado

@elisa_schneider      no seu código existem comandos que não funcionam desse modo na Linguagem C++ ,  como essa linha  :

apt  = A || B || C || D               ;            /// operacao OR

você tenta atribuir esses valores nessa variável , que é do tipo int , e depois faz comparações com com caracteres , que são Letras , 

if( apt == 'A' )    /// apt nunca será iguaL a letra A maiuscula
{                   /// pois int só pode receber valores numericos e inteiros
  v_apt=150;
}

e então nunca serão iguais ,  e seu código  melhor organizado  poderia ser assim ,

#include <iostream>
using namespace std;
int main()
{
  string nome;
  double servico = 0.00,total = 0.00;
  int diaria  = 0, v_apt    = 0,
      v_int   = 0, t_diaria = 0,
      subtotal= 0, Servico  = 0,
      Total   = 0, apt      = 0;                     /// apt eh do tipo int
  int A, B, C, D               ;                     /// variaveiS não inicializadas
                                                     /// tem valores desconhecidos dentro delas
  cout << "Nome do hospede ----------: ";
  cin  >> nome                          ;
  cout << "Numero de diarias --------: ";
  cin  >> diaria                        ;
  cout << "Valor do consumo interno -: ";
  cin  >> v_int                         ;
  cout << "Tipo de apartamento ------: ";
  cin  >> apt                           ;

  cout << endl;
  cout << "Valores Antes de inicializadas" << endl;
  cout << "val variaveL  A -----= " << A   << endl;
  cout << "val variaveL  B -----= " << B   << endl;
  cout << "val variaveL  C -----= " << C   << endl;
  cout << "val variavel  D -----= " << D   << endl;

  cout << endl;
  cout << "val apt Antis  do OR = " << apt << endl;  /// variavel apt , tem esse valor
  apt  = A || B || C || D               ;            /// operacao OR
  cout << "val apt Depois do OR = " << apt << endl;  /// e depois continua com o mesmo valor
  cout << endl;

  A = 150;                                           /// inicializa as variaveis
  B = 100;                                           /// com esses valores
  C =  75;
  D =  50;

  cout << endl;
  cout << "Valores depois de inicializadas" << endl;
  cout << "val variaveL  A -----= " << A    << endl;
  cout << "val variaveL  B -----= " << B    << endl;
  cout << "val variaveL  C -----= " << C    << endl;
  cout << "val variavel  D -----= " << D    << endl;

  if(apt=='A')    /// apt nunca será iguaL a letra A maiuscula
  {               /// pois int só pode receber valores numericos e inteiros
    v_apt=150;
  }
  else
  {
    if(apt=='B')  /// aqui tambem eh a mesma coisa
    {
      v_apt=100;
    }
    else
    {
      if(apt=='C')
      {
        v_apt=75;
      }
      else
      {
        v_apt=50;
      }
    }
  }
  t_diaria = apt      * diaria ;
  subtotal = t_diaria + v_int  ;
  servico  = subtotal * 0.1    ;
  total    = subtotal + servico;

  cout << endl;
  cout << "Nome Do Hospede ----------: " << nome     << endl;
  cout << "Valor da diária ----------: " << v_apt    << endl;
  cout << "Valor total das diárias --: " << t_diaria << endl;
  cout << "Consumo interno ----------: " << v_int    << endl;
  cout << "Subtotal -----------------: " << subtotal << endl;
  cout << "Taxa de serviço ----------: " << servico  << endl;
  cout << "Total geral --------------: " << total    << endl;
  cout << endl;

  return 0;
}

ou de outra forma , também poderia ser assim  :

#include <iostream>
#include <windows.h>   /// só funciona no windows
#define _h GetStdHandle(STD_OUTPUT_HANDLE)
using namespace std;
int main()
{
  int letra_antes, fundo_antes;
  CONSOLE_SCREEN_BUFFER_INFO c;
  if(GetConsoleScreenBufferInfo(_h, &c ) )
  {
    letra_antes = ( c.wAttributes & 0xFF) & 0x0F;        /// pega a cor original das leras do console
    fundo_antes = ((c.wAttributes & 0xFF) >> 4) & 0x0F;  /// pega a cor original do  fundo do console
  }
  string nome,tipo;
  double servico = 0.00,total = 0.00;
  int diaria  = 0, v_apt    = 0,
      v_int   = 0, t_diaria = 0,
      subtotal= 0, Servico  = 0,
      Total   = 0, resp = 0,apt   = 0;                     /// apt eh do tipo int
  int A = 150, B = 100, C = 75, D = 50;
  do
  {
    servico = 0.00,total = 0.00;
    resp = 0,diaria=0,v_apt=0,
    v_int   = 0, t_diaria = 0,
    subtotal= 0, Servico  = 0,
    Total   = 0, resp = 0,apt= 0;

    SetConsoleTextAttribute( _h , 11 + ( 0 << 4 ) );  /// muda a cor para cor azul aniL e fundo preto
    cout << "Nome do hospede ----------: ";
    cin  >> nome                          ;
    cout << "Numero de diarias --------: ";
    cin  >> diaria                        ;
    cout << "Valor do consumo interno -: ";
    cin  >> v_int                         ;
    do
    {
      SetConsoleTextAttribute( _h , 12 + ( 14 << 4 ) );  /// cor vermelho sobre amarelo
      cout << "Tipo de apartamento ------:"               << endl;
      cout << " 1 = Classe A ------------: R$ 150 , 00  " << endl;
      cout << " 2 = Classe B ------------: R$ 100 , 00  " << endl;
      cout << " 3 = Classe C ------------: R$  75 , 00  " << endl;
      cout << " 4 = Classe D ------------: R$  50 , 00  ";
      cin  >> apt;
      cout << endl;

      SetConsoleTextAttribute( _h , 11 + ( 0 << 4 ) );  /// cor azul aniL
      switch( apt )
      {
      case 1:
        tipo = "Apartamento Classe A";
        cout << tipo          << endl;
        v_apt = 150;
        break;
      case 2:
        tipo = "Apartamento Classe B";
        cout << tipo          << endl;
        v_apt = 100;
        break;
      case 3:
        tipo = "Apartamento Classe C";
        cout << tipo          << endl;
        v_apt = 75;
        break;
      case 4:
        tipo = "Apartamento Classe D";
        cout << tipo          << endl;
        v_apt = 50;
        break;
      default:
        cout << "Opcao InvaLida . . . !" << endl;
      }
    }while( apt < 0 || apt > 4  );  /// só pode essas 4 opções de Apartamento
    t_diaria = v_apt    * diaria ;
    subtotal = t_diaria + v_int  ;
    servico  = subtotal * 0.1    ;  /// tx de servico 10%
    total    = subtotal + servico;

    SetConsoleTextAttribute( _h , 12 + ( 10 << 4 ) );  /// cor vemelho sobre verde
    cout <<                                               endl;
    cout << "Nome Do Hospede ----------: " << nome     << "   " << endl;
    cout << "Tipo De Apartamento ------: " << tipo     << "   " << endl;
    cout << "Valor da diAria ----------: " << v_apt    << "   " << endl;
    cout << "Valor total das diArias --: " << t_diaria << "   " << endl;
    cout << "Consumo interno ----------: " << v_int    << "   " << endl;
    cout << "Subtotal -----------------: " << subtotal << "   " << endl;
    cout << "Taxa de serviCo ----------: " << servico  << "   " << endl;
    cout << "Total geral --------------: " << total    << "   " << endl;
    cout <<                                               endl;
    SetConsoleTextAttribute( _h , 11 + ( 0 << 4 ) );  /// cor azul aniL
    cout << "outro cadastro \n 1 = Sim \n 2 = não ";
    cin  >> resp;
    cout << "\n"                                       << endl;
  }while( resp == 1 );
  cout << "\nEncerrando o Programa . . . !\n\n"        << endl;
  SetConsoleTextAttribute( _h , letra_antes + ( fundo_antes << 4 ) );  /// cor Original Do Console
  return 0;
}

 

Postado

Obrigada pela ajuda!!

 

consegui fazer indicando que A=1,B=2,C=3,D=4..

 

Dê uma olhada:

#include <iostream>
using namespace std;

int main() {
string nome;
double servico=0.00, total=0.00;
int diaria  = 0, v_apt    = 0,
    v_int   = 0, t_diaria = 0,
    subtotal= 0, Servico  = 0,
    Total   = 0, apt      = 0;
  
  cout<<"Nome do hóspede"<<endl;
  cin>>nome;
  cout<<"Número de diárias"<<endl;
  cin>>diaria;
  cout<<"Valor do consumo interno"<<endl;
  cin>>v_int;

  cout<<endl;
  cout<<"Tabela de preços: "<<endl;
  cout<<"Apt A = 1 = R$150"<<endl;
  cout<<"Apt B = 2 = R$100"<<endl;
  cout<<"Apt C = 3 = R$75"<<endl;
  cout<<"Apt D = 4 = R$50"<<endl;

  cout<<endl;
  cout<<"Tipo de apartamento (digite um número da lista)"<<endl;
  cin>>apt;

  if(apt==1){
    v_apt=150;
  }
  else
  {
    if(apt==2)
    {
      v_apt=100;
    }
    else
    {
      if(apt==3)
      {
        v_apt=75;
      }
      else
      {
        v_apt=50;
      }
    }
  }

  t_diaria=(v_apt*diaria);
  subtotal=(t_diaria+v_int);
  servico=(subtotal*0.1);
  total=(subtotal+servico);

  cout<<endl;
  cout<<"Hóspede: "<<nome<<endl;
  cout<<"Tipo de apartamento: "<<apt<<endl;
  cout<<"Número de diárias: "<<diaria<<endl;
  cout<<"Valor da diária: "<<v_apt<<endl;
  cout<<"Valor total das diárias: "<<t_diaria<<endl;
  cout<<"Consumo interno: "<<v_int<<endl;
  cout<<"Subtotal: "<<subtotal<<endl;
  cout<<"Taxa de serviço (10%): "<<servico<<endl;
  cout<<"Total geral: "<<total<<endl;

  return 0;  
}

 

  • Obrigado 1
Postado

@elisa_schneider      ficou bom e funciona bem ,  e se você Quiser usar Letras , você pode colocar a variável  "apt"  como sendo do tipo char  e use uma função para converter letras em maiúsculas ,  e seu código ficaria assim  :

#include <iostream>
#include <iomanip>
using namespace std;
char maiusc(char); /// funcao converte minusculas em maiusculas
int main()
{
  string nome;
  char apt;
  double servico=0.00, total= 0.00;
  int diaria  = 0, v_apt    = 0,
      v_int   = 0, t_diaria = 0,
      subtotal= 0, Servico  = 0,
      Total   = 0, Apt      = 0;
  cout << "Nome do hOspede ----------: ";
  cin  >> nome;
  cout << "NUmero de diArias --------: ";
  cin  >> diaria;
  cout << "Valor do consumo interno -: ";
  cin  >> v_int;

  cout <<                         endl;
  cout << "Tabela de preCos: " << endl;
  cout << "Apt A = R$ 150    " << endl;
  cout << "Apt B = R$ 100    " << endl;
  cout << "Apt C = R$  75    " << endl;
  cout << "Apt D = R$  50    " << endl;
  cout <<                         endl;
  cout << "Tipo de apartamento (digite uma Letra da lista)" << endl;
  cin  >> apt;

  apt = maiusc(apt);
  if( apt == 'A' )
  {
    v_apt = 150;
  }
  else
  {
    if( apt == 'B' )
    {
      v_apt = 100;
    }
    else
    {
      if( apt == 'C' )
      {
        v_apt = 75;
      }
      else
      {
        v_apt = 50;
      }
    }
  }

  t_diaria = v_apt    * diaria ;
  subtotal = t_diaria + v_int  ;
  servico  = subtotal * 0.1    ;
  total    = subtotal + servico;

  cout << fixed << setprecision(2);  /// qtd de casas decimais
  cout <<                                                           endl;
  cout << "HOspede -------------------: " << setw(6) << nome     << endl;/// qtd de caracteres escritos
  cout << "Tipo de apartamento -------: " << setw(6) << apt      << endl;
  cout << "NUmero de diArias ---------: " << setw(6) << diaria   << endl;
  cout << "Valor da diAria -----------: " << setw(6) << v_apt    << endl;
  cout << "Valor total das diArias ---: " << setw(6) << t_diaria << endl;
  cout << "Consumo interno -----------: " << setw(6) << v_int    << endl;
  cout << "Subtotal ------------------: " << setw(6) << subtotal << endl;
  cout << "Taxa de serviCo (10%) -----: " << setw(6) << servico  << endl;
  cout << "Total geral ---------------: " << setw(6) << total    << endl;
  cout << "\n\n"                                                 << endl;
  return 0;
}
char maiusc(char x)
{
  if( x > 96 )
    return x - 32;
  return x;
}

 

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