Calcular média e retornar ao inicio

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


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...:)
 
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!
 
Back
Topo