Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.71/21: Рейтинг темы: голосов - 21, средняя оценка - 4.71
21 / 9 / 6
Регистрация: 10.11.2017
Сообщений: 148

Команды для работы со строками в ассемблере

20.12.2024, 10:24. Показов 4933. Ответов 46
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Нужно решить данную задачу во встроенном ассемблере C++: Найти слова, оканчивающиеся на заданную с клавиатуры букву, и перевернуть.
Пытаюсь сделать уже вторую неделю, выходит так себе. Прикладываю код, который писал сам.
Писать на С++ можно только считывание с клавиатуры и вывод на экран, как написано в приложенном коде.
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
#include <iostream>
#include <cstring>
using namespace std;
 
int main() {
    char ch;
    char source[30] = "send string stronge";
    char dest[30] = "                 ";
    int len1;
    short cch;
    int i = 0;
    len1 = strlen(source);
    cout << "Enter a character: ";
    cin >> ch;
    cch = int(ch);
 
    _asm {
        lea edi, source; // Загружаем адрес исходной строки в регистр edi
        mov ecx, len1; // Загружаем длину строки в регистр ecx
        mov esi, 0; // Инициализируем индекс для dest
 
    search_loop:
        mov al, byte ptr[cch]; // Загружаем считанный символ в регистр al
        repne scasb; // Ищем символ в строке
        mov ebx, edi; // Сохраняем адрес найденного символа в ebx
        dec ebx; // Переходим к найденному символу
 
        mov al, ' '; // Загружаем пробел в регистр al
        repne scasb; // Ищем пробел в строке
        dec edi; // Переходим к пробелу
 
        mov edx, edi; // Сохраняем адрес пробела в edx
        sub edx, ebx; // Вычисляем длину словаd
        dec edi; // Переходим к последнему символу слова
        mov esi, edi; // Сохраняем адрес последней буквы слова в esi
 
        lea edi, dest; // Загружаем адрес для записи в dest
 
    copy_word:
        mov  al, byte ptr[esi];
        mov[edi], al;
        dec  esi;
        inc  edi;
        dec  cx;
        jne  copy_word;
        jne search_loop;
    }
 
    cout << "source - "; // Выводим исходную строку
    for (i = 0; i < 20; i++)
        cout << source[i]; // Выводим часть исходной строки
    cout << "\n";
 
    cout << "dest - "; // Выводим строку dest
    for (i = 0; i < 20; i++)
        cout << dest[i]; // Выводим часть строки dest
 
    return 0;
}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.12.2024, 10:24
Ответы с готовыми решениями:

Заменить в строке каждую точку ‘.’ на многоточие “…” , используя команды работы со строками
Нужно заменить &quot;.&quot; на &quot;...&quot; . Я уже написал код, который заменяет первую точку на многоточие, но мне нужно зациклить так, чтобы все...

Найти невозможные или ошибочные команды на Ассемблере для микроконтроллера Intel 8051
Пожалуйста, срочно нужно Найти невозможные или ошибочные команды на Ассемблере для микроконтроллера Intel 8051 JC 23H AJMP RR IE:...

Реализовать на ассемблере функцию для работы с числами половинной точности
Реализовать на ассемблере функцию для работы с так называемыми числами половинной точности (формат binary16 стандарта IEEE 754-2008. В...

46
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
23.12.2024, 12:43
Студворк — интернет-сервис помощи студентам
А под какую архитектуру компилируется: под 64 или 32? У вас код под 32.
0
631 / 526 / 104
Регистрация: 05.08.2022
Сообщений: 2,810
23.12.2024, 12:56
Цитата Сообщение от Royal_X Посмотреть сообщение
Если уж пошло на то, то лучше ассемблерный код делать отдельной единицей трансляции.
Как это изменит результат написания кода данного задания? как это ускорит получение ответа на вопрос ТС?
А если никак - то чем лучше в данном случае? опять какие-то фантазии про сферического коня в вакууме. Без ответов для ТС.

Добавлено через 47 секунд
Цитата Сообщение от CoderHuligan Посмотреть сообщение
А под какую архитектуру компилируется: под 64 или 32?
Судя по тому, что оно вообще компилируется - ответ явно x86
1
23.12.2024, 13:10

Не по теме:

Цитата Сообщение от KSergey9 Посмотреть сообщение
Как это изменит результат написания кода данного задания? как это ускорит получение ответа на вопрос ТС?
Я бы помог, если разбирался бы в ассемблере. Но это всё отмазки, ибо если было бы желание, то мог бы разобраться и в ассемблере, и в задании, посмотреть там-сям, и что-то предложить ТС. Но у меня нет никакого желания погружаться в ассемблер, особенно, когда я занят, и учитывая, что на данный момент нет целей погружаться в эту область.
А мой пост прямо не связан с темой. Я отвечал с цитатой на конкретный пост. Так сказать, в рамках данной темы тут одновременно течет дискуссия о целесообразности таких заданий.

0
21 / 9 / 6
Регистрация: 10.11.2017
Сообщений: 148
23.12.2024, 13:31  [ТС]
Цитата Сообщение от KSergey9 Посмотреть сообщение
Судя по тому, что оно вообще компилируется - ответ явно x86
да, верно.
0
631 / 526 / 104
Регистрация: 05.08.2022
Сообщений: 2,810
23.12.2024, 13:55
Цитата Сообщение от Женя Брянцев Посмотреть сообщение
Ошибка C2415 недопустимый тип операнда Asm 58
Ошибка C2415 недопустимый тип операнда Asm 60
С допустимыми режимами адресации для x86 я плаваю, главное - не знаю где можно посмотреть допустимые варианты для разных команд.
По ошибкам предполагаю, что для cmp нет возможности во втором операнде указать косвенную адресацию в виде "ссылка на переменную", тем более, если первый операнд -тоже косвенная ссылка. Ну либо не понятно какой должен быть для этого синтаксис. Примеров тоже не нагуглилось.

Чтобы объехать проблему - предлагаю сначала переложить в регистр значение переменной cch, а потом с этим регистром сравнить.

Заработает ли после этого алгоритм - не знаю, в смысл написанного не вникал.
1
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
23.12.2024, 15:48
Цитата Сообщение от Женя Брянцев Посмотреть сообщение
да, верно.
Сейчас уже редкость 32 битная ось...

Добавлено через 5 минут
Цитата Сообщение от Женя Брянцев Посмотреть сообщение
cmp byte ptr[ebx], cch; // Сравниваем первый символ с введенным
Ассемблер считает операнд cch как hex немедленный операнд, а не переменную cch. измените имя переменной, чтобы она не оканчивалась на h
1
21 / 9 / 6
Регистрация: 10.11.2017
Сообщений: 148
23.12.2024, 16:55  [ТС]
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Ассемблер считает операнд cch как hex немедленный операнд, а не переменную cch. измените имя переменной, чтобы она не оканчивалась на 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
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
#include <iostream>
#include <cstring>
using namespace std;
 
bool is_delim(char c) {
    return c == ' '; // Проверяем, является ли символ пробелом
}
 
int main() {
    char ch;
    char source[30] = "send string stronge";
    char dest[30] = "";
    int len1;
    char ccd; // Изменено с short на char
    int i = 0;
    len1 = strlen(source);
 
    cout << "Enter a character: ";
    cin >> ch;
    ccd = ch; // Присваиваем ch в ccd
 
    __asm {
        lea edi, source; // Загружаем адрес исходной строки в регистр edi
        mov ecx, len1; // Загружаем длину строки в регистр ecx
        xor esi, esi; // Инициализируем индекс для dest (индекс в dest равен 0)
 
    outer_loop:
        cmp byte ptr[edi], 0; // Проверяем конец строки
        je end_search; // Если конец строки, выходим
 
        // Пропускаем пробелы
    skip_delimiters:
        cmp byte ptr[edi], ' '; // Сравниваем текущий символ с пробелом
        je next_char; // Если пробел, переходим к следующему символу
        jmp process_word; // Если не пробел, обрабатываем слово
 
    next_char:
        inc edi; // Переходим к следующему символу
        jmp skip_delimiters; // Повторяем проверку на пробел
 
    process_word:
        // Запоминаем указатель на начало слова
        mov ebx, edi;
 
        // Пропускаем все буквы слова
    skip_non_delimiters:
        cmp byte ptr[edi], 0; // Проверяем конец строки
        je end_word; // Если конец строки, выходим
        cmp byte ptr[edi], ' '; // Сравниваем с пробелом
        jne continue_word; // Если не пробел, продолжаем
 
    end_word:
        // Теперь есть указатели на начала слова и на первый символ после слова
        mov edx, edi; // Сохраняем указатель на конец слова
 
        // Проверяем первый и последний символ
        dec edx; // Возвращаемся к последнему символу слова
        cmp byte ptr[ebx], ccd; // Сравниваем первый символ с введенным
        jne outer_loop; // Если не совпадает, переходим к следующему слову
        cmp byte ptr[edx], ccd; // Сравниваем последний символ с введенным
        jne outer_loop; // Если не совпадает, переходим к следующему слову
 
        // Реверсируем слово
        lea esi, dest; // Загружаем адрес для записи в dest
        mov edi, ebx; // Указатель на начало слова
 
    reverse_word:
        mov al, [edi]; // Загружаем текущий символ
        mov byte ptr[esi], al; // Записываем его в dest
        inc esi; // Переходим к следующей позиции в dest
        inc edi; // Увеличиваем индекс для следующего символа
        cmp edi, edx; // Проверяем, достигли конца слова
        jl reverse_word; // Если нет, продолжаем
 
        // Завершаем строку нулем
        mov byte ptr[esi], 0;
        jmp outer_loop; // Возвращаемся к обработке следующего слова
 
    end_search:
    }
 
    cout << "source - " << source << endl; // Выводим исходную строку
    cout << "dest - " << dest << endl; // Выводим строку dest
 
    return 0;
}
0
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
23.12.2024, 17:08
Цитата Сообщение от Женя Брянцев Посмотреть сообщение
это не помогло
Это не информативное сообщение. Ошибки от компилятора более информативны.
1
21 / 9 / 6
Регистрация: 10.11.2017
Сообщений: 148
23.12.2024, 17:28  [ТС]
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Ошибки от компилятора более информативны.
ну ошибка такая же как и была

Цитата Сообщение от KSergey9 Посмотреть сообщение
Ошибка C2415 недопустимый тип операнда в строке 58
Ошибка C2415 недопустимый тип операнда в строке 60
0
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
23.12.2024, 17:34
Попробуй сравнить через регистр. То есть сначала надо ccd присвоить регистру, а потом уже савнивать регистр с регистром

Добавлено через 4 минуты
Сравниваемые значения не могут одновременно находиться в памяти
1
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6291 / 3015 / 1051
Регистрация: 01.06.2021
Сообщений: 11,421
23.12.2024, 17:37
Женя Брянцев, твоя проблема в том, что ты опубликовал тему в разделе "С++ для начинающих". Ассемблер не имеет никакого отношения ни к С++, ни к начинающим. Ассемблерные вставки еще можно притянуть к этому разделу, но у тебя проблема не в самой вставке, а чисто в ассемблерном коде. Тебе нужно было задать вопрос в разделе https://www.cyberforum.ru/asm-beginners/
0
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
23.12.2024, 17:58
Цитата Сообщение от CoderHuligan Посмотреть сообщение
савнивать регистр с регистром
Конечно ячейку памяти адресуемую регистром (первый операнд).

Добавлено через 14 минут
Цитата Сообщение от Женя Брянцев Посмотреть сообщение
next_char:
        inc edi; // Переходим к следующему символу
        jmp skip_delimiters; // Повторяем проверку на пробел
Во время цикла проверки на пробел, надо еще проверять и на 0. поэтому перейти надо не на метку skip_delimiters, а на метку outer_loop

Добавлено через 2 минуты
Ты загружаешь ecx длиной строки, но нигде его не используешь. Достаточно сравнивать на 0. Поэтому грузи ccd в ecx

Добавлено через 3 минуты
Цитата Сообщение от Женя Брянцев Посмотреть сообщение
cmp byte ptr[edi], 0; // Проверяем конец строки
        je end_word; // Если конец строки, выходим
а надо на end_search
1
21 / 9 / 6
Регистрация: 10.11.2017
Сообщений: 148
23.12.2024, 18:05  [ТС]
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
#include <iostream>
#include <cstring>
using namespace std;
 
int main() {
    char chd;
    char source[30] = "send string stronge";
    char dest[30] = "";
    char ccd;
    int i = 0;
 
    cout << "Enter a character: ";
    cin >> chd;
    ccd = chd; // Присваиваем chd в ccd
 
    __asm {
        lea edi, source; // Загружаем адрес исходной строки в регистр edi
 
    outer_loop:
        cmp byte ptr[edi], 0; // Проверяем конец строки
        je end_search; // Если конец строки, выходим
 
        // Пропускаем пробелы
    skip_delimiters:
        cmp byte ptr[edi], ' '; // Сравниваем текущий символ с пробелом
        je next_char; // Если пробел, переходим к следующему символу
        jmp process_word; // Если не пробел, обрабатываем слово
 
    next_char:
        inc edi; // Переходим к следующему символу
        cmp byte ptr[edi], 0; // Проверяем конец строки
        jne skip_delimiters; // Если не конец строки, продолжаем проверку
        jmp end_search; // Если конец строки, выходим
 
    process_word:
        // Запоминаем указатель на начало слова
        mov ebx, edi;
 
        // Пропускаем все буквы слова
    skip_non_delimiters:
        cmp byte ptr[edi], 0; // Проверяем конец строки
        je end_word; // Если конец строки, выходим
        cmp byte ptr[edi], ' '; // Сравниваем с пробелом
        jne continue_word; // Если не пробел, продолжаем
 
    end_word:
        // Теперь есть указатели на начала слова и на первый символ после слова
        mov edx, edi; // Сохраняем указатель на конец слова
 
        // Проверяем первый и последний символ
        dec edx; // Возвращаемся к последнему символу слова
        cmp byte ptr[ebx], ccd; // Сравниваем первый символ с введенным
        jne outer_loop; // Если не совпадает, переходим к следующему слову
        cmp byte ptr[edx], ccd; // Сравниваем последний символ с введенным
        jne outer_loop; // Если не совпадает, переходим к следующему слову
 
        // Реверсируем слово
        lea esi, dest; // Загружаем адрес для записи в dest
        mov edi, ebx; // Указатель на начало слова
 
    reverse_word:
        mov al, [edi]; // Загружаем текущий символ
        mov byte ptr[esi], al; // Записываем его в dest
        inc esi; // Переходим к следующей позиции в dest
        inc edi; // Увеличиваем индекс для следующего символа
        cmp edi, edx; // Проверяем, достигли конца слова
        jl reverse_word; // Если нет, продолжаем
 
        // Завершаем строку нулем
        mov byte ptr[esi], 0;
        jmp outer_loop; // Возвращаемся к обработке следующего слова
 
    end_search:
    }
 
    cout << "source - " << source << endl; // Выводим исходную строку
    cout << "dest - " << dest << endl; // Выводим строку dest
 
    return 0;
}
теперь ошибка в строках 52 и 54
Ошибка C2415 недопустимый тип операнда
0
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
23.12.2024, 18:29
Цитата Сообщение от Женя Брянцев Посмотреть сообщение
cmp byte ptr[ebx], ccd; // Сравниваем первый символ с введенным
Ты продолжаешь тупо сравнивать ячейку памяти с ячейкой памяти.
1
21 / 9 / 6
Регистрация: 10.11.2017
Сообщений: 148
23.12.2024, 18:41  [ТС]
так же, правильно понял? ошибки ушли, но результат не выводится...
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 <cstring>
using namespace std;
 
int main() {
    char chd;
    char source[30] = "send string stronge";
    char dest[30] = "";
    char ccd;
    int i = 0;
 
    cout << "Enter a character: ";
    cin >> chd;
    ccd = chd; // Присваиваем chd в ccd
 
    __asm {
        lea edi, source; // Загружаем адрес исходной строки в регистр edi
        mov al, ccd; // Загружаем символ в регистр al
 
    outer_loop:
        cmp byte ptr[edi], 0; // Проверяем конец строки
        je end_search; // Если конец строки, выходим
 
        // Пропускаем пробелы
    skip_delimiters:
        cmp byte ptr[edi], ' '; // Сравниваем текущий символ с пробелом
        je next_char; // Если пробел, переходим к следующему символу
        jmp process_word; // Если не пробел, обрабатываем слово
 
    next_char:
        inc edi; // Переходим к следующему символу
        cmp byte ptr[edi], 0; // Проверяем конец строки
        jne skip_delimiters; // Если не конец строки, продолжаем проверку
        jmp end_search; // Если конец строки, выходим
 
    process_word:
        // Запоминаем указатель на начало слова
        mov ebx, edi;
 
        // Пропускаем все буквы слова
    skip_non_delimiters:
        cmp byte ptr[edi], 0; // Проверяем конец строки
        je end_word; // Если конец строки, выходим
        cmp byte ptr[edi], ' '; // Сравниваем с пробелом
        je end_word; // Если пробел, выходим
 
        inc edi; // Переходим к следующему символу
        jmp skip_non_delimiters; // Продолжаем пропускать символы
 
    end_word:
        // Теперь есть указатели на начала слова и на первый символ после слова
        mov edx, edi; // Сохраняем указатель на конец слова
 
        // Проверяем первый и последний символ
        dec edx; // Возвращаемся к последнему символу слова
        cmp byte ptr[ebx], al; // Сравниваем первый символ с регистром
        jne outer_loop; // Если не совпадает, переходим к следующему слову
        cmp byte ptr[edx], al; // Сравниваем последний символ с регистром
        jne outer_loop; // Если не совпадает, переходим к следующему слову
 
        // Реверсируем слово
        lea esi, dest; // Загружаем адрес для записи в dest
        mov edi, ebx; // Указатель на начало слова
 
    reverse_word:
        mov al, [edi]; // Загружаем текущий символ
        mov byte ptr[esi], al; // Записываем его в dest
        inc esi; // Переходим к следующей позиции в dest
        inc edi; // Увеличиваем индекс для следующего символа
        cmp edi, edx; // Проверяем, достигли конца слова
        jl reverse_word; // Если нет, продолжаем
 
        // Завершаем строку нулем
        mov byte ptr[esi], 0;
        jmp outer_loop; // Возвращаемся к обработке следующего слова
 
    end_search:
    }
 
    cout << "source - " << source << endl; // Выводим исходную строку
    cout << "dest - " << dest << endl; // Выводим строку dest
 
    return 0;
}
0
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
23.12.2024, 19:15
Вообще надо в дебаггере отлаживать. Не суетись, тут нужна постепенность. Главное что мы уже продвинулись. Сегодня времени нет.
1
23.12.2024, 19:20

Не по теме:

Цитата Сообщение от Royal_X Посмотреть сообщение
Тебе нужно было задать вопрос в разделе https://www.cyberforum.ru/asm-beginners/
Модераторы дремлют?
Я, признаться, давно жду, когда переедет.
Правда есть у меня вопрос: неужели там совсем другие люди??

0
23.12.2024, 19:50

Не по теме:

Цитата Сообщение от KSergey9 Посмотреть сообщение
неужели там совсем другие люди??
ну там точно есть несколько чуваков, которые пишут на ассемблере с такой же легкостью, как многие на питоне, собсна они и держат раздел

0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8671 / 4508 / 1670
Регистрация: 01.02.2015
Сообщений: 13,936
Записей в блоге: 13
23.12.2024, 20:47
Женя Брянцев, в VS есть отладчик - откройте окно регистров, выполните программу по шагам и увидите ошибки.

Навскидку вижу, что для реверса есть попытка что-то поместить в строку dest, а если реверс не потребовался - то строка dest останется пустой.

И хорошо бы реверс делать "на месте", а не в отдельную строку.

Добавлено через 4 минуты
При проверке строки используется указатель - регистр edi, но он затирается какими-то значениями при реверсе.
1
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6291 / 3015 / 1051
Регистрация: 01.06.2021
Сообщений: 11,421
24.12.2024, 00:14
Цитата Сообщение от ФедосеевПавел Посмотреть сообщение
в VS есть отладчик
добавлю, что не просто есть, а это один из лучших отладчиков среди всех существующих. Можно по шагам пробежаться не только в режиме кода, но и в режиме дизассемблера. Даже если не открывать "окно регистров", в режиме дизассемблера отладчик покажет значения регистров в окне Autos или при наведении мыши.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.12.2024, 00:14

Команды в ассемблере
Здравствуйте. Начал изучение ассемблера. Появились некоторые вопросы по описанию команд: №1. xchg ax,di Мнемоника: XCHG ax,r16 КОП:...

Подскажите команды для работы с БД
Добрый день.Подскажите пожалуйста команды для БД.Вернее как производить чтение,запись,редактирование БД.Или дайте ссылку где можно...

Команды для работы с XML
Уважаемые Soft'о'делы! Пожалуйста помогите. Какими командами &quot;вытаскивать&quot; и &quot;втаскивать&quot; данные из/в XML документ(а). В интернете...

AT команды для работы в интернете
Здравствуйте. Подскажите пожалуйста последовательность AT команд для подключения устройства(quectel m80) к интернету(скажем через...

Класс для работы со строками
Всем привет,может кто-то помочь решить? Cоздать класс для работы со строчками. Максимальная длина последовательности – 254. Первый...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
сукцессия 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" (широколиственные) или. . .
сукцессия 9. Математика подлости: как растения предали грибных друзей
anaschu 27.06.2026
Статья 2. Глобальная фосфорная война: эволюционно-экономические механизмы распределения биомов Земли Введение: Экологический рынок как игра с нулевой суммой Традиционная экология долгое время. . .
сукцессия 8. Как я спорил с ИИ, которые - агенты растений и ненавистники грибов!
anaschu 27.06.2026
Статья 1. Хроники грибного восстания: как Сократов диалог разрушил академические догмы ИИ Введение: Синдром «цифрового учебника» Современные большие языковые модели (LLM) обладают колоссальным. . .
Главный вопрос моделирования сукцессии
anaschu 27.06.2026
главный вопрос. Если эктомикориза лучше добывает недоступный фосфор. И ее масса максимальна из всех. А широколиственный лес тоже имеет самую крутую биомассу. То почему не возникло их симбиоза? Это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru