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

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

20.12.2024, 10:24. Показов 4673. Ответов 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
1743 / 1008 / 257
Регистрация: 30.06.2015
Сообщений: 5,107
Записей в блоге: 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
1743 / 1008 / 257
Регистрация: 30.06.2015
Сообщений: 5,107
Записей в блоге: 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
1743 / 1008 / 257
Регистрация: 30.06.2015
Сообщений: 5,107
Записей в блоге: 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
1743 / 1008 / 257
Регистрация: 30.06.2015
Сообщений: 5,107
Записей в блоге: 56
23.12.2024, 17:34
Попробуй сравнить через регистр. То есть сначала надо ccd присвоить регистру, а потом уже савнивать регистр с регистром

Добавлено через 4 минуты
Сравниваемые значения не могут одновременно находиться в памяти
1
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6136 / 2830 / 1039
Регистрация: 01.06.2021
Сообщений: 10,324
23.12.2024, 17:37
Женя Брянцев, твоя проблема в том, что ты опубликовал тему в разделе "С++ для начинающих". Ассемблер не имеет никакого отношения ни к С++, ни к начинающим. Ассемблерные вставки еще можно притянуть к этому разделу, но у тебя проблема не в самой вставке, а чисто в ассемблерном коде. Тебе нужно было задать вопрос в разделе https://www.cyberforum.ru/asm-beginners/
0
 Аватар для CoderHuligan
1743 / 1008 / 257
Регистрация: 30.06.2015
Сообщений: 5,107
Записей в блоге: 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
1743 / 1008 / 257
Регистрация: 30.06.2015
Сообщений: 5,107
Записей в блоге: 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
1743 / 1008 / 257
Регистрация: 30.06.2015
Сообщений: 5,107
Записей в блоге: 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
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8645 / 4480 / 1669
Регистрация: 01.02.2015
Сообщений: 13,889
Записей в блоге: 11
23.12.2024, 20:47
Женя Брянцев, в VS есть отладчик - откройте окно регистров, выполните программу по шагам и увидите ошибки.

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

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

Добавлено через 4 минуты
При проверке строки используется указатель - регистр edi, но он затирается какими-то значениями при реверсе.
1
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6136 / 2830 / 1039
Регистрация: 01.06.2021
Сообщений: 10,324
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
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
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 - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru