Come on Nate, about the reference mistake:
'i' was not declared in this scope
for(i = 0; i <= qt; i++){ ...}
What was missing was to put even the type of variable i, because in this context it has to be declared as a variable, and that will be used as control of the loop of repetition for
. Staying like this:
for(int i = 0; i <= qt; i++){ ...}
I thought it was funny that I developed a code a few days ago to do the same operation, just like you thought. Calculate the arithmetic mean of a certain number of notes reported by the user.
I implemented my solution using class, objects, dynamic arrays and I find it interesting to leave it to you here, to study it and analyze it. Goes below:
#include <iostream>
using namespace std;
class Calculadora{
private:
double resultado;
int qtdNotas;
double *nota = new double;
public:
//Setters
void setResultado(double resultado){
this->resultado = resultado;
}
void setQtdNotas(int qtdNotas){
this->qtdNotas = qtdNotas;
}
void setNota(double *nota){
for(int i=0; i <= getQtdNotasArray(); i++){
*(this->nota + i) = *(nota + i);
}
}
//Getters
double getResultado(){
return this->resultado;
}
int getQtdNotasArray(){
return this->qtdNotas - 1;
}
int getQtdNotas(){
return this->qtdNotas;
}
//Média
double calculaMedia(){
double resultado = 0;
int i = 0;
int qtdNotas = this->getQtdNotas();
while(i <= this->getQtdNotasArray()){
resultado += *(this->nota + i);
i++;
}
resultado = resultado / (double)qtdNotas;
return this->resultado = resultado;
}
};
int main()
{
int qtdNotas; //Recebe quantidade de notas informadas pelo usuário, a média é baseada nessa quantidade
double *nota = new double; //Declaração de variável ponteiro, utilizada para posterior criação do array dinâmico
Calculadora *o = new Calculadora; //Cria o objeto "o" e utiliza e o utiliza para reservar espaço na memória
cout << "Programa Media de um Aluno. Abaixo serao solicitadas as notas dos 4 bimentres para ser calculada a media final.\n";
cout << "A media do aluno sera baseada em quantas notas? ";
cin >> qtdNotas; cout << endl;
o->setQtdNotas(qtdNotas); //Insere quantidade de notas sobre qual o calculo será feito
for(int i=0; i <= o->getQtdNotasArray(); i++){
cout << i + 1 << " : ";
cin >> *(nota + i); cout << endl; //Guarda na variável ponteiro, em seu devido espaço(array), os valores das medias inseridas pelo usuário
}
o->setNota(nota); //pega referência do ponteiro onde foram alocadas as notas e passa pela função para ser atribuída a um atributo dentro da classe
o->calculaMedia(); //com todos os dados já inseridos nos atributos do objeto, este método somente manda executar o calculo da média aritmética simples, e manda guardar o resultado em um atributo de nome resultado para somente ser recuperado posteriormente
cout << "Notas recolhidas com sucesso! A media para este aluno e de: " << o->getResultado(); //Método que somente recupera o resultado dos calculos já realizados anteriormente
return 0;
}
I am running my programs in IDE Code::Blocks, using gcc compiler and C++ 11 ISO standard. Here is my contribution, incidentally I am starting in C++ so any serious error of technical aspect feel free to report.