Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

ProgrammingLikeABoss

Ler valor e conforme o valor inserido, apresentar uma mensagem

Mensagens Recomendadas

ProgrammingLikeABoss

Boas :] Preciso de alguem que me ajude com algo. Ora, estive a fazer um codigo em c++ para uma programa que supostamente iria ler um valor e conforme o valor inserido, apresentar uma mensagem. Fi-lo todo com o programa "Microsoft Visual c++ 2010" e depois tentei usar o Dev C++ para compilar.

Abri o codigo no Dev C++, e carreguei no compilar. O codigo lá compilou, e depois carreguei no "Run" para ver o que é que saía dali. Apareceu a linha de comandos (corrijam-me se estiver errado, penso que foi isso que abriu) com a mensagem "Insira um numero" (uma das mensagens que deveriam aparecer no ecra e que faz parte do codigo que estive a fazer). Inseri o numero 5 e carreguei no Enter.

Só que a linha de comandos desapareceu ._. E nada mais aconteceu.

Alguma solução que possa tentar?

E peço desculpa se há alguma bacorada aqui escrita, sou +/- novo nisto tudo do C++ @_@

Aqui esta o codigo:

#include <iostream>

using namespace std;

int main ()

{

int num;

cout<<"Insira um numero";

cin>>num;

if(num<=10)

cout<<"O numero é menor ou igual que dez";

else

cout<<"O numero é maior ou igual que dez";

}

cumps

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pmg

O que aconteceu foi que a mensagem seguinte ("O numero é menor ou igual que dez") apareceu na linha de comandos e, muito rapidamente, a linha de comandos desapareceu: tao rapido que nem reparaste no resultado.

Tens, basicamente, duas opcoes

a) altera o teu programa para ele parar depois de imprimir a mensagem

:cheesygrin: altera o teu sistema de modo a que a linha de comandos nao desapareca quando o programa termina

para a) experimenta

cout << "Entra mais um numero para terminar";
cin >> num;

antes da ultima chaveta

para ;) experimenta abrir a linha de comando isolada (Iniciar / Linha de Comando), fazer CD ate a directoria onde compilaste o teu programa e depois escreve o nome do programa


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
ProgrammingLikeABoss

O que aconteceu foi que a mensagem seguinte ("O numero é menor ou igual que dez") apareceu na linha de comandos e, muito rapidamente, a linha de comandos desapareceu: tao rapido que nem reparaste no resultado.

Tens, basicamente, duas opcoes

a) altera o teu programa para ele parar depois de imprimir a mensagem

:cheesygrin: altera o teu sistema de modo a que a linha de comandos nao desapareca quando o programa termina

para a) experimenta

cout << "Entra mais um numero para terminar";
cin >> num;

antes da ultima chaveta

para ;) experimenta abrir a linha de comando isolada (Iniciar / Linha de Comando), fazer CD ate a directoria onde compilaste o teu programa e depois escreve o nome do programa

Tentei a opçâo a) e resultou :D

Muito obrigado pela ajuda.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
ProgrammingLikeABoss

basta  acrescentar system("PAUSE"); para a linha de comandos não desaparecer.

Agora experimentei este e tambem funcionou como queria. O que o pmg tinha sugerido tambem tinha funcionado bem mas este é ainda melhor para o que pretendo.

Muito Obrigado aos dois pela ajuda :(

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pmg

basta  acrescentar system("PAUSE"); para a linha de comandos não desaparecer.

Essa maneira de fazer o programa parar antes de terminar o programa tem a desvantagem, em relacao a maneira proposta por mim, de que so funciona em Windows. Se o ProgrammingLikeABoss esta a aprender C++ para aplicar a naves espaciais (ou frigorificos ou ...) duvido que o system("PAUSE"); lhe seja util :(


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
ProgrammingLikeABoss

Essa maneira de fazer o programa parar antes de terminar o programa tem a desvantagem, em relacao a maneira proposta por mim, de que so funciona em Windows. Se o ProgrammingLikeABoss esta a aprender C++ para aplicar a naves espaciais (ou frigorificos ou ...) duvido que o system("PAUSE"); lhe seja util :)

hehe

ando a aprender C++, mas por enquanto queria só testar o que ja sabia :( Qualquer dia falamos nas naves espaciais, daqui a uns dias ja sei programar qualquer coisita para construir alguma coisa numa delas :P

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
adriano_bat

Boas, podes juntar o head file <conio.h> e antes de colocares return 0 ou antes de fechar a chaveta metes getch();

Assim o programa só fecha após teres clicado no <ENTER>. :(

#include <conio.h>
int main()
{
         getch();
         return 0;
}


"If A is a success in life, then A equals x plus y plus z. Work is x; y is play; and z is keeping your mouth shut." - Einstein

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
KTachyon

O system("PAUSE"), para além de não ser portável gasta demasiados recursos em relação à opção indicada pelo pmg. É preferível não se utilizar essa "funcionalidade".


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Baderous

Boas, podes juntar o head file <conio.h> e antes de colocares return 0 ou antes de fechar a chaveta metes getch();

Assim o programa só fecha após teres clicado no <ENTER>. :(

#include <conio.h>
int main()
{
         getch();
         return 0;
}

Esta é uma má solução, não é cross-platform.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
adriano_bat
Boas, podes juntar o head file <conio.h> e antes de colocares return 0 ou antes de fechar a chaveta metes getch();

Assim o programa só fecha após teres clicado no <ENTER>.

Código (C++): [seleccione]

#include <conio.h>

int main()

{

        getch();

        return 0;

}

Esta é uma má solução, não é cross-platform.

Qual é então a melhor opção para impedir o programa de encerrar automaticamente? Tirando a opção de ir à directoria do programa através da linha de comando.


"If A is a success in life, then A equals x plus y plus z. Work is x; y is play; and z is keeping your mouth shut." - Einstein

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pmg

Desculpa la, mas ...

Tu fazes um programa para calcular numeros primos. Quando fica pronto verificas que afinal nao e isso que querias: o que querias era um programa para calcular numeros primos e parar no fim do calculo.

Se o paragrafo de cima se aplica a tua situacao (tirando a parte dos numeros primos) a solucao em C (nao sei C++, por isso e que e C) mais cross-platform e menos "chateante" e:

#include <stdio.h>
/* waitforENTER devolve 1 se o utilizador carregou em ENTER
** ou 0 se o input chegou ao fim sem um ENTER */
int waitforENTER(const char *msg) {
    int ch; /* IMPORTANTE! ch tem de ser int! */
    if (msg) {
        printf("%s", msg);
        fflush(stdout);
    }
    while (((ch = getchar()) != '\n') && (ch != EOF)) /* void */;
    return ch == '\n';
}

e que podes usar assim:

int main(void) {
    /* calcular numeros primos */
    waitforENTER(NULL); /* ou waitforENTER("Carrega em ENTER"); */
}

Se o paragrafo nao se te aplica ... altera a tua maneira de chamar o programa ... ou redirecciona o input e output para ficheiros ...


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
KTachyon

Qual é então a melhor opção para impedir o programa de encerrar automaticamente? Tirando a opção de ir à directoria do programa através da linha de comando.

cin.get();


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
ProgrammingLikeABoss

cin.get();

Entao se puser antes esta linha de codigo, nao tenho que mudar o header pois nao? Posso deixar como iostream?

E onde ponho esta linha de codigo?

cumps~

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
KTachyon

Entao se puser antes esta linha de codigo, nao tenho que mudar o header pois nao? Posso deixar como iostream?

Exactamente.

E onde ponho esta linha de codigo?

Antes do programa terminar, para que a linha de comandos não feche automaticamente.


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
adriano_bat

Ok obrigado pelo esclarecimento. :(


"If A is a success in life, then A equals x plus y plus z. Work is x; y is play; and z is keeping your mouth shut." - Einstein

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
adriano_bat

Eu coloquei o cin.get(); mas continua a fechar após a conclusão do programa.


"If A is a success in life, then A equals x plus y plus z. Work is x; y is play; and z is keeping your mouth shut." - Einstein

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.