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

Calcular média e retornar ao inicio

Discussão em 'Programação' iniciada por fabio.silva, 16 de Dezembro de 2008. (Respostas: 5; Visualizações: 741)

  1. fabio.silva

    fabio.silva Power Member

    Boas!
    Sou novato na linguagem c e fiz um programa em que se calculava a média, e depois o computador perguntava se gostava de fazer outra média, ao qual respondiamos sim ou nao.Só não estou a conseguir fazer o pc voltar atrás, aqui vai o código-fonte:

    Código:
    #include <stdio.h>
    #include <stdlib.h>
    #include <conio.h>
    #include <math.h>
    int main()
    {
    float a,b;
    char c;
    printf("Digita um numero inteiro: ");
    scanf("%f",&a);
    printf("Digita um numero inteiro: ");
    scanf("%f",&b);
    printf("A media dos tres numeros informados e: %4.2f\n\n",float((a+b))/2);
    printf("Queres fazer outra operação?(sim/nao)\n ");
    scanf("%s", &c);
    if (c == 'sim' )
    main();//o erro talvez seja aqui//
    else
    system("PAUSE");
    return 0;
    }
    
    depois de responder "sim", ele nao volta ao inicio, simplesmente fecha.
    Obrigado!
     
    Última edição pelo moderador: 16 de Dezembro de 2008
  2. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    Não sei se será isso, mas penso que para comparar strings se use o strcmp e não o ==. No entanto, posso estar enganado.
     
  3. AliFromCairo

    AliFromCairo Power Member

    Na verdade, o problema está na comparação que fazes. Não podes comparar um char (character) com a string "sim". Ou passas a comparar com o char 's', ou utilizas a função strcmp.
     
  4. Baderous

    Baderous Banido

    Para além de que não se invoca a main() em nenhum lado no código. A main é invocada apenas uma vez em toda a execução do programa e essa invocação está a cargo do SO. Para fazeres o que queres, o melhor será usar um ciclo do...while:

    Código:
    do {
    //código da média e etc
    printf("Queres fazer outra operação?(sim/nao)\n ");
    //leitura da string
    } while (strcmp(stringLida,"nao")!=0);
     
    Última edição: 16 de Dezembro de 2008
  5. fabio.silva

    fabio.silva Power Member


    Obrigado a todos! Fiz como disse o AliFromCairo(utilizei "s/n" em vez de "sim/nao") e deu resultado, mas obrigado também ao Baderous e ao Kayvlim porque as dicas eram certas e irei utilizá-las para melhorar...:)
     
  6. r3pek

    r3pek Power Member

    e já agora, para não variar muito, NÃO utilizar o system!!! dá muito menos trabalho escrever getchar(); e assim funciona em todo o lado!
     

Partilhar esta Página