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

Ajuda simples em C

Discussão em 'Programação' iniciada por skaziftw, 18 de Maio de 2007. (Respostas: 66; Visualizações: 3999)

  1. -------
    #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
     
  2. Platanos

    Platanos I quit My Job for Folding

    Coloca no fim um getchar(); que isso já não fecha :)
     
  3. 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 :'(
     
  4. Oops, tinha o return first.
     
  5. marzvolta

    marzvolta What is folding?

    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: 18 de Maio de 2007
  6. jahred

    jahred Power Member

    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...
     
  7. Datwo

    Datwo I'm cool cuz I Fold

    Ou então corres o programa a partir da linha de comandos em vez de dar só dois cliques.
     
  8. Pipi_Romagnoli

    Pipi_Romagnoli Power Member

    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
     
  9. alph

    alph Power Member

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

    Esta tua condição deveria ser um and (&&) em vez de um or (||). :)
     
  10. Pipi_Romagnoli

    Pipi_Romagnoli Power Member

    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
     
  11. El_UnO

    El_UnO 1st Folding then Sex

    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
     
  12. S.T.E.E.L.

    S.T.E.E.L. Power Member

    Essa cenas dos ||'s e &&'s é sempre uma verdadeira dor de cabeça para mim... :D
     
  13. Pipi_Romagnoli

    Pipi_Romagnoli Power Member

    Pois a logica é diferente da logica d pascal. E com os ifs como é que isso funciona?
     
  14. Datwo

    Datwo I'm cool cuz I Fold

    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.
     
  15. Pipi_Romagnoli

    Pipi_Romagnoli Power Member

    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
     
  16. El_UnO

    El_UnO 1st Folding then Sex

    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
     
  17. alph

    alph Power Member

    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.
     
  18. Pipi_Romagnoli

    Pipi_Romagnoli Power Member

    Entao, mas se (escolha1=='s') && (escolha1=='n') é impossivel, porque é que quando meti assim resolveu o problema?
     
  19. Datwo

    Datwo I'm cool cuz I Fold

    não pode ter resolvido....
     
  20. Pipi_Romagnoli

    Pipi_Romagnoli Power Member

    Ok ja vi a falha looooooool n tinha os "!". Duvida idiota. Btw percebe alguma coisa de listas? Nao consigo perceber isso. CUmpz
     

Partilhar esta Página