Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 1
Регистрация: 20.04.2015
Сообщений: 88
1

Классы и типы данных

27.05.2015, 12:08. Просмотров 1034. Ответов 8
Метки нет (Все метки)

Имеется такая программа, предназначена для подсчета максимального рейтинга. Скажу сразу, программа не моя. Так вот в чем загвоздка, в ответе выдает -8.58993e Значит ошибка в типе данных, пожалуйста помогите исправить..
Вот скрин
Классы и типы данных

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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
#include<string>
#include<iostream>
using namespace std;
const int l = 5;
class Students
{
private:
    string name;
    string last_name;
    int num;
    int scores[l];
    float average_ball;
    int kol;
public:
    Students(void);
    ~Students(void);
    void set_name(string);
    string get_name();
    void set_last_name(string);
    string get_last_name();
    void set_num(int);
    void set_scores(int[]);
    void calculate_average_ball();
    float get_average_ball();
    int get_kol();
};
 
Students::Students()
{
    name = "Василий";
    last_name = "Пупкин";
    num = 26;
    for (int i = 0; i<l; i++)
        scores[i] = 0;
    average_ball = 0.0;
    kol = 0;
}
 
Students::~Students()
{
    cout << "Memory has been cleaned. Good bye." << endl;
}
 
void Students::set_name(string student_name)
{
    Students::name = student_name;
}
 
string Students::get_name()
{
    return name;
}
 
void Students::set_last_name(string student_last_name)
{
    Students::last_name = student_last_name;
}
 
string Students::get_last_name()
{
    return last_name;
}
/*
void Students::set_num(int n)
{
    Students::num = n;
}
*/
void Students::set_scores(int scores[])
{
    int n[100];
    int max = n[0];
    int sc[l];
    
    for (int i = 0; i<l; i++)
    {
        if (sc[i]>max)
            max = sc[i];
        average_ball = sc[i]  ;
    }
    
}
 
float Students::get_average_ball()
{
    return average_ball;
}
 
int Students::get_kol()
{
    return kol;
}
 
 
int main()
{
    string student_name;
    string student_last_name;
    int sc[l], n, k;
 
    // Создание объекта класса Student
    Students My_student;
 
    // Ввод имени с клавиатуры
    cout << "Familii: ";
    getline(cin, student_name);
    My_student.set_name(student_name);
 
    cout << "Nomera: ";
    getline(cin, student_last_name);
    My_student.set_last_name(student_last_name);
 
    for (int i = 0; i < l; ++i) {
        cout << "Rayting " << i + 1 << ": ";
        cin >> sc[i];
    }
 
    My_student.set_scores(sc);
    //My_student.get_average_ball();
 
    // Выводим данные по студентam
    cout << "Best rayting " << My_student.get_name() << " "<< " is "
        << My_student.get_average_ball() << endl;
    system("pause");
    return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.05.2015, 12:08
Ответы с готовыми решениями:

Типы данных: есть ли универсальный тип, который может заменить все типы данных в Си?
Добрый вечер! Был бы очень признателен, если бы Вы помогли бы мне понять нижеследующие вопросы:...

Типы данных: чем отличается тип данных int от float?
Всем привет! Помогите пожалуйста, чем отличается тип данных int от float?

Типы данных
Помогите пожалуйста решить проблему с типами данных. C++ только начинаю учить, поэтому не знаю,...

типы данных
на Си реализовать: (не С++) построить функцию, возвращающую все байты заданного вещественного х в...

8
51 / 42 / 24
Регистрация: 18.09.2014
Сообщений: 116
27.05.2015, 13:06 2
Diwate, дайте тестовые данные, вставьте то, что вы вводите в консоль на форум.
0
0 / 0 / 1
Регистрация: 20.04.2015
Сообщений: 88
27.05.2015, 14:37  [ТС] 3
Вводить можете любые данные, главное что бы максимальный элемент правильно определяло.
0
40 / 40 / 36
Регистрация: 13.04.2015
Сообщений: 83
27.05.2015, 14:49 4
Цитата Сообщение от Diwate Посмотреть сообщение
C++
1
int n[100]; int max = n[0];
массив n не инициализирован, max присвоен мусор, вот он и выводится.
1
0 / 0 / 1
Регистрация: 20.04.2015
Сообщений: 88
27.05.2015, 15:06  [ТС] 5
C++
1
2
int n[5] = {0,0,0,0,0};
    int max = n[0];
Не помогло, может Вы напишете код, пожалуйста.
0
40 / 40 / 36
Регистрация: 13.04.2015
Сообщений: 83
27.05.2015, 16:39 6
Цитата Сообщение от Diwate Посмотреть сообщение
может Вы напишете код, пожалуйста
Лучше скажи полное условие задачи, а то не совсем понятно какие методы должны быть и что они должны делать.
1
0 / 0 / 1
Регистрация: 20.04.2015
Сообщений: 88
27.05.2015, 19:22  [ТС] 7
Разработать класс - СТУДЕНТ. В закрытой части определить данные: фамилия, номер
зачетной книжки, рейтинг. Определить конструкторы, деструктор и методы установления и чтение значений полей данных. Вывести на экран фамилию студента с максимальным рейтингом.
-----
Мне хотя бы рейтинг вывести
0
40 / 40 / 36
Регистрация: 13.04.2015
Сообщений: 83
28.05.2015, 00:06 8
Лучший ответ Сообщение было отмечено Diwate как решение

Решение

В условии задачки есть где разогнаться, как вариант решения:
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
#include <iostream>
 
class Student {
    private:
        std::string surname;
        int number;
        int rating;
    public:
        Student(const std::string& surname="default", int number=0, int rating=0) :
            surname(surname), number(number), rating(rating) {}
 
        ~Student() {}
 
        const std::string& getSurname() const {
            return surname;
        }
        const int getNumber() const {
            return number;
        }
        const int getRating() const {
            return rating;
        }
 
        void setSurname(std::string surname) {
            this->surname = surname;
        }
        void setNumber(int value) {
            this->number = value;
        }
        void setRating(int value) {
            this->rating = value;
        }
};
 
int main() {
    Student* array = new Student[4];
 
    array[0] = Student("Ivanov", 123456, 100);
    array[1] = Student("Petrov", 789123, 200);
    array[2] = Student("Sidorov", 456789, 150);
    array[3] = Student();
 
    int max = 0;
 
    for ( int i = 0; i < 4; i++ ) {
        if ( array[max].getRating() < array[i].getRating() ) {
            max = i;
        }
    }
 
    std::cout << "Student with max rating: " << array[max].getSurname() << std::endl;
 
    return 0;
}
1
0 / 0 / 1
Регистрация: 20.04.2015
Сообщений: 88
28.05.2015, 07:56  [ТС] 9
Цитата Сообщение от dcStep Посмотреть сообщение
В условии задачки есть где разогнаться, как вариант решения:
Код C++

#include <iostream>
class Student {
* * private:
* * * * std::string surname;
* * * * int number;
* * * * int rating;
* * public:
* * * * Student(const std::string& surname="default", int number=0, int rating=0) :
* * * * * * surname(surname), number(number), rating(rating) {}
~Student() {}
const std::string& getSurname() const {
* * * * * * return surname;
* * * * }
* * * * const int getNumber() const {
* * * * * * return number;
* * * * }
* * * * const int getRating() const {
* * * * * * return rating;
* * * * }
void setSurname(std::string surname) {
* * * * * * this->surname = surname;
* * * * }
* * * * void setNumber(int value) {
* * * * * * this->number = value;
* * * * }
* * * * void setRating(int value) {
* * * * * * this->rating = value;
* * * * }
};
int main() {
* * Student* array = new Student[4];
array[0] = Student("Ivanov", 123456, 100);
* * array[1] = Student("Petrov", 789123, 200);
* * array[2] = Student("Sidorov", 456789, 150);
* * array[3] = Student();
int max = 0;
for ( int i = 0; i < 4; i++ ) {
* * * * if ( array[max].getRating() < array[i].getRating() ) {
* * * * * * max = i;
* * * * }
* * }
std::cout << "Student with max rating: " << array[max].getSurname() << std::endl;
return 0;
}
Благодарю. Пришлось вставить библиотеку #include <string> т.к. не компилировалось. Выручили.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.05.2015, 07:56

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Типы данных
Здравствуйте! В результате программа должна выводить типы данных переменных и их значения. Но...

Типы данных
Мне задали в университете лабораторную работу. Написать программу вычисления среднего массивов...

Типы данных
Какого типа мне нужна переменная, чтобы принимала во такое число: 100000000000000 (15 цифр) ???

Типы данных C++
Подскажите какие вещественные и целые типы самые большие и маленькие


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.