Ir para conteúdo
Fórum Script Brasil
  • 0

Calculo de media


ssMarcio

Pergunta

Ola pessoal estou com um pequeno problema, o meu professor pediu me um trabalho simples até que era de criar um programa em C que lesse a primeira nota de uma prova e determinasse quanto que o aluno precisaria tirar na segunda prova para ficar com a media minima de aprovação(6) e não precisar fazer uma prova susbtitutiva, pois bem eu fui criando e implementando meu código, eis que pensei caso o aluno precisasse fazer a substitutiva o programa iria comparar as tres notas tiradas por ele, descartaria a menor delas e faria uma media simples, pois bem, na hora de tirar a media meu programa sempre me retorna o valor de zero(0), alguém poderia me dar uma ajuda.

obrigado

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

int vetor[3],x, i, j;
int media;

main () 
{
     float n1, media;
     
     
     system ("color 1f");
     inicio:
            printf("\nEntre com o valor da primeira nota:\t");
            scanf("%f", &n1);
            fflush(stdin);
            if (n1<=1) {
                        printf("\nVoce tera que fazer prova substitutiva (P3).\n");
                        printf("\n\nAperter qualquer tecla para prosseguir...");
                        getchar();
                        system ("cls");
                        printf("Digite as suas notas.\n");
                      for (i=0; i<3; i++)
       {
           printf("%d nota:", i + 1);
           scanf("%d", &vetor[i]);
           fflush(stdin);
           }
           for (i=0; i<2; i++)
           {
               for (j=i+1; j<2; j++)
               {
                   if(vetor[i]<vetor[j])
                   {
                                        x=vetor[i];
                                        vetor[i]=vetor[j];
                                        vetor[j]=x; 
                   }
                }
          }
          media=(vetor[0] + vetor[1])/2;
          printf("\n A sua media e %d:", media);
          getchar();
          goto fim;
                        }
                      else if(n1>10){
                                printf("\nValor informado invalido, tente novamente.\n\n");
                                system("pause");
                                system ("cls");
                                goto inicio;
                                }
                                else 
                                media=(12 - n1);
                                printf("\nO aluno precisara tirar no minimo a nota %.2f para ficar com media 6.00!", media);
                                fim:
                                printf("\n\nPrecione qualquer tecla para sair...");
                                getchar();
                                 }

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Você complicou muito o código.

No começo criou duas variáveis com o mesmo nome (media).

Em vez de usar os goto, prefira usar um simples "do { ... } while(n1 > 10)", fica bem mais simples de entender o codigo.

Acho que a questão toda se resume ao calculo da media, certo? Você pega do usuário a primeira nota, X.

A segunda nota seria Y.

(X + Y) / 2 >= 6

x/2 + y/2 = 6

y/2 = 6 - x/2

y = 12 - x

Como você tem do usuário o valor de X, basta subtrair de 12 e você terá a nota que precisa pra saber se precisa fazer a outra prova ou não.

printf("\nEntre com o valor da primeira nota:\t");
scanf("%f", &n1);

if (n1 > 1) {
    n2 = 12 - n1;
    printf("\nO aluno precisa tirar %f pra passar por media", n2);
}

Bem, foi isso que eu entendi pela questão que você mandou. Desculpa aí se não é isso.

Link para o comentário
Compartilhar em outros sites

  • 0

Estou tendo problemas é com esse trecho abaixo, aonde o aluno não conseguiu obter uma nota logo na primeira prova e por isso ele tera que fazer a substitutiva, sendo assim entraria a nota da primeira prova, da segunda e da terceira (que é a substitutiva), ai o programa compara as tres notas descarta a menor delas e faz o calculo da média com as duas maiores.

printf("%d nota:", i + 1);
           scanf("%d", &vetor[i]);
           fflush(stdin);
           }
           for (i=0; i<2; i++)
           {
               for (j=i+1; j<2; j++)
               {
                   if(vetor[i]<vetor[j])
                   {
                                        x=vetor[i];
                                        vetor[i]=vetor[j];
                                        vetor[j]=x; 
                   }
                }
          }
          media=(vetor[0] + vetor[1])/2;
          printf("\n A sua media e %d:", media);

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...