Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.83/29: Рейтинг темы: голосов - 29, средняя оценка - 4.83
63 / 64 / 11
Регистрация: 27.02.2013
Сообщений: 1,116

Как должен выглядеть образец класса «Населенный пункт»

03.09.2014, 20:29. Показов 6722. Ответов 77
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
надо было у препода спросить это, просто прочитал в методичке это уже дома, вот задание:
Кликните здесь для просмотра всего текста
Лабораторное задание
Разработать консольное приложение, в котором должен быть реализован простой класс в соответствии с вариантом задания.
Требования к классу:
– Класс должен содержать конструктор без параметров. В конструкторе должны инициализироваться переменные класса значением по умолчанию.
– Класс должен содержать два или более конструкторов с параметрами. В конструкторах должны инициализироваться переменные класса значениями, которые переданы в параметрах конструктора. Если для какой-либо переменной класса в параметрах конструктора не предусмотрен параметр, то переменная должна инициализироваться значением по умолчанию.
– Класс должен содержать деструктор. В деструкторе все переменные класса должны быть затерты (присвоены недействительные значения).
– Класс должен содержать три или более методов класса (функций). Методы должны быть реализованы в трех секциях: public, protected и private. В каждом методе должно быть обращение к одной или более переменной класса.
– Класс должен содержать три или более (в соответствии с вариантом задания) переменных класса. Переменные класса должны быть реализованы в трех секциях: public, protected и private.
– Класс должен содержать одну или более переменную со строковыми данными. Строковые данные должны задаваться только с использованием массива символов (char str1[100] или wchat_t str2[200]).
– В классе должны быть реализованы два метода: Input и Output. Метод Input должен выполнять ввод данных класса с клавиатуры. Метод Output должен печатать на экране данные класса. Методы должны располагаться в секции public

и вариант
Кликните здесь для просмотра всего текста
10. Класс «Населенный пункт» (название, количество жителей, географические координаты, виды общественного транспорта и т.д.).

так то все это элементарно, просто даже не представляю какие можно сделать переменные и методы в private и protected??? т.е. основные переменные из самого варианта (название, количество...) они в public, а какие должны быть еще переменные и методы в private и protected я без понятия...
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.09.2014, 20:29
Ответы с готовыми решениями:

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

Как должен выглядеть код уравнения p=a(a+1)*(a+2).(a+n-1)
Вообще не вдупляю как это уравнение выглядит в коде P=a(a+1)*...*(a+n-1)

Как должен выглядеть POST и GET запросы к нужному ресурсу?
Всем привет! Пишу приложение, используя библиотеку cURL и застрял на том, что не могу определить как должен выглядеть POST и GET...

77
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
04.09.2014, 16:55
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от GetHelp Посмотреть сообщение
конструкторы с параметрами можно вызвать вручную, а без параметров вызывается автоматически, если параметры не заданы...
Эту логику ломает единственный факт - у всех аргументов конструкторов есть значения по умолчанию.
0
63 / 64 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
04.09.2014, 17:03  [ТС]
Цитата Сообщение от 0x10 Посмотреть сообщение
Эту логику ломает единственный факт - у всех аргументов конструкторов есть значения по умолчанию.
РРРРР... да что за бред вы несете !!! какие нафиг значения по умолчанию??? вы можете изъясняться хоть немного более развернуто??? я вас вообще не понимаю... все равно как если бы вы на китайском говорили
0
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
04.09.2014, 17:06
Цитата Сообщение от GetHelp Посмотреть сообщение
какие нафиг значения по умолчанию???
Начинаем разбор с простого. В посте 22 есть код - ничего в нем не смущает?
0
63 / 64 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
04.09.2014, 17:07  [ТС]
Цитата Сообщение от 0x10 Посмотреть сообщение
Начинаем разбор с простого. В посте 22 есть код - ничего в нем не смущает?
смущает все, начиная с того что я ровно ничего в нем не понял...
0
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
04.09.2014, 17:09
Цитата Сообщение от GetHelp Посмотреть сообщение
я ровно ничего в нем не понял
Так не бывает, всегда можно сформулировать конкретный вопрос.
0
63 / 64 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
04.09.2014, 17:11  [ТС]
Цитата Сообщение от 0x10 Посмотреть сообщение
Так не бывает, всегда можно сформулировать конкретный вопрос.
во 1 вы объявляете структуру и в ней пишите функцию, что за??? это вам не класс все таки...
во 2 что такое explicit?
в 3 что значит запись int = 42?
0
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
04.09.2014, 17:16
Вот, с этим уже можно работать.
Цитата Сообщение от GetHelp Посмотреть сообщение
во 1 вы объявляете структуру и в ней пишите функцию, что за??? это вам не класс все таки...
Структура - это то же самое, что и класс, разница только в уровне доступа по умолчанию. Для структур - public, для класса - private.
Цитата Сообщение от GetHelp Посмотреть сообщение
во 2 что такое explicit?
Запрет на неявное приведение типа. Пока можно забить на это.
Цитата Сообщение от GetHelp Посмотреть сообщение
в 3 что значит запись int = 42?
Аргумент типа int, значение по умолчанию которого - 42. Всего лишь опустил имя самого аргумента, такое допустимо.

Добавлено через 1 минуту
Случай первый.
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
 
struct Instrumental {
    Instrumental() {
        std::cout << "Instrumental()" << std::endl;
    }
};
 
int main() {
    Instrumental obj;
}
Какой конструкто будет вызван?

Случай второй.
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
 
struct Instrumental {
    Instrumental(int value = 42) {
        std::cout << "Instrumental(int)" << std::endl;
    }
};
 
int main() {
    Instrumental obj;
}
Какой на этот раз?

Случай третий:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
 
struct Instrumental {
    Instrumental() {
        std::cout << "Instrumental()" << std::endl;
    }
    
    Instrumental(int value = 42) {
        std::cout << "Instrumental(int)" << std::endl;
    }
};
 
int main() {
    Instrumental obj;
}
А теперь?
0
63 / 64 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
04.09.2014, 17:18  [ТС]
Цитата Сообщение от 0x10 Посмотреть сообщение
Аргумент типа int, значение по умолчанию которого - 42. Всего лишь опустил имя самого аргумента, такое допустимо.
ну и какой смысл в таком аргументе без имени? как в к нему будете обращаться?

ну и собственно что дальше? обсудили код
Цитата Сообщение от 0x10 Посмотреть сообщение
Начинаем разбор с простого. В посте 22 есть код - ничего в нем не смущает?
а дальше то что? там вроде как нет никаких конструкторов...

Добавлено через 58 секунд
Цитата Сообщение от 0x10 Посмотреть сообщение
Какой конструкто будет вызван?
какие могут быть конструкторы в структуре? окститесь...
0
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
04.09.2014, 17:23

Не по теме:

Когда автор увидит как класс наследуется от структуры, его мир уже никогда не будет прежним.



Добавлено через 3 минуты
Прошу прощения, но мне так - чисто поржать:
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
 
struct Integer {
    Integer(int value) {
        std::cout << "ctor: value = " << value << std::endl;
    }   
};
 
int main() {
    class Integer i(42);
}
http://ideone.com/gbliMT
1
63 / 64 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
04.09.2014, 17:23  [ТС]
Цитата Сообщение от 0x10 Посмотреть сообщение
Когда автор увидит как класс наследуется от структуры, его мир уже никогда не будет прежним.
АААА ДУРДОМ !!!!!!!!! мой мир никогда не будет прежним
Цитата Сообщение от 0x10 Посмотреть сообщение
Какой конструкто будет вызван?
Instrumental()
Цитата Сообщение от 0x10 Посмотреть сообщение
Какой на этот раз?
думаю не будет работать вообще, нужен конструктор по умолчанию...
Цитата Сообщение от 0x10 Посмотреть сообщение
А теперь?
Instrumental()
0
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
04.09.2014, 17:25
Цитата Сообщение от GetHelp Посмотреть сообщение
думаю не будет работать вообще, нужен конструктор по умолчанию...
А теперь внимательно смотрим 4 строчку второго примера: параметр конструктора принимает значение по умолчанию. Следовательно, код скомпилируется и будет вызван именно этот конструктор.
Цитата Сообщение от 0x10 Посмотреть сообщение
Instrumental(int value = 42) {
И в этом контексте переосмысливаем третий пример.
1
63 / 64 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
04.09.2014, 17:27  [ТС]
Цитата Сообщение от 0x10 Посмотреть сообщение
А теперь внимательно смотрим 4 строчку второго примера: параметр конструктора принимает значение по умолчанию. Следовательно, код скомпилируется и будет вызван именно этот конструктор.
ах да не заметил... тогда в 3 примере вообще будет UB !!!
0
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
04.09.2014, 17:29
Цитата Сообщение от GetHelp Посмотреть сообщение
будет UB
Будет неоднозначность и ошибка компиляции. Об этом я, кстати, уже писал все в том же посте 22.
Теперь к Вашему коду. У всех конструкторов параметры принимают значения по умолчанию. Следовательно, ситуация полностью аналогична.
0
1123 / 794 / 219
Регистрация: 15.08.2010
Сообщений: 2,185
04.09.2014, 17:31
Цитата Сообщение от GetHelp Посмотреть сообщение
думаю не будет работать вообще, нужен конструктор по умолчанию...
Цитата Сообщение от GetHelp Посмотреть сообщение
идите ка учите матчасть

Не по теме:

0x10, поражаюсь вашему терпению


Не по теме:

зря я снова влезаю в эту дискуссию, GetHelp, можете проигнорировать мой пост

0
63 / 64 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
04.09.2014, 17:38  [ТС]
Цитата Сообщение от 0x10 Посмотреть сообщение
Теперь к Вашему коду. У всех конструкторов параметры принимают значения по умолчанию. Следовательно, ситуация полностью аналогична.
так то оно так, кажется я понимаю о чем вы, но как мне тогда следовать методичке?
Кликните здесь для просмотра всего текста
– Класс должен содержать конструктор без параметров. В конструкторе должны инициализироваться переменные класса значением по умолчанию.
– Класс должен содержать два или более конструкторов с параметрами. В конструкторах должны инициализироваться переменные класса значениями, которые переданы в параметрах конструктора. Если для какой-либо переменной класса в параметрах конструктора не предусмотрен параметр, то переменная должна инициализироваться значением по умолчанию.


Добавлено через 6 минут
Цитата Сообщение от GetHelp Посмотреть сообщение
так то оно так, кажется я понимаю о чем вы, но как мне тогда следовать методичке?
аа вроде бы все правильно... я немного не так понял задание

вот значит последний вариант кода, часть ошибок отпала, но не все...
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
#include <iostream>
#include <fstream>
#include <vector>
 
using namespace std;
 
const char* defname = "";
 
class town
{
private:
    char name[100];
    char* getname() { return name; }
    double latitude;
    double longitude;
    vector<char[100]> transport;
public:
    town()
    {
        name = defname; //Ошибка: выражение должно быть допустимым для изменения левосторонним значением
        population = 0;
        latitude = 0.0;
        longitude = 0.0;
        transport.clear();
    }
    town(char _name[100])
    {
        name = _name; //Ошибка: выражение должно быть допустимым для изменения левосторонним значением
        population = 0;
        latitude = 0.0;
        longitude = 0.0;
        transport.clear();
    }
    town(char _name[100], size_t _population, double _latitude, double _longitude, vector<char[100]> _transport)
    {
        name = _name; //Ошибка: выражение должно быть допустимым для изменения левосторонним значением
        population = _population;
        latitude = _latitude;
        longitude = _longitude;
        transport = _transport;
    }
    ~town()
    {
        name = nullptr; //Ошибка: выражение должно быть допустимым для изменения левосторонним значением
        population = 0;
        latitude = 0.0;
        longitude = 0.0;
        transport.clear();
    }
    bool Input()
    {
        char* filename = "";
        cout << "filename: ";
        cin >> filename;
        sprintf(filename, "input\\%s", filename);
        ifstream stream(filename);
        if (!stream.is_open()) return false;
        while (!stream.eof())
        {
            stream >> "name=" >> name;
            stream >> "population=" >> population;
            stream >> "latitude=" >> latitude;
            stream >> "longtitude=" >> longitude;
            //опять не знаю как считать :(
        }
    }
    bool Output()
    {
        cout << "name=" << name << "\n";
        cout << "population=" << population << "\n";
        cout << "latitude=" << latitude << "\n";
        cout << "longitude=" << longitude << "\n";
        cout << "transport=";
        for (auto t : transport) cout << t;
    }
protected:
    size_t population;
    size_t getpopulation() { return population; }
};
 
int main()
{
    return cin.get();
}
0
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
04.09.2014, 17:41
Цитата Сообщение от GetHelp Посмотреть сообщение
как мне тогда следовать методичке?
Ок, закончили с матчастью, думаем как удовлетворить препода.
Я несколько раз перечитал, чтобы убедиться - в задании говорится о значениях полей класса по умолчанию, но не о параметрах конструктора по умолчанию. Это приводит меня к мысли, что можно сделать так (привожу пример для иллюстрации):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
struct Handler {
    Handler() {
        // такие значения выбраны по умолчанию
        value = 0;
        precision = 0.0;
    }
    
    Integer(int value_) {
        value = value_;
        
        // параметр для precision не предусмотрен,
        // используем значение по умолчанию
        precision = 0.0;
    }
    
    Integer(int value_, double precision_) {
        value = value_;
        precision = precision_;
    }
    
    int value;
    double precision;
};
В продакшн такой код не пропустят, но указаниям в методичке вполне сответствует.

Добавлено через 2 минуты

Не по теме:

Цитата Сообщение от КОП Посмотреть сообщение
0x10, поражаюсь вашему терпению
Могу сказать аналогичное относительно терпения моих коллег на работе ко мне)

0
63 / 64 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
04.09.2014, 17:42  [ТС]
Цитата Сообщение от 0x10 Посмотреть сообщение
В продакшн такой код не пропустят, но указаниям в методичке вполне сответствует.
выше мой последний код, я также примерно и сделал
0
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
04.09.2014, 17:43
Цитата Сообщение от GetHelp Посмотреть сообщение
выше мой последний код, я также примерно и сделал
Да, просто я его не видел когда писал.

Отмеченные проблемы со строками решаются использоваинем функции strcpy, о чем говорили ранее.
0
63 / 64 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
04.09.2014, 17:50  [ТС]
Цитата Сообщение от 0x10 Посмотреть сообщение
Отмеченные проблемы со строками решаются использоваинем функции strcpy, о чем говорили ранее.
так ладно едем дальше... что со считыванием из файла? во 1 ошибок куча, во 2 еще не придумал как считывать транспорт...
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
#include <iostream>
#include <fstream>
#include <vector>
 
using namespace std;
 
class town
{
private:
    char name[100];
    char* getname() { return name; }
    double latitude;
    double longitude;
    vector<char[100]> transport;
public:
    town()
    {
        strcpy(name, "");
        population = 0;
        latitude = 0.0;
        longitude = 0.0;
        transport.clear();
    }
    town(char _name[100])
    {
        strcpy(name, _name);
        population = 0;
        latitude = 0.0;
        longitude = 0.0;
        transport.clear();
    }
    town(char _name[100], size_t _population, double _latitude, double _longitude, vector<char[100]> _transport)
    {
        strcpy(name, _name);
        population = _population;
        latitude = _latitude;
        longitude = _longitude;
        transport = _transport;
    }
    ~town()
    {
        strcpy(name, "");
        population = 0;
        latitude = 0.0;
        longitude = 0.0;
        transport.clear();
    }
    bool Input()
    {
        char* filename = "";
        cout << "filename: ";
        cin >> filename;
        sprintf(filename, "input\\%s", filename);
        ifstream stream(filename);
        if (!stream.is_open()) return false;
        while (!stream.eof())
        {
            stream >> "name=" >> name;
            stream >> "population=" >> population;
            stream >> "latitude=" >> latitude;
            stream >> "longtitude=" >> longitude;
            //опять не знаю как считать :(
        }
    }
    bool Output()
    {
        cout << "name=" << name << "\n";
        cout << "population=" << population << "\n";
        cout << "latitude=" << latitude << "\n";
        cout << "longitude=" << longitude << "\n";
        cout << "transport=";
        for (auto t : transport) cout << t;
    }
protected:
    size_t population;
    size_t getpopulation() { return population; }
};
 
int main()
{
    return cin.get();
}
ошибки
Кликните здесь для просмотра всего текста
error C2679: бинарный ">>": не найден оператор, принимающий правый операнд типа "const char [6]"
error C2679: бинарный ">>": не найден оператор, принимающий правый операнд типа "const char [12]"
error C2679: бинарный ">>": не найден оператор, принимающий правый операнд типа "const char [10]"
error C2679: бинарный ">>": не найден оператор, принимающий правый операнд типа "const char [12]"
0
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
04.09.2014, 18:09
Цитата Сообщение от GetHelp Посмотреть сообщение
что со считыванием из файла?
Разбираем. Первый же недочет, который бросается - архитектурный.
Цитата Сообщение от GetHelp Посмотреть сообщение
cin >> filename;
Имя файла лучше передать параметром. Еще лучше передать сразу поток, но сейчас не об этом.
Далее. Эта же строчка.
Указатель filename указывает на строковую константу - "". Т.е. указатель нужно заменить на честный буфер фиксированого размера.

Добавлено через 2 минуты
Цитата Сообщение от GetHelp Посмотреть сообщение
stream >> "name=" >> name;
Попытка из потока считать нечто и записать это в константный литерал не объясняется никакой логикой. Потому что нельзя изменить константу. (на самом деле, иногда можно, но сейчас не об этом).

На входе у нас файл. формат файла предполагает наличие по одному параметру в строке. Вывод - файл надо читать построчно. Поможет функция getline. Об этом, кстати, уже говорили ранее в теме.
http://www.cplusplus.com/refer... m/getline/

Когда получена строка, нужно разобрать ее и получить значение. Как это сделать, я приводил несколько примеров в соседней теме.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.09.2014, 18:09

Как должен выглядеть класс, который будет работать в заданном цикле?
Как должен выглядеть класс, который будет работать в этом цикле? for (const auto &amp; entry : fs::directory_iterator(path)) { ...

Как правильно должна выглядеть ортодоксально каноническая форма класса?
Как правильно должна выглядеть ортодоксально каноническая форма класса? Я не совсем уверен. В классе должны быть конструктор, деструктор,...

Как должен выглядеть DataSource
Здравствуйте.Хочу подключиться к СУБД Оракл с использованием АДО.НЕТ.На компьютере установлена СУБД Oracle Database 10g Express Edition,...

Как должен выглядеть деструктор
class A { public $a; public function __construct($a) { $this-&gt;a = $a; } ...

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


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
Генератор паролей (вариант №2)
Maks 30.10.2026
Обновленная версия ранее созданной обработки. Добавлены следующие реквизиты типа Булево: - Буквы; - Цифры; - Символы. Изменена логика команды "Сгенерировать" и процедуры "ПриОткрытии":. . .
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей. Самым главным критерием для. . .
Установка ChatGPT (Codex) на Windows без использования Microsoft Store
Fabien159 28.10.2026
Здравствуйте всем читающим! Опишу процесс установки ChatGPT (Codex) на Windows, если по каким-то причинам у вас не получается устанавить его через Microsoft Store. И так: 1. Скачиваем с. . .
Программное добавление префикса в нумерацию документов
Maks 27.10.2026
Реализация из решения ниже выполнена в самописной конфигурации на БСП (помощь начинающему коллеге). Задача: Программно добавить префикс в нумерацию документов. Решение: В модуле объекта. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru