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

Разработать программу управление двоичными файлами с записями фиксированной длины(структура и работа с ней)

10.11.2022, 03:17. Показов 4440. Ответов 62

Студворк — интернет-сервис помощи студентам
Приветствую всех. Очередное задание, над которым я буду биться не покладая рук несколько дней.
Как обычно от всех читающих рад буду получить любое пояснение / видение / список литературы и полезные ссылки / код / алгоритм к моему заданию, а так же пожелания удачи и терпения

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

Общие требования:
файл состоит из записей определенной структуры, согласно варианту. Записи имеют ключ, уникальный в пределах файла.
Требования к подготовке и выполнению задания
1. Разработать структуру записи двоичного файла согласно варианту задания.
2. Подготовить тестовые данные в текстовом файле с кодировкой ASCII, в соответствии со структурой записи варианта. При открытии файла выполнить контроль его существования и открытия.
Примечание. Реализация операций по чтению данных из файла будет проще, если значение для каждого поля записи размещать на отдельной строке текстового редактора.
3. Имя файла вводит пользователь.
4. При открытии файла обеспечить контроль существования и открытия файла.
5. При применении механизма прямого доступа к записи файла выполнить контроль присутствия записи с заданным номером в файле.
6. Разработать функции для выполнения операций:
  • преобразование тестовых данных из текстового файла в двоичный файл;
  • сохранение данных двоичного файла в текстовом, так, чтобы используя их можно было восстановить двоичный файл;
  • вывод всех записей двоичного файла;
  • доступ к записи по ее порядковому номеру в файле, используя механизм прямого доступа к записи в двоичном файле;
  • удаление записи с заданным значением ключа, выполнить путем замены на последнюю запись.
  • Манипулирование записями в двоичном файле согласно дополнительным операциям, определенным в варианте;
7. Сохраните функции в новом модуле.
8. Разработать приложение, демонстрирующее выполнение всех операций, подключив к нему модуль с функциями.
9. Выполнить тестирование приложения, продемонстрировав выполнение всех операций.

То, что указано в задании 6 важно. Я обязательно напишу каждую функцию, но пока постараюсь сосредоточиться на основном задании и начну с него.
Дабы не усложнять жизнь и кидать сюда код, я всё буду делать в одном файле, потом разнесу и через switch case сделаю минюшку, чтобы удобно всё это тестить.


Само же задание(основная функция) звучит так:


Структура записи:
Учет техосмотра автомобилей.
Структура записи об автомобиле:
Номер (код региона, цифровой код, буквенный код), Модель, Цвет, Сведения о владельце (Фамилия, Имя, Адрес), дата последнего техосмотра.

Доп. Операция:
1. Заменить дату техосмотра у автомобиля с заданным номером на новую дату.
2. Сформировать список авто одной модели, прошедших техосмотр в заданную дату.



P.S Пока не могу задать какого-то конкретного вопроса, а просить чтобы растолковали что там вообще в условии написано как-то неловко (хотя я был бы рад). В общем буду писать конкретные вопросы как только смогу их составить. Пока же рад любой информации по теме. Главное — не сдать, а разобраться. Сейчас же постараюсь дойти хотя бы до какой-то части этого процесса. Начну, видимо со структуры и работы с ней. Надеюсь на твоё понимание, дорогой читатель)))
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.11.2022, 03:17
Ответы с готовыми решениями:

Управление двоичными файлами с записями фиксированной длины.Разбиаение записи на команды
Имеется задача. Честно говоря, не знаю как подступиться ни с точки зрения кода ни алгоритмически. Очень плохо даётся всё связанное с...

Работа с двоичными файлами: слова заданной длины
Работа с двоичными файлами: Создать файл, состоящий из слов. Вывести на экран все слова, длина которых равна заданному числу.

Создать текстовый файл с записями фиксированной длины.
Создать текстовый файл с записями фиксированной длины. Файл содержит информацию о стоимости 10 наименований товаров в различных...

62
1 / 1 / 0
Регистрация: 19.03.2022
Сообщений: 99
13.11.2022, 18:38  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от SmallEvil Посмотреть сообщение
В смысле решение были одинаковыми ? )
Угу. Ответы перетекали от старшекурсников к младшим еще до того как я поступил. А задания не меняются

Добавлено через 2 минуты
Цитата Сообщение от SmallEvil Посмотреть сообщение
сравнить две Си строки - strcmp
Всё заработало. Теперь функция походу даже выполняет всё, что должна

C++
1
2
3
4
5
6
7
8
9
10
int replaceData(Car car, char num[12], char newData[12]) {
    Car carBuf = car;
    if(strcmp(carBuf.carNum, num) == 0) {
        strcpy(carBuf.data, newData);
        cout << carBuf.data << "Вот такие пироги" << endl;
    } else {
        cout << "Все плохо" << endl;
    }
    return 0;
}
Добавлено через 2 минуты
Приступаю ко второй функции

Добавлено через 54 секунды
И функцию смены даты всё же void сделаю. По смыслу лучше походит
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
13.11.2022, 18:41
Так покажите как это задание решали "деды". Интересно же.
Цитата Сообщение от daniil_novel Посмотреть сообщение
Теперь функция походу даже выполняет всё, что должна
Я в этом сомневаюсь.

Цитата Сообщение от daniil_novel Посмотреть сообщение
Car carBuf = car;
Это копия "Машины".
Все изменения с carBuf после выхода из функции не применяться к car.
Передавайте "Машины" по ссылке.
И работайте с ее полями.

C++
1
2
3
4
5
6
7
8
9
int replaceData(Car &car, const char *num, const char *newData) {
    if(strcmp(car.carNum, num) == 0) {
        strcpy(car.data, newData);
        cout << car.data << "Вот такие пироги" << endl;
    } else {
        cout << "Все плохо" << endl;
    }
    return 0;
}
1
1 / 1 / 0
Регистрация: 19.03.2022
Сообщений: 99
13.11.2022, 18:42  [ТС]
А. То есть мы исходную структуру меняем. Я немного по-другому условие понял
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
13.11.2022, 18:43
И не data, а все же date, если это означает Дата
0
1 / 1 / 0
Регистрация: 19.03.2022
Сообщений: 99
13.11.2022, 19:29  [ТС]
А вот касаемо второго задания "Сформировать список авто одной модели, прошедших техосмотр в заданную дату". Я должен сделать массив наших структур изначально, чтобы потом уже по нему выборку сделать?

Добавлено через 1 минуту
Цитата Сообщение от SmallEvil Посмотреть сообщение
И не data, а все же date
Да,точно. Спасибо). Я дату с данными перепутал

Добавлено через 43 минуты
Попробовал я сделать такой цикл, но опять что-то пошло не так

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
void generateListCar(Car &carList , const char *compareDate, const char *model) {
    int i = 0;
    while((strcmp(.carList[i].date, compareDate) == 0) && (strcmp(carList[i].model, model) == 0)) {
        
    }
}
 
int main() {
    setlocale(LC_ALL, "rus");
    Car c1{"97", "BMW", "red", "Petrov-Petr-Msk-Stroiteley-20k1", "03.08.2022"};
    char num[] = "97";
    char newDate[] = "01.01.2022";
    //replaceDate(c1, num, newDate);
    Car carList[6] = {"11-123-ABC", "BMW", "red", "Petrov-Petr-Msk-Stroiteley-21k1", "01.08.2022",
                             "23-120-CAW", "Lada", "black", "Petrov-Maksim-Msk-Stroiteley-22k1", "02.08.2022",
                             "66-154-WER", "Crysler", "yellow", "Petrov-Pavel-Msk-Stroiteley-23k1", "03.08.2022",
                             "41-178-MWD", "UAZ", "magenta", "Sidorov-Ivan-Msk-Stroiteley-24k2", "04.08.2022",
                             "78-223-MIG", "Crysler", "white", "Sidorov-Makar-Msk-Stroiteley-28k3", "03.08.2022",
                             "97-666-APO", "Crysler", "green", "Egorov-Nikita-Msk-Stroiteley-29k4", "03.08.2022"};
    char compareDate[] = "03.08.2022";
    char model[] = "Crysler";
 
    generateListCar(*carList, compareDate, model);
}
0
1 / 1 / 0
Регистрация: 19.03.2022
Сообщений: 99
15.11.2022, 19:01  [ТС]
Ну собственно с этим я и застрял по сей день
0
518 / 410 / 188
Регистрация: 08.04.2013
Сообщений: 1,751
15.11.2022, 21:17
Цитата Сообщение от daniil_novel Посмотреть сообщение
с этим я и застрял по сей день
По вашему заданию вы даже еще и не начинали. с 2 по 6 пункт это работа с файлами перенос данных из текстового в бинарный, и далее работа с бин файлом
0
1 / 1 / 0
Регистрация: 19.03.2022
Сообщений: 99
15.11.2022, 21:25  [ТС]
Я писал, что делаю основное задание. То, что упомянули вы у всех общее. Не составит труда взять у кого-нибудь, чтобы сдать. Сейчас мне надо разобраться с заданием по моему варианту. То, как сделать остальные я всегда смогу посмотреть и разобраться. Это не так сложно.
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
15.11.2022, 23:02
Цитата Сообщение от daniil_novel Посмотреть сообщение
Ну собственно с этим я и застрял по сей день
Ну так это не вопрос, и даже не указание места затруднения/непонимания.
Что на такое можно ответить, ничего.
0
1 / 1 / 0
Регистрация: 19.03.2022
Сообщений: 99
15.11.2022, 23:43  [ТС]
Добил прогу. Она компилируется. Но почему-то выводит крокозябры такого вида:

0
Dе/☺?о♥zШЦ?↔▲

z¶и/☺☺/☺↔
►∟й/☺?
lк/☺ШTщy?к/☺0dрy?TщyШTщy?к/☺р-цyяяяя?к/☺>крy"cЫJ?к/☺?к☺☺┐к/☺►-цyяяяяёк/☺ымрy▬cЫJ?Tщy☺



Вот сам код в последней его инстанции

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
Car* generateListCar(Car *carList , const char *compareDate, const char *model) {
    int i = 0;
    int j = 0;
    Car newCarList[6] = {"0","0","0","0","0",
                        "0","0","0","0","0",
                        "0","0","0","0","0",
                        "0","0","0","0","0",
                        "0","0","0","0","0",
                        "0","0","0","0","0",
    };
    while((strcmp(carList[i].date, compareDate) == 0) && (strcmp(carList[i].model, model) == 0)) {
        strcpy(newCarList[i].date, carList[i].date);
        strcpy(newCarList[i].carNum, carList[i].carNum);
        strcpy(newCarList[i].model, carList[i].model);
        strcpy(newCarList[i].color, carList[i].color);
        strcpy(newCarList[i].infoForHolder, carList[i].infoForHolder);
        i++;
    }
    return newCarList;
}
 
int main() {
    setlocale(LC_ALL, "Russian");
 
    Car c1{"97", "BMW", "red", "Petrov-Petr-Msk-Stroiteley-20k1", "03.08.2022"};
    char num[] = "97";
    char newDate[] = "01.01.2022";
    //replaceDate(c1, num, newDate);
    Car carList[6] =        {"11-123-ABC", "BMW", "red", "Petrov-Petr-Msk-Stroiteley-21k1", "01.08.2022",
                             "23-120-CAW", "Lada", "black", "Petrov-Maksim-Msk-Stroiteley-22k1", "02.08.2022",
                             "66-154-WER", "Crysler", "yellow", "Petrov-Pavel-Msk-Stroiteley-23k1", "03.08.2022",
                             "41-178-MWD", "UAZ", "magenta", "Sidorov-Ivan-Msk-Stroiteley-24k2", "04.08.2022",
                             "78-223-MIG", "Crysler", "white", "Sidorov-Makar-Msk-Stroiteley-28k3", "03.08.2022",
                             "97-666-APO", "Crysler", "green", "Egorov-Nikita-Msk-Stroiteley-29k4", "03.08.2022"};
    char compareDate[] = "03.08.2022";
    char model[] = "Crysler";
    
    Car *newCarList = generateListCar(carList, compareDate, model);
    for(size_t i = 0; i < 6; i++) {
        cout << newCarList[i].model << endl;
    }
 
}
Походу где-то косяк в памяти. Не могу понять какой(
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
15.11.2022, 23:49
daniil_novel, положи (под спойлер) структуры.
Я ничего не понимаю, что у вас там происходит и почему. То есть вообще ничего.
C++
1
return newCarList;
Нельзя возвращать указатель/ссылку на локальные данные.
0
1 / 1 / 0
Регистрация: 19.03.2022
Сообщений: 99
15.11.2022, 23:58  [ТС]
Цитата Сообщение от SmallEvil Посмотреть сообщение
Нельзя возвращать указатель/ссылку на локальные данные.
А что можно? Массив структур?
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
16.11.2022, 00:05
Цитата Сообщение от daniil_novel Посмотреть сообщение
Массив
Нельзя

Добавлено через 4 минуты
Не помню, что бы я решал такие задачи, такими примитивными средствами. Либо память плохая.
0
1 / 1 / 0
Регистрация: 19.03.2022
Сообщений: 99
16.11.2022, 00:13  [ТС]
Ну все тогда
printf("функция не работает, программист застрелилс.............................. ..");

Добавлено через 2 минуты
Цитата Сообщение от SmallEvil Посмотреть сообщение
Не помню, что бы я решал такие задачи, такими примитивными средствами
Если её можно решить не примитивными средствами, я же только за. Скажите какие средства прогуглить лии как вообще к этому подойти и я попробую это сделать. Пока исходил из того, что знал и до чего смог дотумкать, но походу этого оказалось мало

Добавлено через 1 минуту
Чем больше общих и вообще различных советов по теме, тем лучше. Как минимум я теперь знаю такие офигенные функции, как seek, sekp, strcmp, strcpy

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

Но при этом моя функция принимает и модель и дату. По-правильному же сначала мы должны составлять список авто, которые прошли техосмотр в заданную дату, а находить одинаковые машины
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
16.11.2022, 00:19
Для работы с неопределенным количеством данных, очень удобно работать с динамическими структурами данных.
Такими как :
последовательные : vector, list, stack, очереди
ассоциативные, set, map, хеш-таблицы, наверное, очередь по приоритетам.

Есть два варианта :
1. Научится использовать vector, с ним такие задачи пойдут как по маслу.
2. Более низкий уровень, как сейчас, только на динамических массивах.
При этом все операции выборки, поиска, будут возвращать лишь указатели/индексы на элементы из базы(массива)/файла.

На какой вариант показать пример ?
И еще раз, покажите структуры (Car и так далее), для теста.

Добавлено через 1 минуту
Цитата Сообщение от daniil_novel Посмотреть сообщение
"Сформировать список авто одной модели, прошедших техосмотр в заданную дату"
С такими формулировками можно вывих извилины получить
Одной модели ? Какой ? Естественно что вы включили и модель в фильтр поиска.
0
1 / 1 / 0
Регистрация: 19.03.2022
Сообщений: 99
16.11.2022, 00:25  [ТС]
Цитата Сообщение от SmallEvil Посмотреть сообщение
Одной модели ? Какой ? Естественно что вы включили и модель в фильтр поиска.
О, получается я молодец. Спасибо

Добавлено через 1 минуту
Цитата Сообщение от SmallEvil Посмотреть сообщение
И еще раз, покажите структуры (Car и так далее), для теста.
Вот весь код, непосильным трубом написанный

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
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <fstream>
#include <string>
 
using namespace std;
 
struct Car {
    char carNum[12];
    char model[32];
    char color[12]; 
    char infoForHolder[256];
    char date[12];
 
};
 
int replaceDate(Car &car, const char *num, const char *newDate) {
    if(strcmp(car.carNum, num) == 0) {
        strcpy(car.date, newDate);
        cout << car.date << "Вот такие пироги" << endl;
    } else {
        cout << "Все плохо" << endl;
    }
    return 0;
}
 
void generateListCar(Car *carList , const char *compareDate, const char *model) {
    int i = 0;
    int j = 0;
    Car newCarList[6] = {"0","0","0","0","0",
                        "0","0","0","0","0",
                        "0","0","0","0","0",
                        "0","0","0","0","0",
                        "0","0","0","0","0",
                        "0","0","0","0","0",
    };
    while((strcmp(carList[i].date, compareDate) == 0) && (strcmp(carList[i].model, model) == 0)) {
        strcpy(newCarList[i].date, carList[i].date);
        strcpy(newCarList[i].carNum, carList[i].carNum);
        strcpy(newCarList[i].model, carList[i].model);
        strcpy(newCarList[i].color, carList[i].color);
        strcpy(newCarList[i].infoForHolder, carList[i].infoForHolder);
        i++;
    }
 
    for(size_t i = 0; i < 6; i++) {
        cout << newCarList[i].model << endl;
    }
 
}
 
int main() {
    setlocale(LC_ALL, "Russian");
 
    Car c1{"97", "BMW", "red", "Petrov-Petr-Msk-Stroiteley-20k1", "03.08.2022"};
    char num[] = "97";
    char newDate[] = "01.01.2022";
    //replaceDate(c1, num, newDate);
    Car carList[6] =        {"11-123-ABC", "BMW", "red", "Petrov-Petr-Msk-Stroiteley-21k1", "01.08.2022",
                             "23-120-CAW", "Lada", "black", "Petrov-Maksim-Msk-Stroiteley-22k1", "02.08.2022",
                             "66-154-WER", "Crysler", "yellow", "Petrov-Pavel-Msk-Stroiteley-23k1", "03.08.2022",
                             "41-178-MWD", "UAZ", "magenta", "Sidorov-Ivan-Msk-Stroiteley-24k2", "04.08.2022",
                             "78-223-MIG", "Crysler", "white", "Sidorov-Makar-Msk-Stroiteley-28k3", "03.08.2022",
                             "97-666-APO", "Crysler", "green", "Egorov-Nikita-Msk-Stroiteley-29k4", "03.08.2022"};
    char compareDate[] = "03.08.2022";
    char model[] = "Crysler";
 
    generateListCar(carList, compareDate, model);
}
Добавлено через 1 минуту
Цитата Сообщение от SmallEvil Посмотреть сообщение
На какой вариант показать пример ?
Хороший вопрос. Я не знаю. Ну с указателями хоть как-то знаком, хотя через них, насколько я знаю, можно сделать куда большее количество задач, чем через вектор. Оставляю на ваш выбор. Через что лучше, того и пример
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
16.11.2022, 00:28
Цитата Сообщение от daniil_novel Посмотреть сообщение
хотя через них
Вы на простой задаче намучаетесь прилично, а на сложной вообще можно загнуться.
Напишу пока на векторе, если что завтра сделаем и на указателях.
0
1 / 1 / 0
Регистрация: 19.03.2022
Сообщений: 99
16.11.2022, 00:45  [ТС]
Иисус, ты ли это?

Добавлено через 40 секунд
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
16.11.2022, 00:46
Что то, явно пошло не так
Мне легче сделать метод для бинарной записи нормальной структуры, чем вот это вот все ...
0
1 / 1 / 0
Регистрация: 19.03.2022
Сообщений: 99
16.11.2022, 00:58  [ТС]
А, ой

Добавлено через 1 минуту
Ну сделайте как считаете правильным. Я дальше уже подстроюсь, изучу что есть и попробую продолжить
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.11.2022, 00:58

Разработать программу на основе классов для определения одномерных массивов строк фиксированной длины
Разработать программу на основе классов для определения одномерных массивов строк фиксированной длины. Предусмотреть возможность обращения...

Разработать программу на основе классов для определения одномерных массивов строк фиксированной длины
Разработать программу на основе классов для определения одномерных массивов строк фиксированной длины. Предусмотреть возможность...

Работа с двоичными файлами
Дан файл координат вершин ломаной линии на плоскости. Определить, имеет ли ломаная линия самопересечения, если да, то записать в файл G...

Работа с двоичными файлами
Дана последовательность из n вещественных чисел. Записать все эти числа в файл. Вывести на экран все положительные компоненты файла.

Работа с двоичными файлами
Задачи на использование двоичных и текстовых файлов . Условие вида &quot;дан файл&quot; означает, что пользователем вводится количество элементов и...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Алиса нашла кучу ошибок компиляции и запуска в проекте, который без проблем компилировался и запускался)))
anaschu 30.06.2026
Я пока посмеюся, но завтра проверю. А вообще интерсно. Дал алисе файл, в котором точно нет ошибок компиляции и запуска, и попросил их найти. Нашла кучу))) Критические ошибки, мешающие компиляции и. . .
сукцессия 16. Общий обзор, в основном что бы другие ии поняли
anaschu 29.06.2026
# Передаточный документ: модель микоризной сукцессии (для нового чата) Этот документ предназначен для того, чтобы новый чат Claude мог продолжить работу без необходимости заново разбираться в. . .
сукцессия 15 неявная схема
anaschu 29.06.2026
Алиса Калибровка параметров симбиотической модели: технический обзор Содержание: Введение Постановка проблемы Технические аспекты реализации Процесс внедрения изменений
сукцессия 14. Обновленная схема модели
anaschu 28.06.2026
ГЛОБАЛЬНАЯ ОПИСАТЕЛЬНАЯ СПЕЦИФИКАЦИЯ ЭКОСИСТЕМНОЙ МОДЕЛИ «SOIL CHEMISTRY & MYCORRHIZA 2. 0» https:/ / ibb. co/ NnkGpfMd Представленная интегрированная схема описывает непрерывную нелинейную. . .
сукцессия 13. Питон модель трехзонного мицелия, пока что в основном арбускулярного
anaschu 28.06.2026
## Разработка агентной модели микоризной сукцессии: от выявления артефактов к созданию комплексной системы ### Аннотация Представлено исследование по разработке агентной модели микоризной. . .
сукцессия 12. краткий список проверок модели перед запуском.
anaschu 27.06.2026
Скрытые отказы в моделях систем динамики (SD-models) экологических систем: два случая из практики Контекст Разбирался прототип модели систем динамики (SD-модели) микоризной сукцессии: пять. . .
Сукцессия 11. Проверка орудий перед войной: разработка через тестирование
anaschu 27.06.2026
Как не дать модели соврать самой себе: проверки для симуляции микоризной сукцессии Введение Когда вы строите математическую модель живой системы — грибов, растений, почвы — главная опасность. . .
10 сукцессия. Питон код войны грибов и растений
anaschu 27.06.2026
import numpy as np class PlantAgent: def __init__(self, name, strategy, initial_biomass): self. name = name self. strategy = strategy # "greedy" (широколиственные) или. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru