Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
3 / 3 / 0
Регистрация: 07.12.2017
Сообщений: 584

Классы. Ошибки в коде

01.02.2019, 23:21. Показов 1148. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пытаюсь учить классы, пока сложно, куча ошибок вылазит. Помогите, пожалуйста, как их убрать?
Пытаюсь сделать вывод всей базы.
Задание: создать базу данных, которая содержит в себе: название программы, операционную систему, размер программы, дата записи.
Меню программы должно состоять из добавление объектов, вывода базы, удаления объектов, поиск, сортировки.
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
// ConsoleApplication1.cpp : Этот файл содержит функцию "main". Здесь начинается и заканчивается выполнение программы.
//
 
#include "pch.h"
#include <iostream>
#include <string>
using namespace std;
class CppStudio // имя класса
{
private: // спецификатор доступа private
    string nazvanie, // название программы
        os; // операционная система
    int razmer, //размер программы
        data; //дата записи
public: // спецификатор доступа public
    void message() // функция (метод класса) выводящая сообщение на экран вывод информ на экран
    {
        cout << "\n vvedeno \n";
    }
    void setDate(string date_nazv, string date_oss, int date_razm, int date_dat) 
    {
        nazvanie = date_nazv; // инициализация названия
        os = date_oss; // инициализация ос
        razmer = date_razm; // инициализация размера
        data = date_dat; // инициализация даты
    }
    void getDate() // отобразить введенную информацию
    {
        cout << "nazvanie: " << nazvanie << "\n" << " os: " << os << "\n" << "razmer: " << razmer << "\n" << "data: " << data << endl;
        system ("pause"); 
        system("cls");
    }
 
}; // конец объявления класса CppStudio
 
 
 
class s //класс вывода всей введеной информации
{
public:
    void v()
    {
        {cout << " baza: ";}
        void getDate() // отобразить введенную информацию
        {
            cout << "nazvanie: " << nazvanie << "\n" << " os: " << os << "\n" << "razmer: " << razmer << "\n" << "data: " << data << endl;
            system("pause");
            system("cls");
        }
    }
};
int main(int argc, char* argv[])
{
    int n=0;
    while (1) {
        cout << "MENU\n";
        cout << "1 - sozdat'/dobavit'" << endl << "2 - info pro bazy" << endl << "3 - ydalit'" << endl << "4 - poisk" << endl << "5 - sortirovka po nazvaniyam program" << endl;
        int a; cin >> a;
        switch (a)
        {
        case 1:
            string nazvanie, os;
            int razmer, data;
            cout << "vvedite \n";
            cout << "nazvanie: "; cin >> nazvanie;
            cout << "os: ";    cin >> os;
            cout << "razmer: ";  cin >> razmer;
            cout << "data: "; cin >> data;
            CppStudio objCppstudio; // объявление объекта
            objCppstudio.message(); // вызов функции класса message
            objCppstudio.setDate(nazvanie, os, razmer, data); // инициализация названия ос размера даты
            objCppstudio.getDate(); // отобразить все
            break;
        case 2: 
            s objs; // объявление объекта
            objs.v(); // вызов функции класса message
            objs.getDate(); // отобразить все
            break;
        }
    }
    
    
    
    system("pause");
    return 0;
}
Миниатюры
Классы. Ошибки в коде  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.02.2019, 23:21
Ответы с готовыми решениями:

Исправить ошибки в коде (классы)
есть написанный класс class student { protected: char registration_num; char name; char stbook_ID; int token; public: ...

Найти и исправить ошибки в коде (классы)
Помогите разобраться где ошибка #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;windows.h&gt; #include &lt;stdlib.h&gt; ...

Шаблонные классы: найти и исправить ошибки в коде
Разбираюсь тут с шаблонами, вроде сделал все как в работающей программе, но не компилируется #include &quot;stdafx.h&quot; #include...

11
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
02.02.2019, 01:28
Цитата Сообщение от a_lar Посмотреть сообщение
куча ошибок вылазит.
Так вам же ИДЕ показывает и точное место ошибок! А мы, увы! по вашему скрину не имеем удовольствия их увидеть.
А большинство ошибок - простейшие. Выходите на нужное место и внимательно смотрите.
1
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9005 / 4706 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
02.02.2019, 01:58
Цитата Сообщение от Байт Посмотреть сообщение
имеем удовольствия
Байт, а я в очередной раз шокирован тем фактом, что кто-то может не моргнув глазом дать студенту задание:
Цитата Сообщение от a_lar Посмотреть сообщение
создать базу данных
Вот уж действительно: -"СУБДа, СУБДы, СУБДе, СУБДою о СУБДе".
0
3 / 3 / 0
Регистрация: 07.12.2017
Сообщений: 584
02.02.2019, 02:20  [ТС]
Байт,
Миниатюры
Классы. Ошибки в коде  
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
02.02.2019, 05:42
a_lar, для начала, убери лишние скобки в 42 и 50 строках.
0
Мозгоправ
 Аватар для L0M
1745 / 1039 / 468
Регистрация: 01.10.2018
Сообщений: 2,138
Записей в блоге: 2
02.02.2019, 07:10
a_lar, я для вас накидал небольшой примерчик на вашу тему. Как я вижу, по поводу классов у вас в голове полная каша. А на самом деле всё просто: пока рассматривайте класс как контейнер, который умеет работать со своими данными и поддерживать их в непротиворечивом состоянии. Другие плюшки изучите позже.

В этом примере используется два класса: Program и std::list (из стандартной библиотеки). Каждый из них имеет свою зону ответственности и работает со своими данными.

Класс Program содержит данные об одной программе и умеет с ними работать: принять данные, вывести в поток в читабельном виде, вывести в поток и ввести из потока для для загрузки и сохранения.

Класс list<Program> - это двунаправленный список из элементов типа Program. Он умеет добавлять, удалять, сортировать элементы списка, а также предоставляет интерфейс для доступа к элементам (итераторы).

Примерчик несложный. Разберётесь.
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
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
#include <iostream>
#include <fstream>
#include <string>
#include <list>
#include <algorithm>
 
using namespace std;
 
class Program // имя класса
{
private: // закрытые члены класса
    string nazvanie;      // название программы
    string os;            // операционная система
    string date;          // дата записи
    int razmer;           // размер программы
 
public: // открытые члены класса
    Program() : razmer(0) {}
    string get_nazvanie() const { return nazvanie; }
    string get_os() const { return os; }
    string get_date() const { return date; }
    int get_razmer() const { return razmer; }
 
    void set(const string &date_nazv, const string &date_oss, int date_razm, const string &date_dat) {
        nazvanie = date_nazv;      // инициализация названия
        os = date_oss;             // инициализация ос
        razmer = date_razm;        // инициализация размера
        date = date_dat;           // инициализация даты
    }
    void write(ostream & ofs) const;
    void read(istream & ifs);
    friend ostream & operator << (ostream & os, const Program & pm);
}; // конец объявления класса Program
 
void Program::write(ostream & ofs) const {
    ofs <<
        nazvanie << "\n" <<
        os << "\n" <<
        date << "\n" <<
        razmer <<
        endl;
}
 
void Program::read(istream & ifs) {
    ifs >> nazvanie >> os >> date >> razmer;
}
 
ostream & operator << (ostream & os, const Program & pm) {
    return os <<
        "nazvanie: " << pm.nazvanie << "\n" <<
        "os      : " << pm.os << "\n" <<
        "razmer  : " << pm.razmer << "\n" <<
        "date    : " << pm.date <<
        endl;
}
 
 
 
int main(int argc, char* argv[]) {
    int choice;
 
    string nazvanie, os, date;
    int razmer;
    Program prog;
    list<Program> db;
 
    do {
        cout << "\nMENU\n";
        cout <<
            "1 - sozdat'/dobavit'" << endl <<
            "2 - info pro bazy" << endl <<
            "3 - ydalit'" << endl <<
            "4 - poisk" << endl <<
            "5 - sortirovka po nazvaniyam program" << endl <<
            "8 - zagruzit' bazu" << endl <<
            "9 - sohranit' bazu" << endl <<
            "0 - vyhod" << endl <<
            endl;
        cin >> choice;
        cin.ignore();
 
        switch (choice) {
        case 1:  // добавить
            cout << "vvedite \n";
            cout << "nazvanie: "; cin >> nazvanie;
            cout << "os: ";    cin >> os;
            cout << "razmer: ";  cin >> razmer;
            cin.ignore();
            cout << "date: "; cin >> date;
            prog.set(nazvanie, os, razmer, date);
            cout << "prinyato:\n" << prog << endl;
            db.push_back(prog);
            break;
        case 2:  // посмотреть базу
            cout << "baza:" << endl;
            for (const Program &p : db)
                cout << p;
            break;
        case 3:  // удалить программу
            {
                cout << "udalenie programmy" << endl;
                cout << "nazvanie: "; cin >> nazvanie;
                auto it = find_if(db.cbegin(), db.cend(), [nazvanie](const Program &p) { return p.get_nazvanie() == nazvanie; });
                if (it != db.cend()) {
                    db.erase(it);
                    cout << "programma udalena" << endl;
                }
                else
                    cout << "programma ne naydena" << endl;
            }
            break;
        case 4:  // поиск по названию
            {
                cout << "poisk programmy" << endl;
                cout << "nazvanie: "; cin >> nazvanie;
                auto it = find_if(db.cbegin(), db.cend(), [nazvanie](const Program &p) { return p.get_nazvanie() == nazvanie; });
                if (it != db.cend()) {
                    cout << *it << endl;
                }
                else
                    cout << "programma ne naydena" << endl;
            }
            break;
        case 5:  // сортировка по названию
            db.sort([](const Program &pl, const Program &pr) { return pl.get_nazvanie().compare(pr.get_nazvanie()) < 0; });
            cout << "baza otsortirovana po nazvaniyu programm" << endl;
            break;
        case 8:  // загрузить базу из файла
            {
                cout << "zagruzit' bazu iz faila" << endl;
                string fname;
                cout << "imya faila: "; getline(cin, fname);
                ifstream ifs(fname);
                if (ifs) {
                    db.clear();
                    while (true) {
                        prog.read(ifs);
                        if (ifs.eof())
                            break;
                        db.push_back(prog);
                    }
                    cout << "zagruzheno " << db.size() << " zapisey" << endl;
                }
                else
                    cout << "fail ne nayden" << endl;
            }
            break;
        case 9:  // сохранить базу в файл
            {
                cout << "sohranit' bazu v fail" << endl;
                string fname;
                cout << "imya faila: "; getline(cin, fname);
                ofstream ofs(fname);
                if (ofs) {
                    for (const Program &p : db)
                        p.write(ofs);
                    if (ofs.bad())
                        cout << "oshibka zapisi faila" << endl;
                    else
                        cout << "zapisano " << db.size() << " zapisey" << endl;
                }
                else
                    cout << "oshibka otkrytiya faila" << endl;
            }
            break;
        case 0:
            cout << "rabota zavershena" << endl;
            break;
        default:
            cout << "nepravilniy vybor" << endl;
        };
    } while (choice != 0);
 
 
 
    std::system("pause");
    return 0;
}
Цитата Сообщение от IGPIGP Посмотреть сообщение
Байт, а я в очередной раз шокирован тем фактом, что кто-то может не моргнув глазом дать студенту задание:
Сообщение от a_lar
создать базу данных
Вот уж действительно: -"СУБДа, СУБДы, СУБДе, СУБДою о СУБДе".
Не путайте понятия "база данных" и СУБД. Базой данных может быть любой набор структурированной информации: текстовый файл, экселовская табличка и пр. А СУБД - это в первую очередь Система Управления базами данных. Многими базами.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9005 / 4706 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
02.02.2019, 11:24
Цитата Сообщение от L0M Посмотреть сообщение
Не путайте понятия "база данных" и СУБД.

Не по теме:

Это перефразирование строки Б. Окуджавы.
О базах можно много говорить. С общей точки зрения (где доотличительные признаки понятия нивелированы) и ботинок - база.
А так-то, только о базах в рамках MVC можно долго говорить. О реляционных, например. SQL реализацию для для вида (View) вспомнить.
L0M, всё это ни к чему. Я сказал о том, что задания формулировать - тоже работа мозга. А Преподавание порождает Учеников. Смотрите как человек предоставляет информацию об ошибках.
Потом все дальше идёт.
А перефразирование - не грех. Если смысл есть. Когда-то ещё работая с рабочими-машиностроителями (токари, слесари, фрезеровщики) придумалось такое размышление:
"Хорошо когда руки из плеч. Когда они из филейной части - плохо. Но когда они растут где-то из середины - катастрофа".
В нашем случае можно перефразировать так (это не к вам относится) :
"Хорошо когда у человека на плечах голова. Когда вместо неё стандарт, - терпимо. Но когда что-то среднее - грусть".

1
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
02.02.2019, 12:31
a_lar, Самая первая ошибка (возможно, порождающая и другие). Функция getDate описана внутри функции v(). В Си(++) это запрещено. Видимо, конструкция взята из другого языка типа PL-1 (которого вы навярняка не знаети) или Java.
Терпимее будет так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class s //класс вывода всей введеной информации
{
public:
    void v()
    {
        cout << " baza: ";
    }
    void getDate() // отобразить введенную информацию
    {
       cout << "nazvanie: " << nazvanie << "\n" << " os: " << os << "\n" << "razmer: " << razmer<< "\n"<< "data: "<< data <<endl;
       system("pause");
       system("cls");
     }
};
0
02.02.2019, 14:06

Не по теме:


Цитата Сообщение от IGPIGP Посмотреть сообщение
Это перефразирование строки Б. Окуджавы.
Имеется ввиду песня "Бричмулла"? Это не Окуджава. Песня Сергея Никитина на стихи Дмитрия Сухарева.

Не, я имел ввиду, что "создать базу данных" - это раз плюнуть. А вот "создать СУБД" - совершенно нетривиальная задача. И, поскольку в задании речь шла о БД, ничего особенного я в этом не вижу.

Цитата Сообщение от IGPIGP Посмотреть сообщение
задания формулировать - тоже работа мозга
Полностью согласен. И когда я вижу "типа задания", которые здесь, на форуме, частенько пролетают, у меня волосы дыбом встают. Не знаешь, то ли плакать, то ли смеяться... Но, скорее, плакать, поскольку это же родилось не из головы одинокого придурка в пустыне. Это всё видели, читали, утверждали учебные планы, методички и пр. не одна сотня преподавателей, в том числе и с учёными степенями.

Были в УК РСФСР такие статьи 69 "Вредительство" и 58 "Саботаж"...

0
02.02.2019, 14:14

Не по теме:

Цитата Сообщение от L0M Посмотреть сообщение
Это не Окуджава. Песня Сергея Никитина на стихи Дмитрия Сухарева.
Да, конечно. Но и у Булат Шавловича есть нечто похожее (по смыслу, но ни по ритму)
"Судьба, судьбы, судьбой, судьбою, о судьбе" ("Заезжий музыкант")

0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9005 / 4706 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
02.02.2019, 14:44

Не по теме:

Цитата Сообщение от Байт Посмотреть сообщение
Да, конечно. Но и у Булат Шавловича есть нечто похожее (по смыслу, но ни по ритму)
"Судьба, судьбы, судьбой, судьбою, о судьбе" ("Заезжий музыкант")
Цитата Сообщение от Б.Ш. Окуджава
Заезжий музыкант целуется с трубою.
Пассажи по утрам, так просто, ни о чем...
Он любит не тебя, опомнись, Бог с тобою.
Прижмись ко мне плечом. Прижмись ко мне плечом.

Живет он третий день в гостинице районной,
Где койка у окна - всего лишь по рублю,
И на своей трубе, как чайник, раскаленной,
Вздыхает тяжело... А я тебя люблю.

Ты слушаешь его задумчиво и кротко,
как пенье соловья, как дождь и как прибой.
Его большой трубы простуженная глотка
Отчаянно хрипит. (Труба, трубы, трубой...)

Трубач играет туш, трубач потеет в гамме,
Трубач хрипит свое и кашляет, хрипя.
Но как портрет судьбы, он весь в оконной раме,
Он любит не тебя... А я люблю тебя.

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

Тебя не соблазнить ни платьями, ни снедью:
Заезжий музыкант играет на трубе!
Что мир весь рядом с ним, с его горячей медью?..
Судьба, судьбы, судьбе, судьбою, о судьбе...
Цитата Сообщение от L0M Посмотреть сообщение
песня "Бричмулла"?
Сладострастная отрава. Да. Одна из моих любимых.
Заныло в груди. Но... Чимганские горы царят в далеке и безумно прекрасны собою ...
:yes:



Добавлено через 4 минуты
Цитата Сообщение от L0M Посмотреть сообщение
Полностью согласен.
1
02.02.2019, 14:45

Не по теме:

IGPIGP, если вы еще не посещали этот топитк, то у вас есть шанс немного развлечься
Душа просит поэзии

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.02.2019, 14:45
Помогаю со студенческими работами здесь

Найти причины возникновения ошибок в коде и исправить эти ошибки (классы, алгоритм сортировки)
Привет. Начинаю изучать работу классов и на примере алгоритмов сортировки использую классы. Программа компилируется, но ругается на вывод...

Найти ошибки в коде и исправить эти ошибки (Наследование)
Вот в общем 3 файла, изучаю наследование на примере односвязного и двусвязного списков: list.h (inline) #pragma once class list...

Найти ошибки в коде и исправить эти ошибки
Есть у меня вот такой код: #include &lt;iostream&gt; using namespace std; class A{ private: int* a; size_t size_; ...

Найти ошибки в коде и исправить эти ошибки - C++
Судя по вываливающейся ошибки, идет двойное освобождение памяти. У самого не получается отловить откуда. A.h #pragma once ...

Классы. Исправить ошибки в коде
Помогите, пожалуйста, исправить ошибки в коде. Нужно сделать класс булева матрица(состоит из 0 и 1) и реализовать метод логического...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru