Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
куб числа в С++ C++
Здравствуйте! У меня такая задумка, пользователь вводит число, а программа выводит куб от этого числа. Программа компилируется и ошибок не находит, вот только не выводит куб. #include <iostream>... Secundum, банальный калькулятор пишешь?(если добавишь туда что нибуть запредельное выкладывай в блоге интересно будет посмотреть)
C++ Ошибка <iostream.h> Только начал изучать C++, решил в писать в VS2012. Нашел книгу, в начале, как обычно консольное присложение. Вот только делать по примеру из книги не получается, т.к. студия: 1) Ругается на #include... потому что надо создавать пустой консольный проект https://www.cyberforum.ru/ cpp-beginners/ thread1002371.html
C++ Найти свободный участок от деревье и построить там домик https://www.cyberforum.ru/ cpp-beginners/ thread1002362.html
Реализация программы работы с матрицами; Квадратный участок земли размеров NxN метров (N=25 - 200) разбит на клетки со стороной 1 м. Клетка занята, если на ней растут деревья, которые рубить нельзя....
Подсчитать в заданной строке число слов, которые могут быть разделены пробелом, табуляцией, переводом строки C++
Объясните пожалуйста,в чем ошибка? #include<stdio.h> #include<string.h> int *words(char *s) { int len=strlen(s),i,k=1,l=0; if(len==0)return 0; if(s==' ')l=1; for(int j=l;j<len;j++) char c=s; тут вылетает... Добавлено через 2 минуты Текст ошибки говорит, что i не проинициализирована! Добавлено через 1 минуту Вот так вроде бы и логика работает и все запускается... ...
C++ Вычисление выражений. Пожалуйста, объясните Пожалуйста, помогите! Не понимаю, как сделать задачу! f(x)=6*(2n)!*(1/(2n+1))*(1+1/3^2+1/5^2+...+1/(2n-1)^2))*(x/2)^(2n+1) Вот такая задачка. Нужно, чтобы, как я понял, вычисляло f(x1), f(x2) и... Но тогда как сделать степень? pow(x, 2); https://www.cyberforum.ru/ cpp-beginners/ thread1002384.html C++ В файле целых чисел заменить все нулевые значения максимальным значением https://www.cyberforum.ru/ cpp-beginners/ thread1002367.html
помогите решить задачу, пожалуйста! вот мой код, не могу понять в чём ошибка. " В файле целых чисел заменить все нулевые значения максимальным значением" код: #include <fstream> #include...
C++ Опишите рекурсивную функцию number без параметров для определения количества элементов файла f Помогите с задачкой :( type reals = file of real; var f: reals; Опишите рекурсивную функцию number без параметров для определения количества элементов файла f https://www.cyberforum.ru/ cpp-beginners/ thread1002410.html C++ В текстовом файле посчитать количество заданных букв
Задание: "В текстовом файле посчитать количество заданных букв" Срочно надо, вообще ничего не понимаю. #include<iostream> #include<fstream> #include<string> using namespace std; int main() { setlocale(LC_ALL, "rus"); string s;
C++ Компиляция в среде visual studio 2010 https://www.cyberforum.ru/ cpp-beginners/ thread1002366.html
Профи выручайте! Не могу найти кнопку компиляции в визуаль студио 2010, создал файл с расширением .cpp написал код и вполне готов его откомпилировать, но кнопки или чего то подобного найти не могу.( ... https://www.cyberforum.ru/cpp-beginners/thread784161.html#post4121479 Если нужно сугубо скомпилировать, то в меню есть.
C++ Преобразовать указатель одного типа в указатель другого. https://www.cyberforum.ru/ cpp-beginners/ thread1002398.html
Всем привет. Мне нужно выполнить задание "Преобразовать указатель одного типа в указатель другого. " Что-то совсем не понимаю. Помогите пожалуйста...) Без создания нового указателя другого типа никак.
C++ Немогу составить программу для решения формул (формулы на фото) Нужно сделать программу для решения формул через подстановку. Я хоть правильно выбрал программу? (Пытаюсь сделать с помощью C++) Это можно и на pascal, наверное, сделать. Да и почти на любом языке программирования, мне кажется. Но язык (программу) выбрали правильно, если вы его понимаете. Опять же, где примеры Ваших попыток,... https://www.cyberforum.ru/ cpp-beginners/ thread1002393.html C++ Разность показаний на дисплее Уважаемые форумчане, помогите решить вопрос с выводом разности показаний на дисплей. В программе есть определённый участок кода, который отвечает за вывод показаний измеряемой частоты на дисплей в... https://www.cyberforum.ru/ cpp-beginners/ thread1002417.html
1 / 1 / 0
Регистрация: 26.09.2012
Сообщений: 26
0

Не могу найти ошибку - C++ - Ответ 5308454

09.11.2013, 13:09. Показов 493. Ответов 5
Метки (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток. На днях написал программу, в логике программы вроде все правильно и подсчеты идут тоже корректные. Но до завершения программа не доходит и вылетает. Возможно я что-то неправильно сделал при работе с памятью.
Суть задачи через каждые 10+-5 с в накопитель поступают заявки(детали), далее они идут в 1 канал, где обрабатываются 10+-7 с, после завершения обработки они поступают во второй накопитель, далее во 2 канал, где обрабатываются 10+-6 с. После окончания обработки во 2 канале мы должны рассмотреть деталь, если она была в системе больше 25 секунд - она завершена, если от 20 до 25 - отправляем её во 2 накопитель или канал, если меньше 20 - в первый накопитель или канал. Программа должна завершится после завершения 400 заявок.

main.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
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
#include <iostream>
using std::cout;
using std::endl;
using std::cerr;
using std::ios;
 
#include <cstddef>
using std::nullptr_t;
 
#include <deque>
using std::deque;
 
#include <cstdlib>
using std::rand;
using std::exit;
 
#include <fstream>
using std::ofstream;
 
#include <iomanip>
using std::setw;
 
#include "Detail.h"
 
#include "Channel.h"
 
int main()
{
    // накопитель 1 и 2
    deque< Detail* > accumulator1 ( 0, nullptr );
    deque< Detail* > accumulator2 ( 0, nullptr );
 
    // канал 1 и 2
    Channel ch1( 10, 7, 0); // 10+-7
    Channel ch2( 10, 6, 0); // 10+-6
 
    // РЕШАТЕЛЬ - этот указатель нужен для решения
    // что нужно делать с деталями, которые
    // выходят из 2 канала после его завершения
    Detail* solver = nullptr;
 
    int numberOfDetil = 1; // нумирация деталей
 
    // время до поступления новой заявки
    int timeToIncomeNewDetail = 0;
 
    // общее кол-во выполненых деталей
    int totalReadyDetails = 0;
 
    // счет времени
    int totalTime = 1;
 
    // создание файла для вывода результата
    ofstream outResultFile( "result.txt", ios::out );
 
    // проверка возможно ли открыть файл
    if( !outResultFile )
    {
        cerr << "File could not be open" << endl;
        exit( 1 );
    }
 
    // название столбцов в файле
 
    // Time - время работы программы ( итерация )
    // NewDetail - отсчет времени до появления новой детали
    // Accumulator1 - кол-во деталей в 1 накопителе
    // Channel1 - статус 1 канала ( 1 - свободен, 2 - работает, 3 - завершил работу )
    // Ch1WorkTime - время работы  1 канала
    // Accumulator2 - кол-во деталей в 2 накопителе
    // Channel2 - статус 2 канала ( 1 - свободен, 2 - работает, 3 - завершил работу )
    // Ch2WorkTime - время работы  2 канала
    // ReadyDetails - кол-во завершенных деталей
 
    outResultFile << setw( 4 ) << "Time" << " | " << setw( 9 ) << "NewDetail" << " | "
        << setw( 12 ) << "Accumulator1" << " | " << setw( 8 ) << "Channel1" << " | "
        << setw( 11 ) << "Ch1WorkTime" << " | " << setw( 12 ) << "Accumulator2" << " | "
        << setw( 8 ) << "Channel2" << " | " << setw( 11 ) << "Ch2WorkTime" << " | "
        << setw( 12 ) << "ReadyDetails" << " | " << endl;
 
    // на первой секунде создаем первую деталь
    accumulator1.push_back ( new Detail( numberOfDetil ) );
 
    // увеличиваем счетчик деталей на 1
    numberOfDetil++;
 
    // генерируем время поступления новой детали
    timeToIncomeNewDetail = 5 + rand() % 11; // 10+-5
 
    // выполняем до тех пор пока не будет выполнено 400 деталей
    while( totalReadyDetails != 400 )
    {
 
//-------------------------------------------------------------------------------------------//
        // работа 2 канала
 
        // если канал 2 завершил свою работу
        if( 3 == ch2.getCurrentStatus() )
        {
            // указатель на деталь передаем РЕШАТЕЛЮ
            solver = ch2.removeDetail();
 
            // если время детали больше 25 секунд удаляем деталь
            if( solver->getTotalWorkTime() > 25 && false == solver->getRepeatStatus() )
            {
                delete solver;
                totalReadyDetails++;
            }
 
            if( true == solver->getRepeatStatus() )
            {
                delete solver;
                totalReadyDetails++;
            }
 
            // если меньше 25 пяти секунд
            if( false == solver->getRepeatStatus() && solver->getTotalWorkTime() <= 25 )
            {
                // ставим статус детали - повторная обработка
                solver->setRepeatStatus( true );
 
                // если её время больше или равна 20 секундам
                // отправляем её во 2 канал( если он свободен )
                // или во 2 накопитель
                if( solver->getTotalWorkTime() >= 20 )
                {
                    if( 1 == ch2.getCurrentStatus() )
                    {
                        ch2.addDetail( solver );
                    }
                    else
                    {
                        accumulator2.push_back( solver );
                        //cout << "acc2_ch2: " << solver->getNumberOfDetaill() << "  ";
                    }
                }
 
                // если её время меньше 20 секунд
                // отправляем её в 1 канал( если он свободен )
                // или в 1 накопитель
                if( solver->getTotalWorkTime() < 20  )
                {
                    if( 1 == ch1.getCurrentStatus() )
                    {
                        ch1.addDetail( solver );
                    }
                    else
                    {
                        accumulator1.push_back( solver );
                        //cout << "acc1_ch2: " << solver->getNumberOfDetaill() << "  ";
                    }
                }
            }
 
            // РЕШАТЕЛЬ "теряет" всю информацию о детали деталь
            solver = nullptr;
        }
 
        // если канал 2 свободен
        if( 1 == ch2.getCurrentStatus() )
        {
            if( !accumulator2.empty() )
            {
                ch2.addDetail( accumulator2.front() );
                accumulator2.pop_front();
            }
        }
//-------------------------------------------------------------------------------------------//
        // Работа 1 канала
 
        // если канал 1 завершил свою работу
        if( 3 == ch1.getCurrentStatus() )
        {
            // если канал 2 свободен - закидываем деталь во 2 канал
            if( 1 == ch2.getCurrentStatus() )
            {
                ch2.addDetail( ch1.removeDetail() );
            }
            // иначе закидываем её во 2 накопитель
            else
            {
                accumulator2.push_back( ch1.removeDetail() );
                //cout << "acc2_ch1: " << accumulator2[ accumulator2.size() - 1 ]->getNumberOfDetaill() << "  ";
            }
        }
        // если канал 1 свободен
        if( 1 == ch1.getCurrentStatus() )
        {
            if( !accumulator1.empty() )
            {
                ch1.addDetail( accumulator1.front() );
                accumulator1.pop_front();
            }
        }
//-------------------------------------------------------------------------------------------//
        // поступления новой детали
 
        // настало время поступления новой детали
        if( 0 == timeToIncomeNewDetail && numberOfDetil != 400)
        {
            // если канал свободен - закидываем деталь в канал
            if( 1 == ch1.getCurrentStatus() )
            {
                ch1.addDetail( new Detail( numberOfDetil ) );
            }
            // иначе закидываем деталь в накопитель
            else
            {
                accumulator1.push_back( new Detail( numberOfDetil ) );
                //cout << "acc1_ch1: " << accumulator1[ accumulator1.size() - 1 ]->getNumberOfDetaill() << "  ";
            }
 
            // генерирем время поступления новой детали
            numberOfDetil++;
            timeToIncomeNewDetail = 5 + rand() % 11; // 10+-5
        }
 
//-------------------------------------------------------------------------------------------//
        // Вывод
 
        outResultFile << setw( 4 ) << totalTime << " | " << setw( 9 ) << timeToIncomeNewDetail << " | "
        << setw( 12 ) << accumulator1.size() << " | " << setw( 8 ) << ch1.getCurrentStatus() << " | "
        << setw( 11 ) << ch1.getWorkTime() << " | " << setw( 12 ) << accumulator2.size() << " | "
        << setw( 8 ) << ch2.getCurrentStatus() << " | " << setw( 11 ) << ch2.getWorkTime() << " | "
        << setw( 12 ) << totalReadyDetails << " | " << endl;
 
//-------------------------------------------------------------------------------------------//
        // Отсчет времени
 
        if( timeToIncomeNewDetail > 0 )
        {
            timeToIncomeNewDetail--;
        }
 
        ch1.timeChanged();
        ch2.timeChanged();
 
        cout << endl;
 
        if( !accumulator1.empty() )
        {
            for( int i = 0; i < accumulator1.size(); i++ )
            {
                accumulator1[ i ]->incrementTotalWorkTime();
                //cout << accumulator2[ i ]->getNumberOfDetaill() << "  ";
            }
        }
 
        cout << endl;
 
        if( !accumulator2.empty() )
        {
            for( int i = 0; i < accumulator2.size(); i++ )
            {
                accumulator2[ i ]->incrementTotalWorkTime();
            }
        }
 
        totalTime++;
    }
 
    cout << "See result in file result.txt." << endl;
 
    return 0;
}
detail.h
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
#ifndef DETAIL_H
#define DETAIL_H
 
 
class Detail
{
    public:
        explicit Detail( int = 0 );
 
        void setNumberOfDetail( int );
        void setRepeatStatus( bool );
 
        int getNumberOfDetaill();
        int getTotalWorkTime();
        bool getRepeatStatus();
 
        void incrementTotalWorkTime();
 
    private:
        int totalWorkTime;
        int numberOfDetail;
        bool repeatStatus;
};
 
#endif // DETAIL_H
detail.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
#include "Detail.h"
 
#include <iostream>
using std::cout;
using std::endl;
 
Detail::Detail( int value )
{
    totalWorkTime = 0;
 
    setRepeatStatus( false );
    setNumberOfDetail( value );
}
 
void Detail::setNumberOfDetail( int setValue )
{
    numberOfDetail = ( setValue > 0 ) ? setValue : 0;
}
 
void Detail::setRepeatStatus( bool flag )
{
    repeatStatus = flag;
}
 
int Detail::getNumberOfDetaill()
{
    return numberOfDetail;
}
 
int Detail::getTotalWorkTime()
{
    return totalWorkTime;
}
 
bool Detail::getRepeatStatus()
{
    return repeatStatus;
}
 
void Detail::incrementTotalWorkTime()
{
    totalWorkTime++;
}
channel.h
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
#ifndef CHANNEL_H
#define CHANNEL_H
 
class Detail;
 
class Channel
{
    public:
        Channel( int = 1 , int = 0, int = 0 );
        void timeChanged();
 
 
 
        void addDetail( Detail *);
        void setWorkTime( int );
 
        int getWorkTime();
        int getCurrentStatus();
        Detail* removeDetail();
 
    private:
 
        void setCurrentStatus( int );
 
        Detail *currenDetailPtr;
 
        // 1 - свободен
        // 2 - работает
        // 3 - завершен
        int currentStatus;
 
        int workTime;
        int initialValue;
        int rangeValue;
        int timerParametr;
};
 
#endif // CHANNEL_H
channel.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
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
#include "Channel.h"
#include "Detail.h"
 
#include <cstddef>
using std::nullptr_t;
 
#include <cstdlib>
using std::rand;
 
#include <iostream>
using std::cout;
using std::endl;
 
Channel::Channel( int value, int range, int parametr )
{
    initialValue = ( value > 0 ) ? value : 1;
 
    rangeValue = ( range >= 0 ) ? range : 0;
 
    timerParametr = ( parametr >= 0 ) ? parametr : 0;
 
    currenDetailPtr = nullptr;
    setCurrentStatus( 1 );
    setWorkTime( 0 );
}
 
void Channel::timeChanged()
{
    int temp = 0;
 
    temp = getWorkTime();
 
    // отсчет времени работы канала
    if( 2 == getCurrentStatus() && getWorkTime() > 0 )
    {
        // оставшееся время -1
        setWorkTime( --temp );
 
        // суммарное время сущестования детали увеличено на 1
        currenDetailPtr->incrementTotalWorkTime();
    }
 
    // работа канала завершена
    if( 0 == getWorkTime() && 2 == getCurrentStatus() )
    {
        setCurrentStatus( 3 ); // завершен
    }
 
}
 
Detail* Channel::removeDetail()
{
    setWorkTime( 0 );
 
    setCurrentStatus( 1 );
 
    return currenDetailPtr;
}
 
void Channel::addDetail( Detail *newDetail )
{
    currenDetailPtr = newDetail;
 
    if( rangeValue >= 0 )
    {
        if( 0 == timerParametr )
        {
           setWorkTime( ( initialValue - rangeValue ) + rand() % ( 2 * rangeValue + 1 ) );
        }
        if ( 1 == timerParametr )
        {
            setWorkTime(initialValue + rangeValue);
        }
        if ( 2 == timerParametr )
        {
            setWorkTime(initialValue - rangeValue);
        }
    }
 
    setCurrentStatus( 2 );
}
 
void Channel::setWorkTime( int number )
{
    workTime = ( number >= 0 ) ? number : 0;
}
 
void Channel::setCurrentStatus( int number )
{
    currentStatus = ( number >= 1 && number <=3 ) ? number : 0;
}
 
int Channel::getWorkTime()
{
    return workTime;
}
 
int Channel::getCurrentStatus()
{
    return currentStatus;
}
Буду премного благодарен, если кто-то разыщет мою ошибку и тем, кто просто подскажет что можно улучшить в этой программе, для уменьшения вероятности возникновения ошибки.

Вернуться к обсуждению:
Не могу найти ошибку C++
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.11.2013, 13:09
Готовые ответы и решения:

Найти слова, повторяющиеся более одного раза, не могу найти ошибку
#include &lt;iostream&gt; using namespace std; void obr1(char **s, char **mas, int n, int m) { int i; int k; char *tm; for(i...

Массивы. Посчитать количество положительных, найти минимальное, удалить строку с минимальным (Не могу найти ошибку)
// Заданы матрицы X(8;4),Y(5;5),Z(6;9). // Для каждой из матриц определить строку, в которой находится наименьшее // количество...

Не могу найти ошибку
В общем написал программу , только не понимаю ошибок

5
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.11.2013, 13:09
Помогаю со студенческими работами здесь

С++ не могу найти ошибку
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;math.h&gt; typedef double TMatrix; typedef double TVector; const int N=10; ...

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

не могу найти ошибку!
почему в typePlane вместо значения, которое вводит пользователь, выводит какое-то большое значение из цифр и букв? ...

Не могу найти ошибку
#include &quot;stdafx.h&quot; #include &lt;conio.h&gt; class Sum { public: int sum1 (int x1, int x2) { return x1 + x2; ...

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

0
Новые блоги и статьи
Нестандартные приемы работы с итераторами в C++
stackOverflow 02.03.2025
Итераторы - один из краеугольных камней C++, предоставляющий универсальный механизм обхода и манипуляции данными в контейнерах. Появившись как замена небезопасным указателям, они эволюционировали от. . .
Лексический анализ и регулярные выражения в C++26
stackOverflow 02.03.2025
Лексический анализ - ядро любого компилятора и инструмента обработки текста. Каждый программист сталкивается с задачами парсинга строк, обработки файлов конфигурации или анализа пользовательского. . .
Подробно о std::mdspan в C++23
stackOverflow 02.03.2025
Работа с многомерными массивами данных традиционно была одной из сложных задач в C++. Программистам приходилось создавать собственные абстракции или использовать сторонние библиотеки для эффективной. . .
Колмогоровская сложность в C++: Путь к совершенному коду
stackOverflow 02.03.2025
Абстрактная математическая теория Колмогорова стала мощным средством оценки и улучшения программного кода. Сложность алгоритма - не только в его вычислительной эффективности, но и в том, насколько. . .
Изменения в C# 14
stackOverflow 02.03.2025
Одно из самых значимых изменений в C# 14 - поддержка коллекционных выражений, которые позволяют создавать и инициализировать коллекции с помощью нового лаконичного синтаксиса. Это нововведение. . .
Разработка кроссплатформен­­­­ного мобильного приложения для iOS/Android на C++
bytestream 02.03.2025
C++ как язык программирования высокого уровня с прямым доступом к аппаратным ресурсам позволяет создавать приложения, работающие одинаково быстро как на iOS, так и на Android устройствах. Ни для кого. . .
Аутентификация/авторизация на Golang
bytestream 02.03.2025
Go предлагает множество возможностей для создания надежных систем аутентификации. Встроенные криптографические пакеты, высокая производительность и простота параллельной обработки запросов делают его. . .
Нововведения TypeScript 5.8
bytestream 02.03.2025
TypeScript 5. 8 приносит много возможностей и оптимизаций, которые существенно расширяют границы типобезопасного программирования на JavaScript. Эта версия включает ряд значительных улучшений в работе. . .
Выполнение кода в игровом цикле Unity с использованием не-MonoBehaviour классов C#
bytestream 02.03.2025
Обычный подход к разработке игр на Unity тесно связан с использованием MonoBehaviour - базового класса для скриптов, обеспечивающего доступ к игровому циклу через события Update, FixedUpdate и. . .
Управление инстанцирование­м вложенных классов в C#
bytestream 02.03.2025
Вложенные классы в C# - мощное средство для создания тесно связанных типов данных и логики. Такие классы определяются внутри других классов и обеспечивают высокий уровень инкапсуляции, позволяя. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru