Ajuda simples em C

skaziftw

Membro
-------
#include <stdio.h>

main()
{
printf("Ola mundo!\n");

}
------

Alguem me sabe dizer o q meter para a janela não fechar logo!?
já tentei o system(pause); .. mas não deu
 
Epa mas por exemplo:
------
#include <stdio.h>

main()
{
int a, b, c;
printf("Entre o primeiro valor:");
scanf("%d", &a);
printf("Entre o segundo valor:");
scanf("%d", &b);
c = a + b;
printf("%d + %d = %d\n", a, b, c);
return 0;
getchar();
}
-------
o getchar não faz praticamente nada, a janela continua a fechar-se automaticamente :'(
 
mete o getchar antes do return 0, quando fazes return 0 na main o teu programa acaba! tens tudo o que está dps disso nao aparece

testa

Código:
#include <stdio.h>

int main()
{
    printf("Hello World\n");
    getchar();
    
    return 0;
}

e dps
Código:
#include <stdio.h>

int main()
{  
    return 0;

    printf("Hello World\n");
    getchar();
}

agora descobre as diferenças :)


EDIT: já descobriste :P
 
Última edição:
faz antes:

fflush ( stdin );
getchar();

porque só getchar tanto pode funcionar como pode não funcionar...

o que tavas a fazer mal no system(pause) é que tens que incluir aspas de maneira a ser system("pause"); mas não é aconselhado usar isso porque funciona no windows e no linux ardeu...
 
Boas, aproveitei este topico para nao estar a criar um novo. Tenho um problema quando estou nesta parte do menu:

if (escolha=='d'){
do{
fflush(stdin);
printf(
"\n Tem a certeza que pretende desistir? (s/n) \n");
scanf(
"%c",&escolha1);
if (escolha1=='s')
validarsaida=1;
if (escolha1=='n')
validarsaida=0;
}
while ((escolha1!='s') || (escolha1!='n'));
}

O que se passa é que quando digo que sim a pergunta de desistencia continua a ser feita e nao sai do ciclo... alguem me consegue ajudar? Cumpz
 
(escolha1!='s') || (escolha1!='n')

Esta tua condição deveria ser um and (&&) em vez de um or (||). :)
Sim tens razao. Mas agora gostaria que me explicasses isso... O and no pascal neste caso iria fazer com que o programa so saisse caso a escolha fosse 's' e 'n' ao mesmo tempo. Aqui é diferente pk? Acho que nao faz muito sentido. Com o ou seria ou num caso, ou no outro o programa iria sair.
Cumpz
 
Sim tens razao. Mas agora gostaria que me explicasses isso... O and no pascal neste caso iria fazer com que o programa so saisse caso a escolha fosse 's' e 'n' ao mesmo tempo. Aqui é diferente pk? Acho que nao faz muito sentido. Com o ou seria ou num caso, ou no outro o programa iria sair.
Cumpz

Se fazes um || basta que uma das condições se verifique que ele não sai do while. Logo na tua condição:

(escolha1!='s') || (escolha1!='n')

Se deres um 's' a primeira condição dá falsa e a segunda da verdadeira. O || das duas dá verdadeiro e não sai do ciclo :P
 
Pois a logica é diferente da logica d pascal. E com os ifs como é que isso funciona?

nos ifs as condições determinam se corres o ciclo ou não.

Código:
if (foo != max)
      foo++;

se foo fosse 4 e max fosse 5, o ciclo if era executado e foo passava a ser 5.
se foo fosse 5 e max tb o ciclo não era executado.
 
nos ifs as condições determinam se corres o ciclo ou não.

Código:
if (foo != max)
      foo++;

se foo fosse 4 e max fosse 5, o ciclo if era executado e foo passava a ser 5.
se foo fosse 5 e max tb o ciclo não era executado.
Nao era bem essa a resposta que queria. Tipo, imagina que tinha isto:
if ((tabela==0) || (tabela==1)
Neste caso qual o comportamento do programa? É que se for como o ciclo while, entao dado a tabela so poder ter 1 valor vai ser impossivel entrar nesse if. Cumpz
 
Nao era bem essa a resposta que queria. Tipo, imagina que tinha isto:
if ((tabela==0) || (tabela==1)
Neste caso qual o comportamento do programa? É que se for como o ciclo while, entao dado a tabela so poder ter 1 valor vai ser impossivel entrar nesse if. Cumpz

Não vai não :)

Imagina que a variavel tabela tinha o valor 1:

tabela == 0 -> FALSE
tabela == 1 -> TRUE

FALSE || TRUE dá TRUE e entra no if. Se tivesses um && aí sim, nunca entravas no if :P
 
A lógica no Pascal é igual à do C. É algebra booleana. O que tu tinhas,

(escolha1!='s') || (escolha1!='n')

é equivalente a (pelas leis de Morgan):

!((escolha1=='s') && (escolha1=='n'))

E se reparares,
(escolha1=='s') && (escolha1=='n') é impossível, porque escolha1 nunca pode ser 's' e 'n' ao mesmo tempo. Logo, a expressão daria sempre true, nunca saindo do ciclo. :)

Quanto à tua passagem do Pascal, estás a fazer confusão.
 
A lógica no Pascal é igual à do C. É algebra booleana. O que tu tinhas,

(escolha1!='s') || (escolha1!='n')

é equivalente a (pelas leis de Morgan):

!((escolha1=='s') && (escolha1=='n'))

E se reparares, (escolha1=='s') && (escolha1=='n') é impossível, porque escolha1 nunca pode ser 's' e 'n' ao mesmo tempo. Logo, a expressão daria sempre true, nunca saindo do ciclo. :)

Quanto à tua passagem do Pascal, estás a fazer confusão.
Entao, mas se (escolha1=='s') && (escolha1=='n') é impossivel, porque é que quando meti assim resolveu o problema?
 
Back
Topo