Resolvido;
o seu programa tem o cabeçalho errado.
vc deveria usar
#include <iostream>
#include <stdio.h>
com isso, eu tentei compilar e tive todos esses erros ( chamei isso de a.c
pois preguiça):
$ g++ -Wall a.c
a.c: In function ‘int main()’:
a.c:16:51: warning: format ‘%s’ expects argument of type ‘char*’, but argument 2 has type ‘int*’ [-Wformat=]
scanf("%s %i", &Turma[i].matricula);
^
a.c:16:51: warning: format ‘%i’ expects a matching ‘int*’ argument [-Wformat=]
a.c:23:65: warning: format ‘%s’ expects argument of type ‘char*’, but argument 2 has type ‘int’ [-Wformat=]
scanf("%s %f %f %f", Turma[i].matricula, &Turma[i].notas);
^
a.c:23:65: warning: format ‘%f’ expects argument of type ‘float*’, but argument 3 has type ‘float (*)[3]’ [-Wformat=]
a.c:23:65: warning: format ‘%f’ expects a matching ‘float*’ argument [-Wformat=]
a.c:23:65: warning: format ‘%f’ expects a matching ‘float*’ argument [-Wformat=]
a.c:26:27: error: expected ‘)’ before ‘turma’
Aluno ImprimeTurma(Turma turma, notas nota);
^
a.c:26:40: error: expected ‘)’ before ‘nota’
Aluno ImprimeTurma(Turma turma, notas nota);
^
a.c:26:44: error: no matching function for call to ‘Aluno::Aluno(Aluno [5], Aluno&)’
Aluno ImprimeTurma(Turma turma, notas nota);
^
a.c:9:3: note: candidate: Aluno::Aluno()
} Aluno;
^
a.c:9:3: note: candidate expects 0 arguments, 2 provided
a.c:9:3: note: candidate: Aluno::Aluno(const Aluno&)
a.c:9:3: note: candidate expects 1 argument, 2 provided
a.c:27:6: error: name lookup of ‘i’ changed for ISO ‘for’ scoping [-fpermissive]
for(i = 0; i < 5; i++)
^
a.c:27:6: note: (if you use ‘-fpermissive’ G++ will accept your code)
a.c:29:3: error: ‘soma’ was not declared in this scope
soma = notas[i] + soma;
^
a.c:29:15: error: no match for ‘operator[]’ (operand types are ‘Aluno’ and ‘int’)
soma = notas[i] + soma;
^
a.c:30:3: error: ‘media’ was not declared in this scope
media = CalculaMediaAluno(soma/3);
^
a.c:30:35: error: ‘CalculaMediaAluno’ was not declared in this scope
media = CalculaMediaAluno(soma/3);
^
a.c:32:36: error: expected ‘)’ before ‘turma’
printf("Aluno %d - Media = %f\n" turma[i].matricula, turma[i].media);
^
a.c:32:56: error: ‘turma’ was not declared in this scope
printf("Aluno %d - Media = %f\n" turma[i].matricula, turma[i].media);
então vamos la
Primeiro: decida se vc vai usar C ou C++
printf / scanf são mais comuns em programas C ( alguem pode discordar de mim ). em C++ vc tem iostream
que te oferece os streams cin
e cout
para entrada e saida que podem ser muito mais faceis de lidar.
https://www.inf.pucrs.br/~pinho/PRGSWB/Streams/streams.html
Dito isso, o seu programa tem tantos problemas que fica realmente dificil te ajudar. por exemplo, isso:
Aluno ImprimeTurma(Turma turma, notas nota);
é um prototipo de uma função. ela indica ao compilador “oh, se vc encontrar uma função ImprimeTurma
então saiba q ela retorna um Aluno e ela recebe esses parametros”
o lugar de prototipo de função é no começo do arquivo fonte. não dentro de uma função.
detalhe q no caso vc tem que usar
ImprimeTurma(turma); /* vamos assumir que Turma com T maisculo eh um problema de digitação */
e isso é uma função void.
re-leia o exercicio. reflita. bola pra frente
Também acho mais fácil, mas o código para completar está em C. Logo, pensei que o professor queria que fosse em C não em C++. Ele não disse nada sobre mudar isso.