2015-12-01 4 views
0

мне нужно написать программу, которая считывает студентов баллов, получает лучший результат, а затем присваивает оценки, основанные на следующей схеме:Назначение класса из массива

1) Оценка является А, если оценка является> = лучший - 10

2) Оценка B, если оценка равна> = best - 20;

3) Оценка C, если оценка равна> = best - 30;

4) Оценка D, если оценка> = самая лучшая - 40;

5) Оценка в противном случае.

Программа предлагает пользователю ввести общее количество учеников, а затем предложит пользователю ввести все баллы и завершить, показывая оценки. Моя проблема исходит от вытягивать классы из массива, это то, что я до сих пор:

#include <iostream> 
#include <string> 

using namespace std; 

int studentGrade(int* gradeArray, int numberStudents) 
{ 
    int grade = 0; 
    int score, best; 
    for (int i = 0; i < numberStudents; i++) 
    { 
     grade += gradeArray[i]; 
    } 

    return (grade); 
} 
int main() 
{ 
    int numberStudents; 
    cout << "Enter the number of students: "; 
    cin >> numberStudents; 

    int* gradeArray = new int[numberStudents]; 

    for (int i = 0; i < numberStudents; i++) 
    { 
     int score; 
     cout << "Enter the students Score: "; 
     cin >> score; 

     gradeArray[i] = score; 
     cout << gradeArray[i]; 
    } 


} 
+1

Что именно вы застряли на? Пожалуйста, будьте более конкретными. Кроме того, вы просачиваете 'gradeArray', так как вы не' delete [] 'it. Вместо этого рассмотрите использование 'std :: vector'. –

+0

Другая проблема возникает, когда ввод неверен! Ввод всегда должен быть проверен перед его использованием: 'if (std :: cin >> score) {...} else {...}'. –

ответ

0

Когда вы пишете функцию, отличную от основных() вы должны вызвать его из основных или какой-либо другой функции к мы его выполняем. Нигде в своем коде вы не называется ваш

int studentGrade(int* gradeArray, int numberStudents){} 

Если вы хотите, чтобы выполнить функциюstudentGrade вы должны вызывать его с соответствующими параметрами, вызов должен быть из основных like--

studentGrade(gradeArray,numberStudents); 

As ваша функция studentGrade вернет значение int, которое вы можете назвать так же;

int finalGrade=studentGrade(gradeArray,numberStudents); 

и напечатать значение, возвращенное studentGrade просто:

std::cout<<finalGrade<<std::endl; 

Когда вы вызываете функцию таким образом, что ваш код будет просто суммировать все данные в массиве gardeArray и вернуть it.So остальные математику вы можете сделать сами.

И как вы выделили память для массива с новым, вы должны удалить в конце вашей программы по следующим образом

delete []gradeArray; 

Кроме того, что ваша основная функция возвращает Int, как вы объявили его

int main() 

так что в конце вашего кода вы должны иметь

return 0; 

так добавить этот в вашем главном после вашего для петель

int finalGrade =studentGrade(gradeArray,numberStudents); 
std::cout<<finalGrade<<std::endl; 
delete []gradeArray; 
return 0; 

Теперь вы можете двигаться вперед, GOODLUCK :)

+0

И как предложил Реми Лебо, попробуйте использовать std :: векторы. – Rusty

Смежные вопросы