Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Beuleal

Problema com loop

Recommended Posts

Olá amigos, eu ja programo em outras linguagens, porem estou começando a mexer em c++ e estou com um probleminha básico no loop. Estou usando o system("cls"); para limpar a tela, porem nem esta dando tempo de ver o resultado da conta. ^^

 

Olhem o código

 


#include <iostream>
#include <windows.h> //para gotoxy



using namespace std;
#define PI 3.14159


void gotoxy(int coluna, int linha)
{
       COORD point;
       point.X = coluna; point.Y = linha;
       SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), point);
}



int main(){


   int op;
   int sair, numero1, numero2, soma, subt, divi, mult, circulo;



   //while (op != 0){

   gotoxy(30,1);
   cout << "###==--| Caluladora 1.0 |--==### \n\n\###==--| Menu Principal |--==### \n\n  ";

   cout << "[1] - Soma \n  [2] - Subtracao \n  [3] - Divisao \n  [4] - Multiplicacao \n  [5] - Calculo de Circunferencia \n  [0] - SAIR";

   cout << "\n\nDigite uma opcao e precione [ENTER]: ";
   cin >> op;

   switch (op) {

   case 1:

        cout << "\n ------> Voce escolheu SOMA\n";
        cout << "\n Digite um numero: ";
        cin >> numero1;
        cout << "\n Digite um outro numero: ";
        cin >> numero2;
        soma = numero1 + numero2;

        cout << "\n O resultado e " << soma << "\n ";
        cout << soma << " = " << numero1 << " + " << numero2;

    getchar();     
   break;

   default :
        cout << "Entrada invalida";
        getchar ();


   //}// fecha op

   }

   getchar();
   return 0;    
} 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você rodar ele, verá q esta voltando ao menu e sobrepondo o que ja esta escrito ficando assi:

 

Digite um numero:2

Digite um outroo numero:3

 

Entendeu?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi '-'

 

 

Não era pra exatamente isso acontecer?

 

         cout << "\n ------> Voce escolheu SOMA\n";
        cout << "\n Digite um numero: ";
        cin >> numero1;
        cout << "\n Digite um outro numero: ";
        cin >> numero2;
        soma = numero1 + numero2;

 

Até onde vejo, isso devia acontecer mesmo, não?

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha, retire esses dois comentarios e torne-os ativos

 

//while (op != 0){

 

//}// fecha op

 

ficando:

 

while (op != 0){

 

}// fecha op

 

E verá que nao dará tempo de ver o resultado e ja mostrará o menu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ah sim, isso é porque o std::cin deixa sugeira no buffer de entrada. Quando você chama getchar(), ele pega sugeira ao invés do input do usuário.

 

Tente após cada cin utilizar std::cin.flush ou std::cin.clear (não lembro qual função que era). Isso vai resolver o problema na hora de usar o getchar().

 

 

 

Abraços :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

esta aparecendo : "invalid use of member"

o codigo ficou assim

 

 




#include <iostream>
#include <windows.h> //para gotoxy



using namespace std;
#define PI 3.14159


void gotoxy(int coluna, int linha)
{
       COORD point;
       point.X = coluna; point.Y = linha;
       SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), point);
}



int main(){


   int op;
   int sair, numero1, numero2, soma, subt, divi, mult, circulo;



   while (op != 0){

   gotoxy(30,1);
   cout << "###==--| Caluladora 1.0 |--==### \n\n\###==--| Menu Principal |--==### \n\n  ";

   cout << "[1] - Soma \n  [2] - Subtracao \n  [3] - Divisao \n  [4] - Multiplicacao \n  [5] - Calculo de Circunferencia \n  [0] - SAIR";

   cout << "\n\nDigite uma opcao e precione [ENTER]: ";
   cin.flush >> op;

   switch (op) {

   case 1:

        cout << "\n ------> Voce escolheu SOMA\n";
        cout << "\n Digite um numero: ";
        cin >> numero1;
        cout << "\n Digite um outro numero: ";
        cin >> numero2;
        soma = numero1 + numero2;

        cout << "\n O resultado e " << soma << "\n ";
        cout << soma << " = " << numero1 << " + " << numero2;

    getchar();     
   break;

   default :
        cout << "Entrada invalida";
        getchar ();


  }// fecha op

   }

   getchar();
   return 0;    
} 


Compartilhar este post


Link para o post
Compartilhar em outros sites

Não não... você usa isso para limpar o buffer depois de chamar o cin...

 

Aí ficaria o seguinte:

 

#include <iostream>
#include <windows.h> //para gotoxy



using namespace std;
#define PI 3.14159


void gotoxy(int coluna, int linha)
{
       COORD point;
       point.X = coluna; point.Y = linha;
       SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), point);
}



int main(){


   int op;
   int sair, numero1, numero2, soma, subt, divi, mult, circulo;



   while (op != 0){

   gotoxy(30,1);
   cout << "###==--| Caluladora 1.0 |--==### \n\n\###==--| Menu Principal |--==### \n\n  ";

   cout << "[1] - Soma \n  [2] - Subtracao \n  [3] - Divisao \n  [4] - Multiplicacao \n  [5] - Calculo de Circunferencia \n  [0] - SAIR";

   cout << "\n\nDigite uma opcao e precione [ENTER]: ";
   cin >> op >> flush;

   switch (op) {

   case 1:

        cout << "\n ------> Voce escolheu SOMA\n";
        cout << "\n Digite um numero: ";
        cin >> numero1 >> flush;
        cout << "\n Digite um outro numero: ";
        cin >> numero2 >> flush;
        soma = numero1 + numero2;

        cout << "\n O resultado e " << soma << "\n ";
        cout << soma << " = " << numero1 << " + " << numero2;

    getchar();     
   break;

   default :
        cout << "Entrada invalida";
        getchar ();


  }// fecha op

   }

   getchar();
   return 0;    
} 

 

 

Olha se dá certo...

 

 

 

Abraços :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ainda não esta funcionando... tentei colocar clear e mesmo assim nao funcionou. Já tentei colocar no inicio um system("cls") mas nao dá nem tempo de ver o resultado e já limpa a tela

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.