Ir ao conteúdo
  • Cadastre-se

C questão de Função em Vetor em C


Posts recomendados

Estou aprendendo vetores, E gostaria de transformar um código que eu já tinha em Função. Em um novo código de com vetores. De acordo com o exercício.

Faça uma função que receba a quantidade de alunos de uma turma, um vetor com a matrícula dos alunos, um vetor
com as faltas dos alunos e um vetor com a média final do alunos. Esta função deve permitir que o usuário digite uma
matrícula e mostre a situação do aluno: RF ( se o número de faltas for >= 5), AP ( se a média for >= 6 e o número de faltas
< 5) ou RM ( se a média for < 6 e o número de faltas < 5).
Protótipo: void consultaAlunos( int vMatr[], int vFaltas[], float vMedias[], int qt);
Crie uma main com valores para os vetores para testar sua função.

 

void detPercentual(float CR, int area, float * pMin, float *pMax){
  if (CR >=9){
   ( * pMin)=30;
    if (area == 1) 
      (* pMax) = 40;
    else
     (* pMax) = 35;
    
  }
  else if (CR >=8){
    ( * pMin)=10;
    if (area == 1) 
      (* pMax) = 15;
    else
     (* pMax) = 12;
    
  }
  else if (CR >=7){
    (*pMin) = (*pMax) = 5;
  }
  else {
    (*pMin) = (*pMax) = 0;
  }
  return ;
}
void quebraMatr(int matr, int *pN, int*pD, int*pXXX){
  (*pN)= matr/10000;
  (*pD)= matr/1000%10;
  (*pXXX) = matr%1000;
  return;
}
int main(void){
  int matr,N,D,XXX;
  float CR,min,max;
  printf("Digite a matricula: ");
  scanf("%d",&matr);
  while (matr !=0){
      printf("Digite o CR: ");
      scanf("%f",&CR);
      quebraMatr(matr,&N,&D,&XXX);
      detPercentual(CR, N, &min, &max);
      printf("Matr: %d - Percentual mínimo: %.1f %% e máximo: %.1f %%",matr,min,max);
      printf("Digite a matricula: ");
      scanf("%d",&matr);
  } 
 
  return 0;
}

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

 

 

Qual a sua dúvida?

 

Use o botão code como descrito no post inicial. Veja a diferença:

 

    void consultaAlunos( int vMatr[], int vFaltas[], float vMedias[], int qt);

 

Inclua os headers. Alinhe o código com algum critério. 

 

#include <stdio.h>

void detPercentual(float CR, int area, float* pMin, float* pMax);
void quebraMatr(int matr, int* pN, int* pD, int* pXXX);

int main(void)
{
    int   matr, N, D, XXX;
    float CR, min, max;
    printf("Digite a matricula: ");
    scanf("%d", &matr);
    while (matr != 0)
    {
        printf("Digite o CR: ");
        scanf("%f", &CR);
        quebraMatr(matr, &N, &D, &XXX);
        detPercentual(CR, N, &min, &max);
        printf(
            "Matr: %d - Percentual mínimo: %.1f %% e máximo: %.1f %%",
            matr, min, max);
        printf("Digite a matricula: ");
        scanf("%d", &matr);
    }

    return 0;
}

void detPercentual(float CR, int area, float* pMin, float* pMax)
{
    if (CR >= 9)
    {
        (*pMin) = 30;
        if (area == 1)
            (*pMax) = 40;
        else
            (*pMax) = 35;
    }
    else if (CR >= 8)
    {
        (*pMin) = 10;
        if (area == 1)
            (*pMax) = 15;
        else
            (*pMax) = 12;
    }
    else if (CR >= 7)
    {
        (*pMin) = (*pMax) = 5;
    }
    else
    {
        (*pMin) = (*pMax) = 0;
    }
    return;
}

void quebraMatr(int matr, int* pN, int* pD, int* pXXX)
{
    (*pN)   = matr / 10000;
    (*pD)   = matr / 1000 % 10;
    (*pXXX) = matr % 1000;
    return;
}

 

Evite funções void. Em geral é um desperdício. Muitas vezes um erro. Uma função chamada detPercentual() por exemplo não deveria talvez retornar um double com um percentual??

 

main() deve ser a primeira função de seu programa, se possível em um arquivo separado

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...