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

Programa Em C++


Bolt 4

Pergunta

Olá a todos!

Bom queria poder fechar esse programa digitando uma tecla pode ser o 's',sei que tenho que inserir um char e um if,mas está dando erro,estou fazendo errado.

Está aqui o programa:

#include <iostream>

using namespace std;

int main()
{
    while(true)
    {
    float a,e,t,p,pr,cd;
    cout<<"Programa de contas de casa em C++"<<"\n\n\n";
    cout<<"Agua:";
    cin>>a;
    cout<<"Energia:";
    cin>>e;
    cout<<"Telefone:";
    cin>>t;
    cout<<"Padaria:";
    cin>>p;
    cout<<"Provedor:";
    cin>>pr;
    cout<<"Comunicacao de dados:";
    cin>>cd;
    cout<<"\n\n";
    cout<<"Pessoa1 paga:"<<((a+e+t+p)-cd)/3<<"\n\n";
    cout<<"Pessoa2 paga:"<<(((a+e+t+p)-cd)/3)+pr+cd<<"\n\n----------------------\n\n";
    }
    system("PAUSE>null");
    return EXIT_SUCCESS;
}

Coloquei um while ,mas queria fazer ele parar ao digitar a tecla 's'.

Fiço um if normal,tentei dentro e fora do bloco while,ambas tentativas deram erro, parecia que o compilador não tava lendo a tecla.

Se puderem ajudar,tenho certeza que podem pois sacam muito,me expliquem como foi que fizeram.Obrigado,T+! :)

Link para o comentário
Compartilhar em outros sites

11 respostass a esta questão

Posts Recomendados

  • 0

No fim do while, voce pode colocar uma pergunta como "Deseja calcular mais algum conta da casa? [s/n]" e ler um char. Esse char voce checa com um 'if' e se for 'n', voce da um break no laco. Algo mais ou menos assim:

/*voce precisa declarar este char*/
char res;
while (true){
/*as suas linhas de calculo da conta vao aqui*/
cout<<"Deseja calcular mais algum conta da casa? [s/n]";
cin>>res;
if (res == n)
break;
}

Editado por Jonas de Abreu
Link para o comentário
Compartilhar em outros sites

  • 0

Aí cara deu certo!

#include <cstdlib>
#include <iostream>

using namespace std;

int main()
{
    char res;
    while(true)
    {
    float a,e,t,p,pr,cd;
    cout<<"Programa de contas de casa em C++"<<"\n\n\n";
    cout<<"Agua:";
    cin>>a;
    cout<<"Energia:";
    cin>>e;
    cout<<"Telefone:";
    cin>>t;
    cout<<"Padaria:";
    cin>>p;
    cout<<"Provedor:";
    cin>>pr;
    cout<<"Comunicacao de dados:";
    cin>>cd;
    cout<<"\n\n";
    cout<<"Pessoa1 paga:"<<((a+e+t+p)-cd)/3<<"\n\n";
    cout<<"Pessoa2 paga:"<<(((a+e+t+p)-cd)/3)+pr+cd<<"\n\n----------------------\n\n";
    cout<<"Deseja calcular mais alguma  conta de casa?[s/n]";
    cin>>res;
    if(res=='n')
    break;
    }
    system("PAUSE>null");
    return EXIT_SUCCESS;
}

Eu não estava pondo o cin>>res,ele serviu para ler o teclado,certo?Pois sempre que fazemos um programa e precisamos de inserir algo digitando pelo teclado usamos o cin>>,portanto ele mostrou para obedecer a tecla 's',estou errado?

Link para o comentário
Compartilhar em outros sites

  • 0

Sugestão para melhorar o código:

char res;

do{

     <código>

     cout << "Deseja calcular mais alguma conta de casa? "
     cin >> res;
}while(res!='n' || res!='n');

Acredito que utilizar o DoWhile ao invés de um While(true) ajuda a previnir loops infinitos.

Editado por Felipe Pedroso
Link para o comentário
Compartilhar em outros sites

  • 0

E aí Felipe tudo bem?

A primeira vez que tinha tentado tentei usar o do while,mas havia o problema de não estar lendo a tecla digitada,e também estava errando no while(ch!='n'); (estava pondo assim mas o certo era assim(while(ch!='n' || ch!='n'));bem agora corrigido o programa ficou assim:

#include <iostream>
using namespace std;
int main()
{
    char ch;
    do{
         float a,e,t,p,cd,pr;
         cout<<"\n\n-------Programa de contas de casa----\n\n";
         cout<<"Agua----------------->";
         cin>>a;
         cout<<"Energia-------------->";
         cin>>e;
         cout<<"Telefone------------->";
         cin>>t;
         cout<<"Padaria-------------->";
         cin>>p;
         cout<<"Comunicacao de dados->";
         cin>>cd;
         cout<<"Provedor------------->";
         cin>>pr;
         cout<<"\n\n\n";
         cout<<"Ax e MM pagam->"<<((a+e+t+p)-cd)/3<<"\n\n";
         cout<<"AL paga------->"<<(((a+e+t+p)-cd)/3)+pr+cd<<"\n\n";
         cout<<"Se deseja continuar digite [s]\nse deseja parar digite [n]";
         cin>>ch;
         if(ch=='n')
         {
                  cout<<"\n\n----Voce decidiu parar,digite qualquer tecla para sair------";
         }
         else
         {
             cout<<"\n\n---------Continue--------";
         }
    }
     while(ch!='n' ||ch!='n');
     system("pause>nul");
     return 0;
}

Compilou perfeitamente bem,e realmente era o que queria,ambas as formas deram certo tanto while(true),quanto do while().

Mas prevenir não custa nada,rss. muito obrigado cara! Acho que estou evoluindo com a ajuda de vocês. ;)

Link para o comentário
Compartilhar em outros sites

  • 0

#include <iostream>
using namespace std;
int main()
{
    char ch;
    do{
         float a,e,t,p,cd,pr;
         cout<<"\n\n-------Programa de contas de casa----\n\n";
         cout<<"Agua----------------->";
         cin>>a;
         cout<<"Energia-------------->";
         cin>>e;
         cout<<"Telefone------------->";
         cin>>t;
         cout<<"Padaria-------------->";
         cin>>p;
         cout<<"Comunicacao de dados->";
         cin>>cd;
         cout<<"Provedor------------->";
         cin>>pr;
         cout<<"\n\n\n";
         cout<<"Ax e MM pagam->"<<((a+e+t+p)-cd)/3<<"\n\n";
         cout<<"AL paga------->"<<(((a+e+t+p)-cd)/3)+pr+cd<<"\n\n";
         cout<<"Se deseja continuar digite [s]\nse deseja parar digite [n]";
         cin>>ch;
    }while(ch!='n' ||ch!='n');
     system("pause>nul");
     return 0;
}

Amigo, fiz mais uma modificação que talvez melhore seu programa. O While já faz a parte do if, eliminando a necessiadade de você ter aquele IF sobrando...

Link para o comentário
Compartilhar em outros sites

  • 0

Felipe,

Coloquei aquele if para que ao digitar a tecla desejada,aparecesse a mensagem Ex:

Ao prssionar o 'n' apareceria a mensagem de que iria fechar,pressionando qualquer tecla apareceria a mensagem continuar,por isso utilizei o if:

if(ch=='n')
         {
                  cout<<"\n\n----Voce decidiu parar,digite qualquer tecla para sair------";
         }
         else
         {
             cout<<"\n\n---------Continue--------";
         }

Essa é a função dele no meu programa,tem alguma maneira de aparecerem essas frases sem o if ?

Talvez não tenha entendido o que quiz me passar.T+ :blink:

Link para o comentário
Compartilhar em outros sites

  • 0

Você pode colocar a frase que não vai continuar depois do while. a do que vai continuar você pode colocar assim:

do{

<CÓDIGO>

     if(ch=='s')
          cout<<"\n\n---------Continue--------";

}while(ch!='n');
cout<<"\n\n----Voce decidiu parar,digite qualquer tecla para sair------";
<código>

Pesquise a função Do While...

Link para o comentário
Compartilhar em outros sites

  • 0

Felipe,

Assim mesmo você utilizou o if,antes você disse que era desnecessário.

Colocando o if else acho mais prático,mas de qualquer maneira,aprendi mais um modo de programar com o do while,apenas não entendi o por que você achou desnecessário o if antes?

Amigo, fiz mais uma modificação que talvez melhore seu programa. O While já faz a parte do if, eliminando a necessiadade de você ter aquele IF sobrando..

Isto havia me deixado um pouquinho confuso se puder me explicar?

Muito obrigado por enquanto cara! :D

Link para o comentário
Compartilhar em outros sites

  • 0

Do while (ou Faça enquanto em português) é uma estrutura que executa um bloco de instruções uma vez e as repete enquanto dada condição é verdadeira. Exemplo:

int i=0;
do{
    i++
}while(i<5);

cout << i;

[b]SAIDA: 4[/b]

Portanto ao colocar o cout informando que o programa foi interrompido depois do do while evita de você usar o "if(ch=='n'". Mas se você precisa exibir que o programa vai continuar você usa um if que detecte qual foi a opçao do usuário e a exiba.

Link para o comentário
Compartilhar em outros sites

  • 0

Você pode exibir de uma maneira melhor... Como exemplifiquei no post #8.

Você pode até fazer do seu jeito... Mas para o código ficar mais elegante...

Você entendeu mesmo como funciona um Do While?

UPDATE:

Leia isso... É para Javascript, mas é aplicável ao C e C++:

http://www.criarweb.com/artigos/224.php

Editado por Felipe Pedroso
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,4k
×
×
  • Criar Novo...