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

Ajuda Em Exercicio


Angelo Augusto

Pergunta

o exercicio é o seguinte.

considere uma disciplina que adota o seguinte criterio de aprovação, os alunos fazem duas provas(P1, P2)inicias, se a media nessas provas for maior ou igual a 5,0, e se nenhuma das duas notas for inferior a 3,0, o aluno passa direto. Caso contrario, o aluno faz uma terceira prova(p3)a media é calculada considerando-se essa terceira nota e a maior das notas P1 e P2. Neste caso o aluno é aprovadp se a media final for maior ou igual a 5,0. O programa devera contemplar um total de 5 alunos e devera ser usado uma estrutura heterogenea de dados (STRUCT) para a confecção do problema. O programa devera apresentar na tela a media de todos os alunos bem como se cada aluno foi reprovado ou aprovado !!!

Desde já muito obrigado !!!

Conto com a juda de todos vocês!

Link para o comentário
Compartilhar em outros sites

11 respostass a esta questão

Posts Recomendados

  • 0

Uma opção para usar estrutura para definir o tipo "aluno" + ou - assim (não vou usar C, :P ):

aluno

- matrícula (ou nome, sei lá, algo que identifique o camarada...)

- p1

- p2

- resultado parcial

- p3

- resultado final

É só um exemplo rápido... pode melhorar!

Ao registrar a p2, você calcula a média do aluno e registra o resultado parcial, tipo "aprovado" ou "prova final" (no caso "aprovado", joga este valor também para o resultado final). Quando for registrar p3, idem, só que para o resultado final (e só registre p3 para os que possuem "prova final" em seu resultado parcial). Se quiser, crie um campo para armazenar a média também...

Deu para entender?

Link para o comentário
Compartilhar em outros sites

  • 0

Caro amigo, olha so o que tentei!!! mas não ta dando certo !!! A logica esta errada me parece! se souber me ajude!!1

muito obrigado!!!

#include <iostream.h>

#include <conio.h>

struct aluno{

char nome[10];

float prova1,prova2,prova3;

};

void main()

{

aluno a[5];

char nomea[10], nomeb[10];

int i,conta,contb;

float soma, media;

for (i=0; i<5; i++)

{

cout<<"Digite o nome do aluno";

cin>>a.nome;

cout<<"Digite a notas da primeira prova:";

cin>>a.prova1;

cout<<"Digite a notas da segunda prova:";

cin>>a.prova2;

if ((a.prova1>=3.0) && (a.prova2>=3.0))

{

conta ++;

nomea = a.nome;

}

elseif((a.prova1 < 3.0) && (a.prova2 < 3.0))

{

conta ++;

nomeb=a.nome;

}

soma = a.prova1 + a.prova2;

}

media = soma / 2;

if((media >= 5.0) && (prova1 >= 3.0) && (prova2 >= 3.0))

{

for(i=0;i<conta;i++)

{

cont<<"O aluno Aprovado!!!";<<nomea;

cout<<"a media do aluno e:";<<media;

}

}

if((media <= 5.0) || (prova1 < 3.0) || (prova2 < 3.0))

{

for(i=0;i<contb;i++)

{

cont<<"digite a nota da terceira prova:";

cin>>a.prova3;

}

}

}

Editado por Angelo Augusto
Link para o comentário
Compartilhar em outros sites

  • 0

Cara, sua estrutura tá legal, seu algoritmo tá meio bagunçado... Re-escreva o algoritmo seguindo a lógica do enunciado, que é bastante simples. Sugiro alterar a ordem da interface com o usuário. Tipo:

1. Obter nota p1 dos 5 alunos; (como se fosse inserida durante o período letivo... só para parecer mais realista!)

2. Obter nota p2 dos 5 alunos;

3. Calcular as médias;

4. Verificar quem obteve aprovação e quem não teve (comparar a média com o valor 5 e verificar se quem obteve média para aprovação não teve nota abaixo de 3);

5. Obter nota p3 dos alunos ainda não aprovados;

6. Calcular as médias desses alunos;

7. Exibir uma tabela com os dados consolidados, tipo:

ALUNO           P1      P2      P3      MÉDIA   RESULTADO
--------------- ------- ------- ------- ------- ---------
Fulano Um       2,5     6,0     8,0     7,00    APROVADO
Fulano Dois     7,0     4,5     -       5,75    APROVADO
Fulano Três     4,0     5,5     3,0     4,25    REPROVADO
Fulano Quatro   8,0     9,0     -       8,5     APROVADO
Fulano Cinco    8,5     2,0     6,0     7,25    APROVADO

[Edit]

Êpa, esqueci de mencionar que deve também obter os nomes dos alunos... aff

Editado por CSML sistemas
Link para o comentário
Compartilhar em outros sites

  • 0
Ta osso não consigo nem fu.... fazer esse ngocio .... não sei o que estou fazer do de errado !!!

E o pior que esse programinha ai vale 10 pontos em estrutura de dados!!!

É melhor seguir as instruções do amigo acima, mas seu código está no rumo certo.

Basta algumas modificações.

Coloque todos os cálculos dentro do laço, vou te dar um exemplo:

// aqui

if ((a[i].prova1>=3.0) && (a[i].prova2>=3.0)) // esse aluno já foi aprovado, então:
{
   media = (a[i].prova1 + a[i].prova2) / 2;
   cout << "Aluno " << a[i].nome << " Aprovado com media: " << media; 
}
// aqui finaliza a unica situacao que o aluno passa direto. Media >= 5.0 e prova1 >= 3.0 e prova2 >= 3.
else
{




}

agora dentro do else, voce deve pedia a nota de prova3, verificar quem é maior prova1 ou prova2, fazer o cálculo da média e exibir os resultados.

;)

Link para o comentário
Compartilhar em outros sites

  • 0

kandrade, valeu pela força!!

fiz o programinha aqui e acho que esta certo.... Mas o problema agora é que estou sem compilador aqui no meu serviço

se puder compila-lo e depois me dizer se esta de acordo ficaria muito grato !!!

OU desde já muito obrigado !

#include <iostream.h>
#include <conio.h>
struct aluno{
     char nome[10];
     float prova1,prova2,prova3;
    };
void main()
{
  aluno a[5];
  int i,maior=0;
  float media; 

  for (i=0; i<5; i++)
  {
      cout<<"Digite o nome do aluno:";
      cin>>a[i].nome;
      cout<<"Digite a nota da primeira prova:";
      cin>>a[i].prova1;
      cout<<"\nDigite a nota da segunda prova:";
      cin>>a[i].prova2;
      if (a[i].prova1 > a[i].prova2)
        {
         maior = a[i].prova1;
        }
      else
        {
         maior = a[i].prova2;
        }
      if ((a[i].prova1>=3.0) && (a[i].prova2>=3.0)) 
        {
           media = (a[i].prova1 + a[i].prova2) / 2;
           cout << "Aluno " << a[i].nome << " Aprovado com media: " << media; 
        }
      else 
        {
           cout<<"\nDigite a nota da terceira prova:";
           cin>>a[i].prova3;
           media = (maior + a[i].prova3) / 2; 
        }
      if ((maior >=3.0) && (a[i].prova3>=3.0))
        {
           cout << "Aluno " << a[i].nome << " Aprovado com media: " << media;
        }
     else
        {
           cout << "Aluno " << a[i].nome << " Reprovado com media: " << media;
        }
  }
getch();
}

Link para o comentário
Compartilhar em outros sites

  • 0

tem só um errinho:

Caso contrario, o aluno faz uma terceira prova(p3)a media é calculada considerando-se essa terceira nota e a maior das notas P1 e P2. Neste caso o aluno é aprovadp se a media final for maior ou igual a 5,0.

corrigindo

if ( media >= 5.0)
{
    cout << "Aluno " << a[i].nome << " Aprovado com media: " << media;
}
else
{
    cout << "Aluno " << a[i].nome << " Reprovado com media: " << media;
}
outro detalhe, isso é dentro do else:
else 
     {
        cout<<"\nDigite a nota da terceira prova:";
        cin>>a[i].prova3;
        media = (maior + a[i].prova3) / 2; 
        
        if ((maior >=3.0) && (a[i].prova3>=3.0))
          {
             cout << "Aluno " << a[i].nome << " Aprovado com media: " << media;
          }
       else
          {
             cout << "Aluno " << a[i].nome << " Reprovado com media: " << media;
          }
     }

Editado por kandrade
detalhe do else
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,4k
×
×
  • Criar Novo...