1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

c++

Discussão em 'Programação' iniciada por prosaQue, 29 de Dezembro de 2007. (Respostas: 17; Visualizações: 1438)

  1. prosaQue

    prosaQue Power Member

    Código:
    #include <cstdlib>
    #include <iostream>
    using namespace std;
    int main()
    {
        cout << "Hello, World!";
        return 0;           
    }
    Ao executar, o programa corre e fecha-se automaticamente. Nem consigo ter tempo para ver o se realmente faz o output. Alguma função que resolva isto ? :D
     
    Última edição: 29 de Dezembro de 2007
  2. Baderous

    Baderous Banido

    Código:
    #include <cstdlib>
    #include <iostream>
    using namespace std;
    int main()
    {
        cout << "Hello, World!";
        [COLOR=red]getchar();[/COLOR]
        return 0;           
    }
     
  3. prosaQue

    prosaQue Power Member


    Pois bem básico :D
    Obrigado :-D
     
  4. prosaQue

    prosaQue Power Member

    Código:
    #include <cstdlib>
    #include <iostream>
    using namespace std;
    int main()
    {
        cout<< "Introduza um numero, para terminar digite 0." ;
        int n;
        int maior;
       cin >> n;
       maior = n ;
        do{
             cin >> n ; 
             if( n > maior )
                 maior = n; 
            }
        while(n!= 0);
        
    
        cout << " O maior numero e: "; 
        cout << maior;   
        
        getchar();
        return 0;           
    }
    
    Ao correr este código, o programa encerra logo após o ciclo, não tenho tempo de ver o ouput seguinte. Alguma solução ?:)
     
  5. migp999

    migp999 Power Member

    lg a seguir ao return 0 pões : system("pause")

    Cumps:D
     
  6. prosaQue

    prosaQue Power Member

    Ficou na mesma :(
    Mas obrigado na mesma :joker:
     
  7. Baderous

    Baderous Banido

    Código:
    #include <cstdlib>
    #include <iostream>
    using namespace std;
    int main()
    {
        cout<< "Introduza um numero, para terminar digite 0." ;
        int n;
        int maior;
       cin >> n;
       maior = n ;
        do{
             cin >> n ; 
             if( n > maior )
                 maior = n; 
            }
        while(n!= 0);
        
    
        cout << " O maior numero e: "; 
        cout << maior;   
        
        getchar();[COLOR=red]getchar();[/COLOR]
        return 0;           
    }
    
    ou

    Código:
    void limpa_buffer()
    {
      char c;
      do
      {
        c=getchar();
      } while(c!='\n');
    }
    
    ...
    limpa_buffer();
    cout << " O maior numero e: "; 
        cout << maior;   
        
        getchar();
        return 0;           
    }
     
    Última edição: 29 de Dezembro de 2007
  8. kal13

    kal13 Power Member

    Boas.
    Ando a aprender C++ na escola...Parece uma Linguagem de programação Simples com alguams semelhanças ao Pascal! :D Pode ser so impressão minha! xD
    Não posso falar muito ainda pois estou no básico ainda!...
    Fiquem Bem
     
  9. arconada

    arconada Power Member

    ?!

    quanto à questao ja tentaste o debugger? podes tar com algum problema e nao te estas a aperceber, provavelmente nem esteja a chegar ao getchar.
     
  10. saunde

    saunde Power Member

    Acho que existe uma coisa qualquer... cin.ignore() , ou cin.clear().... googla aí.. para limpar o buffer..
     
  11. Peter V5

    Peter V5 Folding Member

    a minha resolução:

    antes do return 0; pões sempre mas sempre dois getchar();

    Código:
     (...)
    getchar();
    getchar();
    return 0;
     
  12. jahred

    jahred Power Member

    dois? porquê dois? mais vale fazer:

    fflush(stdin);
    getchar();
     
  13. Baderous

    Baderous Banido

  14. z80

    z80 Power Member

    mas porque não corres os teus programas directamente na linha de comandos do windows, assim já não "aparecem e desaparecem"
     
  15. prosaQue

    prosaQue Power Member

    é muito mais prático correr através do ide. Posso fazer o debug, e posso corrigir muito facilmente possíveis erros. Por isso acho um pouco "rupestre" andar a correr os programas na linha de comandos :-D

    Exacto. Desta maneira funcionou. Obrigado :)
     
    Última edição pelo moderador: 1 de Janeiro de 2008
  16. mj2p

    mj2p I'm Cool Cuz I Fold

    Bem o problema que o prosaQue teve é devido ao facto do buffer estar já preenchido com uma certa quantidade de caracteres que inviabiliza a escrita ou leitura. É como se o buffer estivesse demasiado "empanturrado", e já não coubesse lá mais nada.

    Das soluções apresentadas aquela que eu uso é do ciclo while, que vai recolhendo os caracteres do buffer até chegar ao caracter '\n', ficando assim o buffer vazio.

    Dois getchar()? Primeiro, e apesar de não ser um grande reparo, a versão, por assim dizer, do getchar() em C++ é cin.get(). Segundo, dessa maneira ainda estariamos a empanturrar mais o buffer (com os computadores de hoje em dia, não era por isto que a RAM se esgotaria, mas um bom programador presa-se sempre por poupar ao máximo a sua máquina ...).

    system("pause")? Este então é que nem pensar. Este método está estremamente dependente da plataforma em que está a ser execuado.

    Só mais uma coisa. Baderous, tu implimentas-te a tua função limpa_buffer antes dos outputs que indicam qual é o número maior:

    Código:
    void limpa_buffer()
    {
      char c;
      do
      {
        c=getchar();
      } while(c!='\n');
    }
     
    ...
    limpa_buffer();
    cout << " O maior numero e: "; 
        cout << maior;   
     
        getchar();
        return 0;           
    }
    
    Se a implimentasses só antes do getchar(), haveria algum problema?

    Código:
    void limpa_buffer()
    {
    char c;
    do
    {
    c=getchar();
    } while(c!='\n');
    }
     
    ...
    cout << " O maior numero e: "; 
    cout << maior; 
     
    [COLOR=red]limpa_buffer();[/COLOR] 
    getchar();
    return 0; 
    }
    
    É só mesmo por uma questão de esclarecimento.

    Vá, cumps
     
    Última edição: 4 de Janeiro de 2008
  17. Baderous

    Baderous Banido

    Não há diferença.
     
  18. Tyran

    Tyran Power Member

    Eu custumo fazer outra coisa ainda porque caso o buffer esteja limpo (não se sabe quando se está a ler com fgets porque pode ou não passar o limite de leitura) vais ter de dar mais um enter para fazer o '\n' e sair do ciclo

    Código:
    
    fgets( var, size, stdin);
                      if (var[strlen(var)-1]=='\n')
                          var[strlen(var)-1]='\0';
                      else apaga_buffer();
    
     

Partilhar esta Página