Форум программистов, компьютерный форум CyberForum.ru

Ошибка в коде? - C++

Восстановить пароль Регистрация
 
engine76
2 / 2 / 0
Регистрация: 04.03.2014
Сообщений: 65
04.04.2014, 22:06     Ошибка в коде? #1
Доброго времени суток. Учусь по книге Дейтелов "Как программировать на С++"...Перепечатал оттуда пример в компилятор, но он не компилируется. Код:

Заголовок GradeBook.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <string>
using std::string;
 
class GradeBook {
public:
    const static int students = 10;
    GradeBook(string, const int[]);
    void setCourseName(string);
    string getCourseName();
    void displayMessage();
    void processGrades();
    int getMinimum();
    int getMaximum();
    double getAverage();
    void outputBarChart();
    void outputGrades();
private:
    string courseName;
    int grades[students];
}
Определения функций GradeBook.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#include <iostream>
#include <iomanip>
using namespace std;
 
#include "GradeBook.h"
 
GradeBook::GradeBook(string name, const int gradesArray[]) {
    setCourseName(name);
    for(int grade = 0; grade < students; grade++)
        grades[grade] = gradesArray[grade];
}
void GradeBook::setCourseName(string name) {
    courseName = name;
}
string GradeBook::getCourseName() {
    return courseName;
}
void GradeBook::displayMessage() {
    cout << "Welcome to the grade book for\n" << getCourseName() << "!" << endl;
}
void GradeBook::processGrades() {
    outputGrades();
    cout << "\nClass average is " << setprecision(2) << fixed << getAverage() << endl;
    cout << "Lowest grade is " << getMinimum()
        << "\nHighest grade is " << getMaximum() << endl;
    outputBarChart();
}
int GradeBook::getMinimum() {
    int lowGrade = 100;
    for(int grade = 0; grade < students; grade++) {
        if(grades[grade] < lowGrade)
            lowGrade = grades[grade];
    }
    return lowGrade;
}
int GradeBook::getMaximum() {
    int highGrade = 0;
    for(int grade = 0; grade < students; grade++) {
        if(grades[grade] > highGrade)
            highGrade = grades[grade];
    }
    return highGrade;
}
double GradeBook::getAverage() {
    int total = 0;
    for(int grade = 0; grade < students; grade++)
        total += grades[grade];
    return static_cast<double>(total) / students;
}
void GradeBook::outputBarChart() {
    cout << "\nGrade distributoin: " << endl;
    const int frequencySize = 11;
    int frequency[frequencySize] = {0};
    for(int grade = 0; grade < students; grade++)
        frequency[grades[grade] / 10]++;
    for(int count = 0; count < frequencySize; count++) {
        if(count == 0)
            cout << " 0-9: ";
        else if(count == 10)
            cout << " 100: ";
        else
            cout << count * 10 << "-" << (count * 10) + 9 << ": ";
        for(int stars = 0; stars < frequency[count]; stars++) 
            cout << "*";
        cout << endl;
    }
}
void GradeBook::outputGrades() {
    cout << "\nThe grades are:\n\n";
    for(int student = 0; student < students; student++)
        cout << "Student " << setw(2) << student + 1 << ": "
        << setw(3) << grades[student] << endl;
}
Сама программа testGrade.cpp
C++
1
2
3
4
5
6
7
8
9
#include "GradeBook.h"
 
int main() {
    int gradesArray[GradeBook::students] = {87, 68, 94, 100, 83, 78, 85, 91, 76, 87};
    GradeBook myGradeBook("CS101 Introduction to C++ Programming", gradesArray);
    myGradeBook.displayMessage();
    myGradeBook.processGrades();
    return 0;
}

Компилятор пишет это:

1>e:\in_game\my_models_projects\mvs_projects\testproject\tst\testgrade.cpp(3): error C2628: недопустимый "GradeBook" с последующим "int" (возможно, отсутствует ";")
1>e:\in_game\my_models_projects\mvs_projects\testproject\tst\testgrade.cpp(3): error C3874: возвращаемый тип "main" должен быть "int", а не "GradeBook"
1>e:\in_game\my_models_projects\mvs_projects\testproject\tst\testgrade.cpp(8): error C2664: GradeBook::GradeBook(const GradeBook &): невозможно преобразовать параметр 1 из "int" в "const GradeBook &"
1> Причина: невозможно преобразовать "int" в "const GradeBook"
1> Ни один конструктор не смог принять исходный тип, либо разрешение перегрузки конструктора неоднозначно
1> GradeBook.cpp
1>e:\in_game\my_models_projects\mvs_projects\testproject\tst\gradebook.cpp(7): error C2533: GradeBook::{ctor}: конструкторы не разрешены для возвращаемого типа
1> Создание кода...
1>
1>СБОЙ построения.

Что тут не так, вроде все проверил, ошибок не нашел.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.04.2014, 22:06     Ошибка в коде?
Посмотрите здесь:

C++ ошибка в коде
Ошибка в коде C++
Ошибка в коде C++
C++ Ошибка в коде
Ошибка в коде C++
C++ Ошибка в коде
C++ Ошибка в коде
Ошибка в коде C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,154
Завершенные тесты: 1
04.04.2014, 22:16     Ошибка в коде? #2
А Вас не учили ставить ; в конце объявления класса?
Yandex
Объявления
04.04.2014, 22:16     Ошибка в коде?
Ответ Создать тему
Опции темы

Текущее время: 07:47. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru