• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

migg

porque que isto acontece

5 mensagens neste tópico

Olá, tenho 13 anos e estou a aprender programação em c pela Net estou a fazer um programa para praticar ainda não o acabei desculpem não meter comentários mas n estou habituado a isso mas tenho de me habituar aqui está o programa:

#include <stdlib.h>
#include <stdio.h>

int main()
{
   int asd, numtest;
   float media, a, b, c, d;

   do {
printf("          Clique 1 para fazer a media dos teste___________________nnn");
printf("n              Clique 2 para ver a data dos testes________________________n");
scanf("%d", &asd);
   } while ((asd < 1) || (asd > 2));

   switch (asd)
   {
   case 1:
printf("nnQuantos testes tives-te?nn");
printf("1nn");
printf("2nn");
printf("3nn");
printf("4nn");
scanf("%d", &numtest);

if (numtest == 1)
{
    printf("Insira a nota dos testes nn");
    scanf("%f", &a);

    media = a / 1;
}
if (numtest == 2)
{
    printf("Insira a nota dos testes nn");
    scanf("%f", &a);
    scanf("%f", &b);

    media = a + b / 2;

    printf("tnA media e de:%f ", media);
}
if (numtest == 3)
{
    printf("Insira a nota dos testes nn");
    scanf("%f", &a);
    scanf("%f", &b);
    scanf("%f", &c);

    media = a + b + c / 3;

    printf("tnA media e de:%f ", media);
}
if (numtest == 4)
{
    printf("Insira a nota dos testes nn");
    scanf("%f", &a);
    scanf("%f", &b);
    scanf("%f", &c);
    scanf("%f", &d);

    media = a + b + c + d / 4;

    printf("tnA media e de:%f ", media);
}
break;

   case 2:
break;
   }
   system("Pause");
   return (0);
}

A duvida é a seguinte quando acabei de fazer a opção 1 do programa compilei para ver como estava só que eu quando experimento o programa ao fazer por exemplo a media de 2 testes meto 50 no primeiro teste e 50 no segundo e deveria dar 50 mas dá 70 o que é que está mal?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O problema é nas precedências.

Nesta linha:

media=a+b/2;

O programa divide B por 2 e só depois disto é que soma o A, quando o correcto é somar o A com o B e dividir por 2. Correctamente é assim:

media=(a+b)/2;

Corrige também os outros cálculos de média porque também estão mal.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já agora, escreve-se "quantos testes tiveste".

E uma dica:

Estás a fazer código para cada um dos casos (1,2,3 ou 4 testes). Era mais simples se usasses um ciclo while ou for, por exemplo, que perguntasse "n" vezes que nota teve e calculasse a média.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

obrigado ,podes explicarme como fazer isso  sff

adciona-me:migg-f@hotmail.com

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu não quero explicar-te como fazer isso porque assim perdes a oportunidade de chegar lá sozinho. Pelo que vi neste código tens todas as bases para o fazer, só precisas de pensar. Se chegares a alguma coisa e estiveres com dúvidas diz.

0

Partilhar esta mensagem


Link 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