Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sandro Fonseca

funcoes/ arrays /menu com opcoes

Recommended Posts

ALGUEM ME AJUDA A FAZER ESSE EXERCIO (PRECISO DO CODIGO FONTE)

 

 

Construa um programa em C constituído por várias funções que servirão de apoio ao controlo de notas dos alunos. Propõe-se a criação de um conjunto de funções para realizar as seguintes tarefas:

a) Escrever uma função para verificar se a nota é válida (notas de 0.00 a 20.00).

b ) Criar um array onde seja possível armazenar os seguintes dados:

a. Nr. do Aluno

b. Nota

Escrever uma função que leia este array. O número máximo de alunos é 50. Este número pode ser alterado no código e não na execução do programa.

c) Refazer a alínea a), agora com o array referido em b ).

d) Escrever uma função calcule a média, o máximo, o mínimo e a diferença entre o máximo e o mínimo das notas dos alunos da cadeira de Programação I do curso de Engenharia Informática. A estrutura base é a da alínea anterior. Dizer qual o aluno com nota máxima e mínima.

e) Refazer a alínea b ) de forma que valide as notas, utilizando a alínea c).

f) Escrever um menu com opções relativas às alíneas b ) e d).

g) Construir a função main( ) que deve invocar a função da alínea anterior; verificar qual a opção do utilizador e invocar a função correspondente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual sua pergunta?

como faco esse exercico?

para a alinea a) fiz

#include<stdio.h>
#include<conio.h>
main()
{
     float nota;
     printf("Digite uma nota\n");
     scanf("%f",&nota);
     if (nota>=0.00 && nota<=20.00)
     printf("Nota Valida");
     else 
     printf("Nota Invaida");
     getche();
}

 

para a alinea b ) fiz

#include<stdio.h>
#include <string.h>
#include<stdlib.h>
main()
{
float nota[50];
int num_aluno[50];
int i;
for(i=0;i<50;i++)
{
                printf("Informe o Nr. do aluno %d: ",i+1);
                scanf("%d",&num_aluno[i]);
                printf("Informe nota do aluno Nr. %d: ",num_aluno[i]);
                scanf("%f",&nota[i]);          
}
for(i=0;i<50;i++)
{
printf("\n O Aluno Nr. %d tem Nota de: %3.2f\n\n",num_aluno[i],nota[i]); 
}
system("pause");
return(0);
}

 

AINDA NAO CONSEGUI FAZER OS OUTROS

???

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na c) você junta a a) com a b ), ou seja quando pedir o scanf da nota tem que checar se tal nota é valida. Em d) você cria uma variável para guardar o máximo e o minimo, a máximo inicia em 0 e a minima em 21, e toda vez que achar um valor maior que a máximo anterior guarde esse valor, e toda vez que achar um valor menor que a minima anterior guarde o valor, para a media faça uma variável que guarde o total, então toda vez que ler uma nova nota junte-a ao valor total e depois divida pelo total de alunos que existem, no caso 50.

Pelo que entendi a e) é igual a c), e as duas ultimas faça um menu utilizando printf e cria uma variável opcao para guardar um valor que você especificar para a chamada da função, um switch ou if-elses resolvem a determinação da função escolhida.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na c) você junta a a) com a b ), ou seja quando pedir o scanf da nota tem que checar se tal nota é valida. Em d) você cria uma variável para guardar o máximo e o minimo, a máximo inicia em 0 e a minima em 21, e toda vez que achar um valor maior que a máximo anterior guarde esse valor, e toda vez que achar um valor menor que a minima anterior guarde o valor, para a media faça uma variável que guarde o total, então toda vez que ler uma nova nota junte-a ao valor total e depois divida pelo total de alunos que existem, no caso 50.

Pelo que entendi a e) é igual a c), e as duas ultimas faça um menu utilizando printf e cria uma variável opcao para guardar um valor que você especificar para a chamada da função, um switch ou if-elses resolvem a determinação da função escolhida.

c)

#include<stdio.h>
#include <string.h>
#include<stdlib.h>
main()
{
float nota[50];
int num_aluno[50];
int i;
for(i=0;i<50;i++)
{
                printf("\n\nDigite o Nr. do aluno: ");
                scanf("%d",&num_aluno[i]);
                printf("Digite a nota do aluno Nr. %d: ",num_aluno[i]);
                scanf("%f",&nota[i]);     
}
for(i=0;i<50;i++)
{
if (nota[i]>=0.00 && nota[i]<=20.00)
                printf("\nNota Valida\n O Aluno Nr.%d tem Nota de: %3.2f\n\n",num_aluno[i],nota[i]);
                else 
                printf("\nNota Invalida\n Para Aluno Nr.%d \n\n",num_aluno[i]);   
}
system("pause");
}

mas como declaro as variaveis.

tentei fazer a alinea d) com 3 alunos

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include <string.h>
aluno()
{
float nota[50];
int num_aluno[50];
int i;
for(i=0;i<3;i++)
{
                printf("Digite o Nr. do aluno: ");
                scanf("%d",&num_aluno[i]);
                printf("Digite nota do aluno Nr. %d: ",num_aluno[i]);
                scanf("%f",&nota[i]);          
}
}

float maximo(int i)
{
float maximo=0;
for(i=1;i<=3;i++)
{
if(maximo<i)
maximo=i;
}
}
float minimo(int i)
{
float minimo=20;
for(i=1;i<=3;i++)
{
if(minimo<i)
minimo=i;
}
}
float media(float maximo(), float minimo())
{
return(maximo()+minimo())/2; 
}
float diferenca(float maximo(), float minimo())
{
return maximo() - minimo();
}
float n_maxima(int i)
{
for(i=1;i<=3;i++)
{
printf("nota maxima é do aluno nº: %d\n",i);
}
}
float n_minima(int i)
{
for(i=1;i<=3;i++)
{
printf("nota minimo é do aluno nº: %d\n",i);
}
}

main()
{
     int i;
     float media(float maximo(), float minimo());
     float diferenca(float maximo(), float minimo());
     aluno();
     printf("\nA Nota Maxima/Minima  dos Alunos da caderia de Programacao I:\n Maxima-%f\n Minima-%f",maximo,minimo);
     printf("\n A media eh: %f  e A Diferenca eh: %f\n\n",media,diferenca);
     system("pause");
}

MAS NAO CONSIGO IVOCAR BEM AS FUNCOES

COMO FACO PARA QUE CONSIGA OS VALORES DO MAXIMO/MINIMO/MEDIA/DEFERENCA?

(SE CORRIGIR O CODIGO SERIA OTIMO)

 

 

---------------------------------------------------------------------------------

 

 

'AINDA NAO CONSEGUI FAZER OS OUTROS

???' não é uma pergunta muito boa. Tente seguir os conselhos acima, e se tiver problemas, faça uma pergunta objetiva e clara.

mas como declaro as variaveis.

tentei fazer a alinea d) com 3 alunos

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include <string.h>
aluno()
{
float nota[50];
int num_aluno[50];
int i;
for(i=0;i<3;i++)
{
                printf("Digite o Nr. do aluno: ");
                scanf("%d",&num_aluno[i]);
                printf("Digite nota do aluno Nr. %d: ",num_aluno[i]);
                scanf("%f",&nota[i]);          
}
}

float maximo(int i)
{
float maximo=0;
for(i=1;i<=3;i++)
{
if(maximo<i)
maximo=i;
}
}
float minimo(int i)
{
float minimo=20;
for(i=1;i<=3;i++)
{
if(minimo<i)
minimo=i;
}
}
float media(float maximo(), float minimo())
{
return(maximo()+minimo())/2; 
}
float diferenca(float maximo(), float minimo())
{
return maximo() - minimo();
}
float n_maxima(int i)
{
for(i=1;i<=3;i++)
{
printf("nota maxima é do aluno nº: %d\n",i);
}
}
float n_minima(int i)
{
for(i=1;i<=3;i++)
{
printf("nota minimo é do aluno nº: %d\n",i);
}
}

main()
{
     int i;
     float media(float maximo(), float minimo());
     float diferenca(float maximo(), float minimo());
     aluno();
     printf("\nA Nota Maxima/Minima  dos Alunos da caderia de Programacao I:\n Maxima-%f\n Minima-%f",maximo,minimo);
     printf("\n A media eh: %f  e A Diferenca eh: %f\n\n",media,diferenca);
     system("pause");
}

MAS NAO CONSIGO IVOCAR BEM AS FUNCOES

COMO FACO PARA QUE CONSIGA OS VALORES DO MAXIMO/MINIMO/MEDIA/DEFERENCA?

(SE CORRIGIR O CODIGO SERIA OTIMO)

 

 

---------------------------------------------

 

 

fiz a alinea d) mas nao consigo obter o valor da nota minima do vector nota

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include <string.h>
#define TMN 3
void nota1(float nota[])
{

int i;
for(i=1;i<=TMN;i++)
{

                printf("Digite nota do aluno Nr. %d: ",i);
                scanf("%f",&nota[i-1]);          
}
}

float maximo(float nota[])
{
     int i;
float m=0;
for(i=0;i<=(TMN-1);i++)
{

if(nota[i]<nota[i+1])
m=nota[i+1];
}
return m;

}

float minimo(int nota[])
{
int i;
float z=0;
for(i=0;i<(TMN-1);i++)
{
if(nota[i]<nota[i+1])
z=nota[i];
}
return z;
}

float diferenca(float maximo, float minimo)
{
return maximo-minimo;
}

float media( float nota[])
{for(i=1;i<=TMN;i++)
float m,soma=0;
int i;
for(i=0;i<TMN;i++)
{
                 soma=soma+nota[i];
                 m=soma/(i+1);
}
return m;
}

main()
for(i=1;i<=TMN;i++)
{
     float nota[TMN];
     int i;
     float c,b,m;
     nota1(nota);
     c=maximo(nota);
     b=minimo(nota);
     m=media (nota);
     printf("\nA Nota Maxima/Minima  dos Alunos da caderia de Programacao I:\n\n Maxima=%.2f\n Minima=%.2f",c,B);
     printf("\n\nMedia = %.2f  e  Diferenca = %.2f\n\n",m,diferenca(c,B));
     system("pause");
}

como declaro a variael em float minimo(int nota[]) ???

Compartilhar este post


Link para o post
Compartilhar em outros sites
float maximo(float nota[])
{
     int i;
     float m=0;
     for(i=0;i<TMN;i++)
     {

       if(m<nota[i])
          m=nota[i];
     }
     return m;
}

float minimo(int nota[])
{
    int i;
    float z=21;
    for(i=0;i<TMN;i++)
    {
        if(z>nota[i])
           z=nota[i];
    }
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

a)

nota()
{
     float nota;
     printf("Digite uma nota\n");
     scanf("%f",&nota);
     if (nota>=0.00 && nota<=20.00)
     printf("Nota Valida");
     else 
     printf("Nota Invalida");

}

 

b )

#define TMN 50
nota()
{
float nota[TMN];
int num_aluno[TMN];
int i;
for(i=0;i<TMN;i++)
{
                printf("Digite o Nr. do aluno: ");
                scanf("%d",&num_aluno[i]);
                printf("Digite nota do aluno Nr. %d: ",num_aluno[i]);
                scanf("%f",&nota[i]);          
}
for(i=0;i<TMN;i++)
{
printf("\n O Aluno Nr. %d tem Nota de: %.2f\n\n",num_aluno[i],nota[i]); 
}
system("pause");
}

 

c)

linha()
{
      int z;
      for(z=1;z<=80;z++)
      putchar('-');
      putchar('\n');
}
main()
{
float nota[TMN];
int num_aluno[TMN];
int i,z;
for(i=0;i<TMN;i++)
{
                printf("\n\nDigite o Nr. do aluno: ");
                scanf("%d",&num_aluno[i]);
                printf("Digite a nota do aluno Nr. %d: ",num_aluno[i]);
                scanf("%f",&nota[i]);     
}
linha();
for(i=0;i<TMN;i++)
{
if (nota[i]>=0.00 && nota[i]<=20.00)

                printf("\nNota Valida\n O Aluno Nr.%d tem Nota de: %3.2f\n\n",num_aluno[i],nota[i]);
                else 
                printf("\nNota Invalida\n Para Aluno Nr.%d \n\n",num_aluno[i]);                   
}
linha();
}

 

d)

nota1(float nota[])
{
    int i;
    for(i=1;i<=TMN;i++)
    {
                       printf("Digite nota do aluno Nr. %d: ",i);
                       scanf("%f",&nota[i-1]);          
    }
}
    float maximo(float nota[])
{
     int i;
     float m=0;
     for(i=0;i<TMN;i++)
     {
                       if(m<nota[i])
                       m=nota[i];
     }
     return m;
}
float minimo(float nota[])
{
    int i;
    float z=21;
    for(i=0;i<TMN;i++)
    {
                      if(z>nota[i])
                      z=nota[i];
    }
    return z;
}
float diferenca(float maximo, float minimo)
{
     return maximo-minimo;
}
float media( float nota[])
{
     float m,soma=0;
     int i;
     for(i=0;i<TMN;i++)
     {
                       soma=soma+nota[i];
                       m=soma/(i+1);
     }
     return m;
}  

void calculo()
{
     float nota[TMN];
     int i;
     float c,b,m;
     nota1(nota);
     c=maximo(nota);
     b=minimo(nota);
     m=media (nota);
     printf("\nA Nota Maxima/Minima  dos Alunos da cadeira de Programacao I:\n\n Maxima=%.2f\n Minima=%.2f",c,B);
     printf("\n\nMedia = %.2f  e  Diferenca = %.2f\n\n",m,diferenca(c,B));
     system("pause");
}

 

f)

linha()
{
      int z;
      for(z=1;z<=80;z++)
      putchar('-');
      putchar('\n');
}
menu()
{
linha();
printf("\t\tFERRAMENTA DE APOIO DE NOTAS\n\t\t\tPROGRAMACAO I\n\t\tCURSO DE ENGENHARIA INFORMATICA\n");
linha();
printf("\n\t (1)ARMAZENAR DADOS DOS ALUNOS \n\n CALCULAR:(2) NOTA MAXIMA  (3) NOTA MINIMA  (4) MEDIA  (5) DIFERENCA \n\n\t (0) SAIR\n\n");
linha();
printf("\nESCOLHA UMA OPCAO: ");

}

 

g)

main()
{
     int op; 
     do 
     {
              menu();
              scanf("%d",&op);
              switch(op)
              {
                        case 1: nota();break;
                        case 2: calculo();break;
                        case 0: break;
                        default : printf("\n\n\tVoce escolheu uma opcao que nao existe!!!!\n");
                        system("pause");break;
              }
     }
     while (op != 0);
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Codigo fonte do programa final

#include<stdio.h>
#include <string.h>
#include<stdlib.h>
#define TMN 3
nota()
{
float nota[TMN];
int num_aluno[TMN];
int i;
for(i=0;i<TMN;i++)
{
                printf("Digite o Nr. do aluno: ");
                scanf("%d",&num_aluno[i]);
                printf("Digite nota do aluno Nr. %d: ",num_aluno[i]);
                scanf("%f",&nota[i]);          
}
for(i=0;i<TMN;i++)
{
printf("\n O Aluno Nr. %d tem Nota de: %.2f\n\n",num_aluno[i],nota[i]); 
}
system("pause");
}
nota1(float nota[])
{
    int i;
    for(i=1;i<=TMN;i++)
    {
                       printf("Digite nota do aluno Nr. %d: ",i);
                       scanf("%f",&nota[i-1]);          
    }
}
    float maximo(float nota[])
{
     int i;
     float m=0;
     for(i=0;i<TMN;i++)
     {
                       if(m<nota[i])
                       m=nota[i];
     }
     return m;
}
float minimo(float nota[])
{
    int i;
    float z=21;
    for(i=0;i<TMN;i++)
    {
                      if(z>nota[i])
                      z=nota[i];
    }
    return z;
}
float diferenca(float maximo, float minimo)
{
     return maximo-minimo;
}
float media( float nota[])
{
     float m,soma=0;
     int i;
     for(i=0;i<TMN;i++)
     {
                       soma=soma+nota[i];
                       m=soma/(i+1);
     }
     return m;
}  

void calculo()
{
     float nota[TMN];
     int i;
     float c,b,m;
     nota1(nota);
     c=maximo(nota);
     b=minimo(nota);
     m=media (nota);
     printf("\nA Nota Maxima/Minima  dos Alunos da cadeira de Programacao I:\n\n Maxima=%.2f\n Minima=%.2f",c,B);
     printf("\n\nMedia = %.2f  e  Diferenca = %.2f\n\n",m,diferenca(c,B));
     system("pause");
}   
linha()
{
      int z;
      for(z=1;z<=80;z++)
      putchar('-');
      putchar('\n');
}
void menu()
{
system("cls");
linha();
printf("\t\tFERRAMENTA DE APOIO DE NOTAS\n\t\t\tPROGRAMACAO I\n\t\tCURSO DE ENGENHARIA INFORMATICA\n");
linha();
printf("\n\t (1)ARMAZENAR DADOS DOS ALUNOS \n\n\t (2)CALCULAR: NOTA MAXIMA NOTA MINIMA DIFERENCA E MEDIA \n\n\t (0) SAIR\n\n");
linha();
printf("\nESCOLHA UMA OPCAO: ");

}
main()
{
     int op; 
     do 
     {
              menu();
              scanf("%d",&op);
              switch(op)
              {
                        case 1: nota();break;
                        case 2: calculo();break;
                        case 0: break;
                        default : printf("\n\n\tVoce escolheu uma opcao que nao existe!!!!\n");
                        system("pause");break;
              }
     }
     while (op != 0);
}

espero que esteja correcto

???

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.