Ir ao conteúdo

Posts recomendados

Postado
int consultaAlunos( int vMatr[], int vFaltas[], float vMedias[], int qt) {

printf("sua matricula é :",vMatr[2]);

printf("sua faltas sao :",vFaltas[2]);

printf("sua media é :",vMedias[2]);

return consultaAlunos;
}

float main(void)
{
    int vMatr[5] = {1,2,3,4,5};
    int vFaltas[5] = {10,4,3,2,7};
    float vMedias [5] = {10,8,3,2,7};
    printf("", consultaAlunos);
            }

 

  • Obrigado 1
Postado
int consultaAlunos( int vMatr[], int vFaltas[], float vMedias[], int qt)
{
  printf("sua matricula é :",vMatr[2]);
  printf("sua faltas sao :",vFaltas[2]);
  printf("sua media é :",vMedias[2]);
  return consultaAlunos;
}

 

consultaAlunos retorna um int, mas você está retornando a própria função, mas sem os argumentos. E se desse certo ia chamar a função, que ia chamar a função,  que ia chamar a função,  que ia chamar a função,  que ia chamar a função ...

 

Acho que entendeu... 

 

Retorne um int. Ou --- se a função era de fato para ser recursiva --- ajuste uma condição de parada....

  • Obrigado 1
Postado

@arfneto

#include<stdio.h>
#include<locale.h>
  
  //CLOQUEI UM RETURN 0;, MAS porque OS PRINTFS não SAO EXECUTADOS?


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

printf("sua matricula é %d:",vMatr[2]);

printf("sua faltas sao %d:",vFaltas[2]);

printf("sua media é %f:",vMedias[2]);

return 0;
}

float main(void)
{
    int vMatr[5] = {1,2,3,4,5};
    int vFaltas[5] = {10,4,3,2,7};
    float vMedias [5] = {10,8,3,2,7};
    consultaAlunos
            }

 

  • Obrigado 1
Postado
agora, alan.modesto disse:
float main(void)
{
    int vMatr[5] = {1,2,3,4,5};
    int vFaltas[5] = {10,4,3,2,7};
    float vMedias [5] = {10,8,3,2,7};
    consultaAlunos
            }

 

????? Agora está errado do outro lado.

 

Já pensou no caso da função? Não declarou como

 

1 minuto atrás, alan.modesto disse:
int consultaAlunos( int vMatr[], int vFaltas[], float vMedias[], int qt)

 

?

 

Então não seria justo passar 4 parâmetros a cada vez que fosse chamar?

 

    int vMatr[5] = {1,2,3,4,5};
    int vFaltas[5] = {10,4,3,2,7};
    float vMedias [5] = {10,8,3,2,7};

 

Não precisa e geralmente não deve declarar os tamanhos. O compilador sabe contar o tamanho do  vetor se está inicializando o vetor todo....

 

  • Curtir 1
Postado

@arfneto

#include<stdio.h>
#include<locale.h>


void consultaAlunos( int vMatr[], int vFaltas[], float vMedias[], int qt) {
int i;
for (i = 0; i < vMatr[i]; i++){
printf("sua matricula é %d:",vMatr[i]);
}
for (i = 0; i < vFaltas[i]; i++){
printf("sua faltas sao %d:",vFaltas[i]);
}
for (i = 0; i < vMedias[i]; i++){
printf("sua media é %f:",vMedias[i]);
}
return 0;
}

void main()
{
    int vMatr[] = {1,2,3,4,5};
    int vFaltas[] = {10,4,3,2,7};
    float vMedias [] = {10,8,3,2,7};
    consultaAlunos;
            }
                           
                           // mexi dentro da funçao agora, a parte do declarar, não entendi o que voce falou.

 

  • Curtir 1
Postado
3 minutos atrás, alan.modesto disse:
 mexi dentro da funçao agora, a parte do declarar, não entendi o que voce falou.

 

Eu não entendo o que está tentando fazer. Está experimentando sem critério? Não faça isso. Vai perder muito tempo.

 

Você tem um livro? Uma apostila que descreva o que é um função e o que são argumentos ao menos?

 

o que é consultaAlunos()? Porque agora é void?

 

E porque continua chamando sem argumentos se declarou como recebendo nada menos que 4?

 

A razão disso existir é que você pode ter muitos vetores de alunos e passando o nominho deles como argumento pode usar a mesma função para tratar todos. 

 

So que você simplesmente escreveu em main() :

 

consultaAlunos;

 

Então porque não copiou os loops ali mesmo simplesmente?

 

int i;
for (i = 0; i < vMatr[i]; i++){
printf("sua matricula é %d:",vMatr[i]);
}
for (i = 0; i < vFaltas[i]; i++){
printf("sua faltas sao %d:",vFaltas[i]);
}

 

Não escreva assim nunca. Só vai ter problemas.

 

Use

 


for (int i = 0; i < vMatr[i]; i++) printf("sua matricula é %d:",vMatr[i]);
for (int i = 0; i < vFaltas[i]; i++) printf("sua faltas sao %d:",vFaltas[i]);

 

  • DECLARE a variável de controle dentro do loop
  • não use chaves se o comando do loop só tem uma linha
  • está certo de que era isso que queria escrever? Qual o sentido dessa condição i< x[i]? Provavelmente queria escrever i < qt para mostrar o conteúdo do vetor todo....

 

  • Curtir 1
Postado

@arfneto po eu fui pesquisando no tempo que voce estava respondendo e consegui algo aqui, mas muito obrigado por me alertar, com a sua dica fui pesquisar e pasme eu não sabia declarar a funçao KKKK

void consultaAlunos( int vMatr[], int vFaltas[], float vMedias[]) {
int i;
for (i = 0; i < vMatr[i]; i++){
printf("\n sua matricula é %d:",vMatr[i]);
}
for (i = 0; i < vFaltas[i]; i++){
printf("\nsua faltas sao %d:",vFaltas[i]);
}
for (i = 0; i < vMedias[i]; i++){
printf("\n sua media é %f:",vMedias[i]);
}
}

void main()
{
    int vMatr[] = {1,2,3,4,5};
    int vFaltas[] = {10,4,3,2,7};
    float vMedias [] = {10,8,3,2,7};
    consultaAlunos (vMatr, vFaltas, vMedias);
            }

 

  • Curtir 1
Postado

@alan.modesto não mude as coisas a olho.

  • Porque tirou um parâmetro???
  • porque insiste com as chaves?
  • porque não colocou a declaração como te expliquei?
  • porque declara main(0 como void() se retorna int?
  • 59 minutos atrás, alan.modesto disse:
    float main(void)

     

  • porque retornava float no programa original???
  • como acha que seu loop vai terminar? Se antes não tinha usado o argumento certo agora nem tem porque você tirou
  • 4 minutos atrás, alan.modesto disse:
    i < vFaltas[i]

     

Porque essa condição iria terminar o loop corretamente?

 

 

 

  • Curtir 1
Postado

@alan.modesto   esse primeiro código  não está compilando por Que você não colocou o ponto_e_vírgula ,  comum em Quase todos os finais de linha na linguagem c / c++ / c#  / java etc . . .  ,  e assim ele compila , mas não faz nada , por que não foi enviado nenhum  valor para a função ,  que apesar de fazer parte desse código  se encontra fora da função main e assim de dentro de uma função não se tem conhecimento de nada que esteja em outra função , e o que se faz dentro dessa função é apenas ali mesmo ,  então por isso os dados precisam ser enviados para ele , para que se possa manipular esses dados ,  e de novo se quer que outra função use esses dados que estão dentro dessa função ,  precisa enviar para ela , e então esse código modificado poderia ser assim  :

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<locale.h>

//CLOQUEI UM RETURN 0;, MAS porque OS PRINTFS não SAO EXECUTADOS?

int consultaAlunos(int vMatr[], int vFaltas[], float vMedias[], int qt) 
{
    printf("sua matricula eh --: %5d    \n\
          \rsua faltas sao ----: %5d    \n\
          \rsua media eh ------: %5.2f\n\n", 
          vMatr[2], vFaltas[2], 
          vMedias[2] );
    return 0;
}
float main(void)
{
    int   vMatr  [5] = {  1,2,3,4,5 };
    int   vFaltas[5] = { 10,4,3,2,7 };
    float vMedias[5] = { 10,8,3,2,7 };
    consultaAlunos;  // aqui faltou um ponto e virgula e os parenteses com os dados dentro
    consultaAlunos( vMatr, vFaltas, vMedias, sizeof(vMatr)/* ou o numero 5 */ );
}

 

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...