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

Ввод данных в закрытые поля класса

23.08.2023, 08:05. Показов 994. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет. Делаю лабы по ООП первую лабу с горем пополам сделала, с помощью форума и гугла. Во второй не могу понять как сделать ввод данных в закрытые поля или обращение к ним (как правильно, я в программировании нуль).

Вот код первой лабы:
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
#include <iostream>
#include <stdio.h>
#include <Windows.h>
#include <string>
 
using namespace std;
const int N = 8;
 
//Описание структуры по заданию
struct Znak
{
    static const int SZ = 256; 
    char fam[SZ];
    char name[SZ];
    char zodiak[SZ];
    int DR[3];
}
 
//Массив структур
A[N];
 
//Ввод с клавиатуры данных в массив
void vvod_struktur(Znak* A, const int ARR_SIZE)
{
    char S[Znak::SZ];
    
    for (int i = 0; i < ARR_SIZE; i++)
    {
        cout << "Введите фамилию: ";
        cin >> S;
        strcpy_s(A[i].fam, S);
 
        cout << "Введите имя: ";
        cin >> S;
        strcpy_s(A[i].name, S);
        
        cout << "Введите знак зодиака:  ";
        cin >> S;
        strcpy_s(A[i].zodiak, S);
 
        cout << "Введите дату рождения через пробел: " << '\n';
        for (int j = 0; j < 3; j++)
            cin >> A[i].DR[j];
 
        cout << '\n';
    }
}
 
//сортировка по дате рождения
template <size_t NN>
void sort_data(Znak(&z)[NN], const int ARR_SIZE)
{
    Znak tmp;
    bool is_larger_by_date;
    for (int k = 0; k < ARR_SIZE - 1; k++)
    {
        for (int i = 0, j; i < ARR_SIZE - 1; i++)
        {
            is_larger_by_date = false;
            j = i + 1;
            if (z[i].DR[2] > z[j].DR[2])
                is_larger_by_date = true;
            else if (z[i].DR[2] == z[j].DR[2])
            {
                if (z[i].DR[1] > z[j].DR[1])
                    is_larger_by_date = true;
                else if (z[i].DR[1] == z[j].DR[1])
                {
                    if (z[i].DR[0] > z[j].DR[0])
                        is_larger_by_date = true;
                }
            }
 
            if (is_larger_by_date)
            {
                tmp = z[i];
                z[i] = z[j];
                z[j] = tmp;
            }
        }
    }
}
 
//Вывод массива структур на экран
void show(const Znak* A, const int ARR_SIZE)
{
    cout << "Вывод введенных данных, упорядоченных по дате рождения:" << '\n';
    for (int i = 0; i < ARR_SIZE; i++)
    {
        cout << A[i].fam << " ";
        cout << A[i].name << " ";
        for (int j = 0; j < 3; j++)
            cout << A[i].DR[j] << ".";
        cout << " (" << A[i].zodiak << ") ";
        cout << "\n";
    }
}
    //поиск введенного знака зодиака
void poisk(const Znak* A, const int ARR_SIZE)
{
    char zod[8];
    int i;
    int n = 10;
    int flag = 0;
 
    cout << '\n' << "Введите искомый знак зодиака: " << '\n';
    cin >> zod;
    cout << "\n";
    cout << "Вот что нашлось по вашему запросу: " << '\n';
 
    for (i = 0; i < n; i++)
    {
 
        if (strcmp(A[i].zodiak, zod) == 0)
        {
            cout << A[i].fam << " ";
            cout << A[i].name << " ";
 
            for (int j = 0; j < 3; j++)
                cout << A[i].DR[j] << ".";
            cout << " (" << A[i].zodiak << ") "
            cout << "\n";
            flag = 1;
        }
    }
 
    for (i = 0; i < n; i++)
    {
        if (flag == 0)
        {
            cout << "Данные не найдены." << '\n';
        }
        break;
    }
}
 
 
int main()
{
    SetConsoleCP(1251); //Ввод rus
    SetConsoleOutputCP(1251); //Вывод rus
 
    Znak obj1[N];
    vvod_struktur(obj1, N);
    sort_data(obj1, N);
    show(obj1, N);
    poisk(obj1, N);
   
    return 0;
}

Вторая звучит так:

Необходимо разработать программу, которая позволяет вводить и выводить данные набора из 3 или 5 объектов основного (центрального) класса объектной модели, разработанной в лабораторной работе 1.
Требования к программе:
1. Все данные должны быть закрытыми. Доступ к полям класса должны обеспечить методы класса.
2. Класс должен содержать открытые методы-аксессоры:
- для инициализации полей объекта, например, с именем set();
- для получения значений из полей объекта, например, с именем get();
- для вывода на экран значений полей объекта, например, с именем show().
3. Для возврата значений из полей объекта необходимо использовать ссылки.
4. Функция main должна иллюстрировать работу всех методов.
Разработанный класс должен быть выделен в заголовочный файл.


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
class Znak
{
private: //защищенные поля
    string fam;
    string name;
    string zodiak;
    int DR[3];
 
public:
    Znak(string fam_, string name_, string zodiak_, int DR_[3])
    
        : fam(fam_)
        , name(name_)
        , zodiak(zodiak_)
        , DR[3](DR_[3])
        
    {
    }
 
 
    void setFam(string fam_)
    {
        fam = fam_;
    }
 
    string getFam()
    {
        return this->fam;
    }
    
    void setName(string name_)
    {
        name = name_;
    }
 
    string getName()
    {
        return this->name;
    }
    
    void setZodiak(string zodiak_)
    {
        zodiak = zodiak_;
    }
 
    string getZodiak()
    {
        return this->zodiak;
    }
    
    void setDR(int DR_[3])
    {
        DR[0] = DR_[0];
        DR[1] = DR_[1];
        DR[2] = DR_[2];
    }
 
    int getDR()
    {
        return DR[3];
    }
 
};
Вот такой класс у меня получился. Как теперь к этим данных обращаться в остальных функциях кода? Гугл не помогает, на форуме тоже ничего подобного не могу найти или просто мозг с орешек. Не понимаю что нужно сделать.

Хээээлп.... Хотя бы напишите что именно мне нужно понять, изучить? Какие темы? Препод тупо кинул задачи и все.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.08.2023, 08:05
Ответы с готовыми решениями:

Закрытые поля класса
Здравствуйте.Помогите разобраться с кодом. Определен следующий класс: struct Cls { Cls(char c, double d, int i); private: ...

Использование свойств для чтения и записи данных в закрытые поля класса
Добрый день ! Как я понял свойства используют для чтения и записи данных в закрытые поля класса через какую-ту левую переменную как...

Закрытые поля класса или аргументы метода?
Что сейчас наиболее подходит для C#5 и в каких случаях - передавать в метод аргументы или считывать необходимые методу данные из полей...

6
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
23.08.2023, 08:24
Цитата Сообщение от ana_panda Посмотреть сообщение
Как теперь к этим данных обращаться в остальных функциях кода?
На примере функции show:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//Вывод массива структур на экран
void show(const Znak* A, const int ARR_SIZE)
{
    cout << "Вывод введенных данных, упорядоченных по дате рождения:" << '\n';
    for (int i = 0; i < ARR_SIZE; i++)
    {
        cout << A[i].getFam() << " ";
        cout << A[i].getName() << " ";
        for (int j = 0; j < 3; j++)
            cout << A[i].getDR()[j] << ".";
        cout << " (" << A[i].getZodiak() << ") ";
        cout << "\n";
    }
}
Только getDR у вас неправильно написана (код выше дан с учетом уже исправленного варианта). Вот так хотя бы сделайте:
C++
1
2
3
4
    const int* getDR()
    {
        return DR;
    }
Добавлено через 3 минуты
Цитата Сообщение от ana_panda Посмотреть сообщение
Хотя бы напишите что именно мне нужно понять, изучить? Какие темы?
Вот, например почитайте: Стивен Прата, "Язык программирования C++. Лекции и упражнения", 6 издание:
Глава 10. Объекты и классы
Глава 11. Работа с классами
Глава 12. Классы и динамическое выделение памяти
Глава 13. Наследование классов
2
0 / 0 / 0
Регистрация: 15.02.2023
Сообщений: 3
23.08.2023, 08:43  [ТС]
Спасибо, буду пробовать)
0
Модератор
Эксперт С++
 Аватар для zss
13766 / 10960 / 6490
Регистрация: 18.12.2011
Сообщений: 29,233
23.08.2023, 09:47
Цитата Сообщение от ana_panda Посмотреть сообщение
Znak(string fam_, string name_, string zodiak_, int DR_[3])
: fam(fam_)
, name(name_)
, zodiak(zodiak_)
, DR[3](DR_[3])
{
}
Массивы так инициализировать нельзя
C++
1
2
3
4
5
6
7
8
9
Znak(string fam_, string name_, string zodiak_, int DR_[3])
: fam(fam_)
 , name(name_)
 , zodiak(zodiak_)
)
{
     for (int j = 0; j < 3; j++)
        DR[j]=DR_[j];
}
1
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
23.08.2023, 14:15
Цитата Сообщение от ana_panda Посмотреть сообщение
int DR[3];
Вы намучаетесь с массивом. Его специфично инициализировать, возвращать, передавать.
Лучше сделать либо структуру/класс либо три разных поля день/месяц/год.
Цитата Сообщение от ana_panda Посмотреть сообщение
static const int SZ = 256;
    char fam[SZ];
    char name[SZ];
    char zodiak[SZ];
    int DR[3];
Буквы вроде бы бесплатные, а "fam", "SZ", "DR", "А", "ARR_SIZE" -- плохо читаемо. К чему сокращения?! Ничто не мешает писать внятно -- surname, SIZE, birthday, array, ARRAY_SIZE. Гораздо лучше читается.

Цитата Сообщение от ana_panda Посмотреть сообщение
- для вывода на экран значений полей объекта, например, с именем show().
Ввод и вывод это не то, что делает сам объект, а то, что делают с объектом, поэтому этот функционал не должен размещаться внутри класса.
Для этого в C++ "обычно" используются перегруженные операторы >> и <<.
Чтобы получался код вида std::cout << znak и std::cin >> znak.

Вот, я сделал за вас:
Только внимательно прочитайте комментарии и поправьте вывод на тот, что вам больше нравится.
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
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
#include <iostream>
#include <string>
 
// раз уж пошла работ с классами, пусть дата тоже будет классом.
// хотя проще было бы сделать структурой.
class Date {
public:
    Date() : day(), month(), year() {}
 
    Date(int day, int month, int year) : day(day), month(month), year(year) {}
 
    int getDay() const {
        return day;
    }
 
    int getMonth() const {
        return month;
    }
 
    int getYear() const {
        return year;
    }
 
    void setDay(int day) {
        Date::day = day;
    }
 
    void setMonth(int month) {
        Date::month = month;
    }
 
    void setYear(int year) {
        Date::year = year;
    }
 
private:
    int day;
    int month;
    int year;
};
 
class Znak {
public:
    /**
     * Конструктор без параметров -- создаёт обьект без передачи параметров.
     */
    Znak() : lastName(), firstName(), zodiak(), birthday() {}
 
    /**
     * Конструктор с параметрами - создаёт обьект и инициализирует поля параметрами конструктора.
     * Параметры передаются по константной ссылке воизбежание дополнительного копирования
     */
    Znak(const std::string &lastName, const std::string &firstName, const std::string &zodiak, const Date &birthday)
            : lastName(lastName), firstName(firstName), zodiak(zodiak),
              birthday{birthday} {}
 
    // Accessors - простые методы, которые возвращают константные ссылки на значения полей обьектов класса.
    // передача по ссылке не копирует обьект, в отличии от передачи по значению, а константность обеспечивает
    // неизменность возвращаемого обьекта.
    // функции так же помечены константными, чтобы использовать их в константных контекстах --
    // при вызове методов у константных обьектов.
 
    const std::string &getLastName() const {
        return lastName;
    }
 
    const std::string &getFirstName() const {
        return firstName;
    }
 
    const std::string &getZodiak() const {
        return zodiak;
    }
 
    const Date &getBirthday() const {
        return birthday;
    }
 
    // Mutators - простые методы, изменяющие значения полей класса.
    // значения передаются в методы по ссылке, чтобы избежать "лишнего" копирования
    // вместо "this->" можно использовать спецификацию имени класса для того, чтобы отличать имена методов
    // от имён параметров
    void setLastName(const std::string &lastName) {
        Znak::lastName = lastName;
    }
 
    void setFirstName(const std::string &firstName) {
        Znak::firstName = firstName;
    }
 
    void setZodiak(const std::string &zodiak) {
        Znak::zodiak = zodiak;
    }
 
    void setBirthday(const Date &birthday) {
        Znak::birthday = birthday;
    }
 
    // по требованиям функция должна быть, хотя ниже по коду вы нигде её не используете и правильно делаете
    void show() const {
        // поменяйте как вам больше нравится
        std::cout << "Znak{"
                  << "lastName: '" << getLastName()
                  << "', firstName: '" << getFirstName()
                  << "', zodiak: '" << getZodiak()
                  << "', birthday: Date{"
                  << "day: " << getBirthday().getDay()
                  << ", month: " << getBirthday().getMonth()
                  << ", year: " << getBirthday().getYear()
                  << "}"
                  << "}";
    }
 
private:
    std::string lastName;
    std::string firstName;
    std::string zodiak;
    Date birthday;
};
 
// Перегруженные операторы вывода класса в поток.
// Перегруженные операторы вывода в поток (<<) позволяют писать код вида std::cout << date
// Тривиальные функции, использующие аксессоры классов для получения значений полей класса и выводящие их в поток.
 
std::ostream &operator<<(std::ostream &os, const Date &date) {
    // поменяйте как вам больше нравится
    return os << "Date{"
              << "day: " << date.getDay()
              << ", month: " << date.getMonth()
              << ", year: " << date.getYear()
              << "}";
}
 
std::ostream &operator<<(std::ostream &os, const Znak &znak) {
    // поменяйте как вам больше нравится
    return os << "Znak{"
              << "lastName: '" << znak.getLastName()
              << "', firstName: '" << znak.getFirstName()
              << "', zodiak: '" << znak.getZodiak()
              << "', birthday: " << znak.getBirthday()
              << "}";
}
 
// перегруженный оператор ввода из потока
// Перегруженные операторы ввода из потока (>>) позволяют писать код вида std::cin >> date
// Тривиальные функции, использующие мутаторы классов для назначения значений полей класса,
// предаварительно считав их из потока.
 
std::istream &operator>>(std::istream &is, Date &date) {
    int d, m, y;
    is >> d >> m >> y;
    date.setDay(d);
    date.setMonth(m);
    date.setYear(y);
    return is;
}
 
// соответственно ваши функции:
 
//Ввод с клавиатуры данных в массив
void vvod_struktur(Znak *array, const int ARRAY_SIZE) {
    for (int i = 0; i < ARRAY_SIZE; i++) {
        // переменные для ввода значений
        std::string string; // строковые
        Date date; // дата
 
        std::cout << "Введите фамилию: ";
        std::cin >> string;
        array[i].setLastName(string);
 
        std::cout << "Введите имя: ";
        std::cin >> string;
        array[i].setFirstName(string);
 
        std::cout << "Введите знак зодиака: ";
        std::cin >> string;
        array[i].setZodiak(string);
 
        std::cout << "Введите дату рождения через пробел: " << '\n';
        std::cin >> date;
        array[i].setBirthday(date);
 
        std::cout << '\n';
    }
}
 
/**
 * Вспомогательная функция, определяющая, идет ли дата `a` перед датой `b`
 * @return true, если дата `a` идёт перед датой `b` и false в противном случае
 */
bool isBefore(const Date &a, const Date &b) {
    // если год не свопадает, вернуть true, если год меньше
    if (a.getYear() != b.getYear()) {
        return a.getYear() < b.getYear();
    }
    // если год совпадает и не совпадает месяц, вернуть true, если месяц меньше
    if (a.getMonth() != b.getMonth()) {
        return a.getMonth() < b.getMonth();
    }
    // если год и месяц совпадают, то вернуть true, если день меньше
    return a.getDay() < b.getDay();
}
 
// тут была лишняя шаблонизация, я её убрал
//сортировка по дате рождения
void sort_data(Znak *array, const int ARR_SIZE) {
    for (int k = 0; k < ARR_SIZE - 1; k++) {
        for (int i = 0, j; i < ARR_SIZE - 1; i++) {
            j = i + 1;
            // тут я заменил проверку дат на вызов функции для лаконичности кода
            if (isBefore(array[j].getBirthday(), array[i].getBirthday())) {
                Znak tmp = array[i];
                array[i] = array[j];
                array[j] = tmp;
/*
                // в современной версии плюсов надо делать вот так:
                Znak tmp = std::move(array[i]);
                array[i] = std::move(array[j]);
                array[j] = std::move(tmp);
*/
/*
                // или ещё лучше воспользоваться стандартными средствами:
                std::swap(array[i], array[j]);
*/
            }
        }
    }
}
 
//Вывод массива структур на экран
void show(const Znak *array, const int ARRAY_SIZE) {
    std::cout << "Вывод введенных данных, упорядоченных по дате рождения:" << '\n';
    for (int i = 0; i < ARRAY_SIZE; i++) {
        // используется перегруженный оператор вывода в поток
        std::cout << array[i] << "\n";
    }
}
 
// тут больше всего изменений
//поиск введенного знака зодиака
void poisk(const Znak *array, const int ARRAY_SIZE) {
    std::string zodiak;
 
    std::cout << '\n' << "Введите искомый знак зодиака: " << '\n';
    std::cin >> zodiak;
    std::cout << "\n";
    std::cout << "Вот что нашлось по вашему запросу: " << '\n';
 
    bool found = false;
    // оригинальный код искал только по первым десяти вхождениям, видимо копипаста. поменял
    for (int i = 0; i < ARRAY_SIZE; i++) {
 
        if (array[i].getZodiak() == zodiak) {
            // используется перегруженный оператор вывода в поток
            std::cout << array[i] << std::endl;
            found = true;
        }
    }
 
    // тут был какой-то странный цикл, который завершался после первого раза, убрал за ненадобностью
    if (not found) {
        std::cout << "Данные не найдены." << '\n';
    }
}
 
 
int main() {
    int arraySize = 4;
 
    Znak *znaki = new Znak[arraySize];
    vvod_struktur(znaki, arraySize);
    sort_data(znaki, arraySize);
    show(znaki, arraySize);
    poisk(znaki, arraySize);
 
    delete[] znaki;
    return 0;
}

Code
1
2
3
4
5
C C Virgo 16 17 18
A A Cancer 4 5 6
B B Leo 10 11 12
D D Cancer 4 5 10
Cancer
(я не ввожу с клавиатуры, я перенаправляю ввод из файла, так что вывод будет немного другой)
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Введите фамилию: Введите имя: Введите знак зодиака: Введите дату рождения через пробел: 
 
Введите фамилию: Введите имя: Введите знак зодиака: Введите дату рождения через пробел: 
 
Введите фамилию: Введите имя: Введите знак зодиака: Введите дату рождения через пробел: 
 
Введите фамилию: Введите имя: Введите знак зодиака: Введите дату рождения через пробел: 
 
Вывод введенных данных, упорядоченных по дате рождения:
Znak{lastName: 'A', firstName: 'A', zodiak: 'Cancer', birthday: Date{day: 4, month: 5, year: 6}}
Znak{lastName: 'D', firstName: 'D', zodiak: 'Cancer', birthday: Date{day: 4, month: 5, year: 10}}
Znak{lastName: 'B', firstName: 'B', zodiak: 'Leo', birthday: Date{day: 10, month: 11, year: 12}}
Znak{lastName: 'C', firstName: 'C', zodiak: 'Virgo', birthday: Date{day: 16, month: 17, year: 18}}
 
Введите искомый знак зодиака: 
 
Вот что нашлось по вашему запросу: 
Znak{lastName: 'A', firstName: 'A', zodiak: 'Cancer', birthday: Date{day: 4, month: 5, year: 6}}
Znak{lastName: 'D', firstName: 'D', zodiak: 'Cancer', birthday: Date{day: 4, month: 5, year: 10}}
1
Лежебока
 Аватар для Donkix
328 / 244 / 95
Регистрация: 12.05.2021
Сообщений: 1,429
Записей в блоге: 2
25.08.2023, 09:00
ana_panda, для закрытых полей в основном пишут геттеры и сеттеры...
Цитата Сообщение от ana_panda Посмотреть сообщение
Как теперь к этим данных обращаться
Если вы работаете с этими полями из самого класса, то как обычно, а если извне, то через геттеры и сеттеры
2
0 / 0 / 0
Регистрация: 15.02.2023
Сообщений: 3
07.09.2023, 08:34  [ТС]
Всем спасибо за ответы, сделала)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.09.2023, 08:34
Помогаю со студенческими работами здесь

Описать класс с именем ZNAk ,содержащий закрытые переменные -члены класса (поля):
Описать класс с именем ZNAk ,содержащий закрытые переменные -члены класса (поля): -фамилия,имя; -знак Зодиака; -день рождения(массив...

Создать класс Rhombus описывающий ромб по двум его диагоналям. Закрытые поля класса a и b диагонали ромба
Помогите пожалуйста написать программу. C# Создать класс Rhombus описывающий ромб по двум его диагоналям. Закрытые поля класса a и b...

Создать класс Triangle описывает треугольник по трем его сторонам. Закрытые поля класса – a, b и c стороны треугольника
Реализовать методы: 1. Конструктор с параметрами, присваивающий значение его полей; 2. Логический метод Correct, проверяющий, может ли...

Ввод данных из разных записей одного поля в разные поля одной записи
Приветствую всех форумчан. Проблема следующая. Целые числа вводятся через форму в одно поле таблицы в виде последовательности записей как...

закрытые поля в C#
является ли это закрытым полем? public static readonly string ip; если нет то как оно выглядит ?


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
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 . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru