Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.57/89: Рейтинг темы: голосов - 89, средняя оценка - 4.57
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446

Распарсить выражение, состоящее из чисел, скобок и знаков сложения и вычитания, и вывести результат

05.11.2014, 20:11. Показов 17805. Ответов 31
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Сложение и вычитание
Имя входного файла: evalpm.in
Имя выходного файла: evalpm.out
Ограничение по времени: 2 секунды
Ограничение по памяти: 256 мебибайт

Выведите значение заданного арифметического выражения, состоящего из чисел, скобок и знаков сложения и вычитания.

Формат входных данных

В первой строке входного файла задано выражение, состоящее из чисел, скобок и знаков бинарных операций. Каждое число в выражении — это целое неотрицательное число в промежутке от 0 до 10000, включительно, записанное без ведущих нулей. Скобки бывают открывающие (`(') и закрывающие (`)'). Операции задаются символами `+' и `-'. Гарантируется, что заданное выражение математически корректно, и результаты всех промежуточных операций — целые числа, не превышающие по модулю 10000. Выражение не содержит каких-либо других символов, в частности, пробелов. Длина выражения не меньше 1 и не больше 1000 символов
Учтите, что операции при отсутствии скобок выполняются слева направо. Например, выражение a - b - c вычисляется как (a - b) - c.

Формат выходных данных

В первой строке выходного файла выведите одно число — значение заданного выражения.

Примеры

evalpm.in evalpm.out
48-13 35
5-(52+3) -50

Добавлено через 48 минут
Я придумал такой алгоритм. Сохранить арифметическое выражение в массив символов, запоминая при этом позиции открывающихся и закрывающихся скобок. Потом начать вычисления с самой правой открывающей скобки до закрывающей скобки. Затем пойти налево и сосчитать все выражения в скобках. Ну а потом уже сосчитать выражения без скобок.
Только я не представляю, как идентифицировать знаки '+' и '-', да и к тому же надо как-то конвертировать символы в числа, как это сделать я не понимаю и не воображаю...

Добавлено через 14 минут
Вот начало:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
 
#define LIM 1001        /* максимальное число элементов в массиве */
 
int main()
{
    int c, i, j, k;
    char str[LIM];      /* массив для хранения арифметического выражения */
    char pos1[LIM];     /* массив для хранения позиций открывающих скобок */
    char pos2[LIM];     /* массив для хранения позиций закрывающих скобок */
    
    i = j = k = 0;
    while ( ( str[i] = getchar() ) != '\n' ) {
        if ( str[i] == '(' )
            pos1[j++] = i;
        else
            if ( str[i] == ')' )
                pos2[k++] = i;
        i++;
    }
    return 0;
}
Осталось придумать ещё кучу кода

Добавлено через 19 минут
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
#include <stdio.h>
 
#define LIM 1001        /* максимальное число элементов в массиве */
 
int main()
{
    int c, i, j, k;
    char str[LIM];      /* массив для хранения арифметического выражения */
    char pos1[LIM];     /* массив для хранения позиций открывающих скобок */
    char pos2[LIM];     /* массив для хранения позиций закрывающих скобок */
    
    i = j = k = 0;
    while ((str[i] = getchar()) != '\n') {
        if ( str[i] == '(' )
            pos1[j++] = i;
        else
            if ( str[i] == ')' )
                pos2[k++] = i;
        i++;
    }
    str[i] = pos1[j] = pos2[k] = '\0';
    
    int sum = 0;
    j = k = 0;
    for (i = pos1[j]; pos1[j] != '\0' && pos2[k] != '\0'; j++, k++)
        /* здесь нужно вычислять значения в скобках, т. е. между pos1[j] и pos2[k]
        и присваивать их в переменную sum
        sum += выражение между pos1[j] и pos2[k], но пробелема в том, что даже
        функция atoi() не сможет вычленить числа из разных элементов массива */;
    return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.11.2014, 20:11
Ответы с готовыми решениями:

Напишите программу, которая вычисляет выражение, состоящее из трех чисел и двух знаков
Напишите программу, которая вычисляет выражение, состоящее из трех чисел и двух знаков (допускаются только знаки «+» или «–»). Выражение...

Напишите программу, которая вычисляет выражение, состоящее из чисел, знаков (допускаются знаки «+», «–», «*» и
Напишите программу, которая вычисляет выражение, состоящее из чисел, знаков (допускаются знаки «+», «–», «*» и «/») и круглых скобок....

Распарсить арифметическое выражение и вывести результат
добрый день, нужно написать программу, на ввод которой посылается математическое выражение (например:&quot;4*(5-2/3)&quot;)а на выводе...

31
117 / 114 / 65
Регистрация: 18.09.2014
Сообщений: 337
05.11.2014, 20:26
Dennis Ritchie, для этого есть даже целый алгоритм, для вычисления арифметических выражений. Попробуйте набрать в поиске "Разбор алгебраических выражений" или что-то в этом роде. Реализация довольно простая, используются стеки, будет проблема только в разбиении строки на отдельные слова (число, скобка или знак)
http://master.virmandy.net/per... aya-zapis/ вот, например. Или этот алгоритм не подойдёт?
0
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
05.11.2014, 20:34  [ТС]
Цитата Сообщение от Гоблин-инженер Посмотреть сообщение
Реализация довольно простая, используются стеки
Не, со стеками в C++ я ещё не сталкивался, если только в assembler'е.
Цитата Сообщение от Гоблин-инженер Посмотреть сообщение
будет проблема только в разбиении строки на отдельные слова (число, скобка или знак)
Проблем разбиения на знаки и скобки нет, а вот как разбить на числа - это уже трудно сказать.

Добавлено через 4 минуты
Цитата Сообщение от Гоблин-инженер Посмотреть сообщение
Или этот алгоритм не подойдёт?
Подойдёт (там даже знаки деления и умножения рассматриваются), но я не разберусь в этом алгоритме...
0
117 / 114 / 65
Регистрация: 18.09.2014
Сообщений: 337
06.11.2014, 09:14
Dennis Ritchie, стеки вы можете использовать и стандартные, а вот разбиение сильно трудного не предствляет, все числа будут поделены знаками. Сейчас вам напишу код

Добавлено через 25 минут
Dennis Ritchie,
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
#include <iostream>
#include <string>
#include <vector>
 
using namespace std;
 
bool parseLine(string text, vector <string> &v) {
    int i = -1; // Счётчик
    string buff; // Для сохранения чисел
    while ((++i) < text.length()) {
        if (text[i] == ' ') continue; // Пробелы пропускаем
        if (text[i] == ')' || text[i] == '(' || text[i] == '+' || text[i] == '-') { // Знаки добавляем сразу же
            if (buff != "") {
                v.push_back(buff);
                buff = "";
            }
            buff = text[i];
            v.push_back(buff);
            buff = "";
        }
        else if (text[i] <= '9' && text[i] >= '0') buff += text[i]; // Число запихиваем в буфер
        else return false;
    }
    if (buff != "") v.push_back(buff);
    return true;
} 
 
int main(int argc, char *argv[])
{
    vector <string> res;
    parseLine("800+6-(4-2)", res);
    for (int i = 0; i < res.size(); ++i)
        cout << res[i] << endl;
    return 0;
}
1
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
06.11.2014, 11:43  [ТС]
А зачем эта строка:
C++
1
if (text[i] == ' ') continue; // Пробелы пропускаем
В условии же написано:
Выражение не содержит каких-либо других символов, в частности, пробелов.
Спасибо за код. Теперь буду придумывать, как всё это посчитать...
0
117 / 114 / 65
Регистрация: 18.09.2014
Сообщений: 337
06.11.2014, 12:54
Dennis Ritchie, ну можно и не включать эту строку, если известно точно, что пробелов не будет. А дальше переводите выражение в постфиксную форму и вычисляете. Если не ошибаюсь, по схеме "встретил число - положил в стек, встретил знак - вытащил из стека 2 числа, сложил результат в стек"
0
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
06.11.2014, 13:22  [ТС]
Цитата Сообщение от Гоблин-инженер Посмотреть сообщение
Если не ошибаюсь, по схеме "встретил число - положил в стек, встретил знак - вытащил из стека 2 числа, сложил результат в стек"
Я ещё недостаточно знаю синтаксис C. Я прочитал только 80 страниц K&R из 180-ти. Наверное, я рано начал пытаться решать эту задачу. Нужно сначала хотя бы дочитать книгу до конца, а потом уже пробовать...
0
117 / 114 / 65
Регистрация: 18.09.2014
Сообщений: 337
06.11.2014, 14:20
Dennis Ritchie, стек - класс в С++, реализующий механизм "положил - вытащил", причем достается первым всегда последний положенный туда объект (число, строка, указатель и тд). Это не входит в состав языка
0
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
06.11.2014, 16:38  [ТС]
Цитата Сообщение от Гоблин-инженер Посмотреть сообщение
число, строка, указатель и тд
Ну вот, а ещё не умею работать с указателями.
Цитата Сообщение от Гоблин-инженер Посмотреть сообщение
стек - класс в С++, реализующий механизм "положил - вытащил"
Поэтому я и закончу сначала изучение C, а потом возьмусь уже за C++, т. е. последовательно. Просто я хотел как-нибудь реализовать эту задачу без стека, более элементарными методами.
0
117 / 114 / 65
Регистрация: 18.09.2014
Сообщений: 337
06.11.2014, 18:36
Dennis Ritchie, как знаете. Более элементарным методом, чем через стеки, вряд ли получится решить...
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
06.11.2014, 22:03
Лучший ответ Сообщение было отмечено Dennis Ritchie как решение

Решение

Цитата Сообщение от Гоблин-инженер Посмотреть сообщение
Более элементарным методом, чем через стеки, вряд ли получится решить...
Ну, рекурсивно можно:
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
/////////////////////////////////////////////////////////////////////////////////////////
//Выведите значение заданного арифметического выражения, состоящего из чисел, скобок 
//и знаков сложения и вычитания.
//
//ФОРМАТ ВХОДНЫХ ДАННЫХ
//
//В первой строке входного файла задано выражение, состоящее из чисел, скобок и знаков 
//бинарных операций. Каждое число в выражении — это целое неотрицательное число в промежутке 
//от 0 до 10000, включительно, записанное без ведущих нулей. Скобки бывают открывающие 
//(`(') и закрывающие (`)'). Операции задаются символами `+' и `-'. Гарантируется, что 
//заданное выражение математически корректно, и результаты всех промежуточных операций — 
//целые числа, не превышающие по модулю 10000. Выражение не содержит каких-либо других 
//символов, в частности, пробелов. Длина выражения не меньше 1 и не больше 1000 символов
//Учтите, что операции при отсутствии скобок выполняются слева направо. Например, 
//выражение a - b - c вычисляется как (a - b) - c.
//
//ФОРМАТ ВЫХОДНЫХ ДАННЫХ
//
//В первой строке выходного файла выведите одно число — значение заданного выражения.
//
//ПРИМЕРЫ
//
//evalpm.in     evalpm.out
//48-13     35
//5-(52+3)  -50
/////////////////////////////////////////////////////////////////////////////////////////
#include <cctype>
#include <iostream>
#include <sstream>
#include <string>
/////////////////////////////////////////////////////////////////////////////////////////
typedef std::string     T_str;
/////////////////////////////////////////////////////////////////////////////////////////
int     calc_and_get_result( T_str  &  expr );
/////////////////////////////////////////////////////////////////////////////////////////
int     calc_and_get_expr_in_brackets( T_str  &  expr )
{
    expr.erase( 0, 1 );
    int     result  =   calc_and_get_result( expr );
    expr.erase( 0, 1 );
    return  result;
}
/////////////////////////////////////////////////////////////////////////////////////////
int     calc_and_get_operand( T_str  &  expr )
{
    static  const   char    LEFT_BR     =   '(';
    int                     result      =   0;
 
    if  (
            isdigit (
                        expr.front()
                    )
        )
    {
        std::istringstream  ssin( expr );
        ssin    >>  result;
        ssin    >>  expr;
    }
    else
    {
        if  (
                expr.front()    ==  LEFT_BR
            )
        {
            result  =   calc_and_get_expr_in_brackets( expr );
        }
    }//else
 
    return  result;
}
/////////////////////////////////////////////////////////////////////////////////////////
bool    successfully_read_and_set_operation
    (
        T_str   &   expr,
        char    &   operatoin
    )
{
    bool    bool_res    =       expr.front()    ==  '+'
                            ||  expr.front()    ==  '-';
 
    if( bool_res )
    {
        operatoin   =   expr.front();
        expr.erase( 0, 1 );
    }
 
    return  bool_res;
}
/////////////////////////////////////////////////////////////////////////////////////////
int     calc_and_get_result( T_str  &  expr )
{
    int     result      =   calc_and_get_operand( expr );
    char    operatoin   =   0;
 
    while   (
                    !expr.empty()
 
                &&  successfully_read_and_set_operation
                        (
                            expr,
                            operatoin
                        )
            )
    {
        switch( operatoin )
        {
        case    '+':
            result  +=  calc_and_get_operand( expr );
            break;
 
        case    '-':
            result  -=  calc_and_get_operand( expr );
            break;
 
        default:
            ;
        }
    }//while
 
    return  result;
}
/////////////////////////////////////////////////////////////////////////////////////////
int     main()
{
    std::locale::global(std::locale(""));
 
    for(;;)
    {
        std::cout   <<  "Введите арифметическое выражение с натуральными операндами, "
                    <<  std::endl
                    <<  "знаками + и - и круглыми скобками:"
                    <<  std::endl;
 
        T_str   expr;
        std::cin    >>  expr;
 
        std::cout   <<  calc_and_get_result( expr )
                    <<  std::endl
                    <<  std::endl
                    <<  std::endl
                    <<  std::endl;
    }//for
}
1
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
06.11.2014, 22:59  [ТС]
Цитата Сообщение от Mr.X Посмотреть сообщение
Ну, рекурсивно можно:
Как всегда, круто!!! Решение даже тестирующую систему прошло с первого раза.

Если это нетрудно, то покажите, пожалуйста, решение со стеком...
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
06.11.2014, 23:08
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
решение со стеком...
Это с переводом в обратную польскую запись что ли? Там алгоритм не такой очевидный. Не так давно я тут публиковал решение парсинга логических выражений, там он применяется.
0
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
06.11.2014, 23:36  [ТС]
Цитата Сообщение от Mr.X Посмотреть сообщение
Это с переводом в обратную польскую запись что ли? Там алгоритм не такой очевидный.
Как оказалось, он весьма очевидный...

Не по теме:

Ещё совет - не надо так писать:

C++
1
<<  std::endl;
Лучше писать так:
C++
1
<< '\n';
Ну или добавлять такую строку в начало программы (и тогда писать просто "endl" без "std::"):
C++
1
#define endl '\n'
Причина - скорость выполнения программы.

0
117 / 114 / 65
Регистрация: 18.09.2014
Сообщений: 337
07.11.2014, 07:03
Dennis Ritchie, endl это более обстоятельная обработка переноса строки, нежели \n (насколько я помню). Так что если не нужно выжимать максимум производительности, лучше всё-таки использовать endl
Вот что нашёл тут:
Распространено мнение, что строки:

cout<<"String\n";
и

cout<<"String"<<endl;
эквивалентны.

Это не так. Команда endl:

Записывает в поток (stream) символ перевода строки;
Выполняет flush для буферизированного потока.
В некоторых случаях это может привести к существенной потере производительности. Например, программа выводит большой объем данных. Если её вывод перенаправить в файл, то после каждой строки данные будут записываться на диск.
0
07.11.2014, 08:51

Не по теме:

Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Ну или добавлять такую строку в начало программы (и тогда писать просто "endl" без "std::"):
препроцессор ничего не знает о std::, областях видимости и других прелестях, он тупо заменяет подстроки на соответствующие ему значения
Посмотрите сами:
C++
1
2
3
4
5
6
7
#include <iostream>
#define endl '\n'
 
int main() {
    std::cout << "test" << std::endl;
    return 0;
}
http://ideone.com/XeIAqs
если очень хочется, то лучше объявить константу а на define
C++
1
const char endl = '\n';

0
07.11.2014, 10:52  [ТС]

Не по теме:

Цитата Сообщение от Cra3y Посмотреть сообщение
препроцессор ничего не знает о std::, областях видимости и других прелестях, он тупо заменяет подстроки на соответствующие ему значения
Посмотрите сами:
Так я и написал, что нужно писать "endl" без "::std". Конечно, он просто тупо заменяет подстроки на соответствующие ему значения.
Поэтому можете писать так:
C++
1
2
3
4
5
6
7
8
#include <iostream>
using namespace std;
#define endl '\n'
 
int main() {
    cout << "test" << endl;
    return 0;
}
А лучше всего так:
C++
1
2
3
4
5
6
7
#include <iostream>
using namespace std;
 
int main() {
    cout << "test" << '\n';
    return 0;
}
Цитата Сообщение от Гоблин-инженер Посмотреть сообщение
Так что если не нужно выжимать максимум производительности, лучше всё-таки использовать endl
По-моему, производительность важнее:
C
1
2
3
4
5
6
#include <stdio.h>
 
int main() {
    printf("test\n");
    return 0;
}
Так будет ещё быстрее :)

0
117 / 114 / 65
Регистрация: 18.09.2014
Сообщений: 337
07.11.2014, 11:29
Dennis Ritchie, имхо, при текущей производительности компьютеров гораздо важнее безопасность, нежели -0.01 секунда ко времени работы программы. Такое никто попросту не заметит. Кстати, слышал о том, что разницы в скорости printf и streams почти нет

Добавлено через 14 минут
Хотя насчёт безопасности я был не особо прав, эта функция полезна лишь в некоторых случаях. Но мне куда больше нравится endl, как-то приличнее выглядит
0
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
07.11.2014, 13:28  [ТС]
Цитата Сообщение от Гоблин-инженер Посмотреть сообщение
Такое никто попросту не заметит.
Тестирующая система всё заметит
Прочитайте комментарии в этой теме, тогда поймёте, насколько критичным может быть использование "endl" вместо "\n":
Бинарный поиск. Мутанты
0
117 / 114 / 65
Регистрация: 18.09.2014
Сообщений: 337
07.11.2014, 15:22
Dennis Ritchie, пишите тогда на асме, чего уж мелочиться то? До сих пор я не встретил хоть какой-нибудь весомой доли программ, которые требовали бы максимальной производительности. И среди них почти все программы требовали именно быстрой обработки данных, где печать на экран не являлась главенствующей. Так что я не знаю... Если вам лишь бы побыстрее, то не ограничивайтесь выводом строк, зажимайте всё по максимуму, оптимизацию поставьте самую жёсткую. Мне же, например, без разницы, +-0.01 секунды роли никак не сыграет в 99.9% программ, которые приходится писать, а вот endl выглядит куда приятнее, чем \n.
Спорить не буду. Ваше мнение услышал, но останусь при своём.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.11.2014, 15:22
Помогаю со студенческими работами здесь

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

Вычислить выражение, состоящее из трех чисел и двух знаков
Напишите программу, которая вычисляет выражение, состоящее из трех чисел и двух знаков (допускаются знаки «+», «–», «*» и «/»). Выражение...

Напишите программу, которая вычисляет выражение, состоящее из трех чисел и двух знаков
Pascal ABC Буду очень благодарен, если поможете с решением программы) вот само задание: &quot;Напишите программу, которая вычисляет...

Напишите программу, которая вычисляет выражение, состоящее из трех чисел и двух знаков
Напишите программу, которая вычисляет выражение, состоящее из трех чисел и двух знаков (допускаются только знаки «+» или «–»). Выражение...

Напишите программу, которая вычисляет выражение, состоящее из трех чисел и двух знаков (допускаются знаки «+», «–», «*» и «/»)
Здравствуйте. Прошу помощи. Уровень C. Напишите программу, которая вычисляет выражение, состоящее из трех чисел и двух знаков...


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

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