Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
 Аватар для FFPowerMan
2158 / 1238 / 509
Регистрация: 11.10.2018
Сообщений: 6,275

Почему не работает код Вейвлет-преобразования?

05.05.2020, 10:43. Показов 2565. Ответов 20

Студворк — интернет-сервис помощи студентам
Здорово, всем.
Попробовал тут Вейвлет-преобразование по этой статье
https://habr.com/ru/post/169615/
Python
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
from math import sqrt
import PIL.Image as Image
from array import array
 
CL = [(1 + sqrt(3)) / (4 * sqrt(2)),
    (3 + sqrt(3)) / (4 * sqrt(2)),
    (3 - sqrt(3)) / (4 * sqrt(2)),
    (1 - sqrt(3)) / (4 * sqrt(2))]
 
def hpf_coeffs(CL):
    N = len(CL)                    # Количество коэффициентов
    CH = [(-1)**k * CL[N - k - 1]  # Коэффициенты в обратном порядке с чередованием знака
        for k in xrange(N)]
    return CH
 
def pconv(data, CL, CH, delta = 0):
    assert(len(CL) == len(CH))         # Размеры списков коэффициентов должны быть равны
    N = len(CL)
    M = len(data)
    out = []                           # Список с результатом, пока пустой
    for k in xrange(0, M, 2):          # Перебираем числа 0, 2, 4…
        sL = 0                         # Низкочастотный коэффициент
        sH = 0                         # Высокочастотный коэффициент
        for i in xrange(N):            # Находим сами взвешенные суммы
            sL += data[(k + i - delta) % M] * CL[i]
            sH += data[(k + i - delta) % M] * CH[i]
        out.append(sL)                 # Добавляем коэффициенты в список
        out.append(sH)
    return out
 
def icoeffs(CL, CH):
    assert(len(CL) == len(CH))         # Размеры списков коэффициентов должны быть равны
    iCL = []                           # Коэффициенты первой строки
    iCH = []                           # Коэффициенты второй строки
    for k in xrange(0, len(CL), 2):
        iCL.extend([CL[k-2], CH[k-2]])
        iCH.extend([CL[k-1], CH[k-1]])
    return (iCL, iCH)
 
image = Image.open('boat.png').convert('L')
image = array('L', image) / 255.0     # Диапазон яркостей — [0, 1]
imshow(image, cmap=cm.gray)           # Отобразим на экране
(Как спойлер делать? Забыл.)
Добавлял по функции, работало до вот этой строки
Python
1
image = array('L', image) / 255.0     # Диапазон яркостей — [0, 1]
Указывает на array, вот ошибка
TypeError: iteration over non-sequence
но сначала была другая ошибка, тоже что-то array неправильно.
Буква 'L' - это уже мои эксперименты, ничего не помогло, попробовал там 'i', 'f' и 'd'.
Как исправить?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.05.2020, 10:43
Ответы с готовыми решениями:

Вейвлет-анализ. Как работает вейвлет-преобразование?
Помогите разобратся как работает вейвлет-преобразование Как программно реализовать я знаю. но не могу понять как это работает...

Вейвлет преобразования
Здравствуйте. У меня следующая проблема. Анализирую сигнал с помощью вейвлетов. Нужно извлечь числовые значения энергии спектра. Matlab...

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

20
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 29
05.05.2020, 10:59
Цитата Сообщение от FFPowerMan Посмотреть сообщение
(Как спойлер делать? Забыл.)
нужен не спойлер, а теги пайтон иначе код нечитаем

Цитата Сообщение от FFPowerMan Посмотреть сообщение
Указывает на array, вот ошибка
TypeError: iteration over non-sequence
приведи ее полностью с указанием строки
0
 Аватар для FFPowerMan
2158 / 1238 / 509
Регистрация: 11.10.2018
Сообщений: 6,275
05.05.2020, 11:22  [ТС]
Строка вот эта, ошибка указана в 1 сообщении
Python
1
image = array('L', image) / 255.0     # Диапазон яркостей — [0, 1]
Только вначале было вот так
Python
1
image = array(image) / 255.0     # Диапазон яркостей — [0, 1]
И это дает вот такую ошибку
TypeError: array() argument 1 must be char, not instance

Добавлено через 1 минуту
Полностью код
Python
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
from math import sqrt
import PIL.Image as Image
from array import array
 
CL = [(1 + sqrt(3)) / (4 * sqrt(2)),
(3 + sqrt(3)) / (4 * sqrt(2)),
(3 - sqrt(3)) / (4 * sqrt(2)),
(1 - sqrt(3)) / (4 * sqrt(2))]
 
def hpf_coeffs(CL):
N = len(CL)                              # Количество коэффициентов
CH = [(-1)**k * CL[N - k - 1]     # Коэффициенты в обратном порядке с чередованием знака
for k in xrange(N)]
return CH
 
def pconv(data, CL, CH, delta = 0):
assert(len(CL) == len(CH))              # Размеры списков коэффициентов должны быть равны
N = len(CL)
M = len(data)
out = []                           # Список с результатом, пока пустой
for k in xrange(0, M, 2):     # Перебираем числа 0, 2, 4…
sL = 0                             # Низкочастотный коэффициент
sH = 0                            # Высокочастотный коэффициент
for i in xrange(N):             # Находим сами взвешенные суммы
sL += data[(k + i - delta) % M] * CL[i]
sH += data[(k + i - delta) % M] * CH[i]
out.append(sL)                # Добавляем коэффициенты в список
out.append(sH)
return out
 
def icoeffs(CL, CH):
assert(len(CL) == len(CH))       # Размеры списков коэффициентов должны быть равны
iCL = []                                # Коэффициенты первой строки
iCH = []                                # Коэффициенты второй строки
for k in xrange(0, len(CL), 2):
iCL.extend([CL[k-2], CH[k-2]])
iCH.extend([CL[k-1], CH[k-1]])
return (iCL, iCH)
 
image = Image.open('boat.png').convert('L')
image = array('L', image) / 255.0   # Диапазон яркостей — [0, 1]
imshow(image, cmap=cm.gray)     # Отобразим на экране
0
 Аватар для FFPowerMan
2158 / 1238 / 509
Регистрация: 11.10.2018
Сообщений: 6,275
06.05.2020, 09:47  [ТС]
Почему вот эта функция написана именно так, ведь у for другой стинтаксис
Python
1
2
3
4
5
def hpf_coeffs(CL):
    N = len(CL)                    # Количество коэффициентов
    CH = [(-1)**k * CL[N - k - 1]  # Коэффициенты в обратном порядке с чередованием знака
        for k in xrange(N)]
    return CH
Почему for написан после CH? Это что такое вообще?
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 29
06.05.2020, 13:22
Цитата Сообщение от FFPowerMan Посмотреть сообщение
ошибка указана в 1 сообщении
это требует каких то чрезмерных усилий чтобы привести весь стектрейс? полностью?

FFPowerMan, код точно весь? просто он странный какой то : функции объявлены но не используются

Цитата Сообщение от FFPowerMan Посмотреть сообщение
Почему вот эта функция написана именно так, ведь у for другой стинтаксис
это list comprehension

Цитата Сообщение от FFPowerMan Посмотреть сообщение
xrange(N)
а это второй питон, который больше не поддерживается, насколько свежую статью ты взял для образца?
0
 Аватар для FFPowerMan
2158 / 1238 / 509
Регистрация: 11.10.2018
Сообщений: 6,275
06.05.2020, 13:29  [ТС]
Цитата Сообщение от Welemir1 Посмотреть сообщение
насколько свежую статью ты взял для образца?
- 16 февраля 2013
Питон надоел уже. Я на C++ набросал в Embarcadero C++Builder. Питон вообще косячит. Ничего не понятно. Переабстрогировали.

Добавлено через 46 секунд
Автоматический тип - все автоматическое. На деле ничего не работает. И ничего не понятно.
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 29
06.05.2020, 13:36
Цитата Сообщение от FFPowerMan Посмотреть сообщение
Ничего не понятно. Переабстрогировали.
виноват конечно язык)
0
 Аватар для FFPowerMan
2158 / 1238 / 509
Регистрация: 11.10.2018
Сообщений: 6,275
06.05.2020, 22:00  [ТС]
А вот эти строки можете мне перегнать в C++ или объяснить, строки 6 и 7.
Почему k-1 и k-2 здесь, ведь k начинается с 0?
Почему 1 элемент содержит 2 элемента? Это возможность списков?
Python
1
2
3
4
5
6
7
8
def icoeffs(CL, CH):
    assert(len(CL) == len(CH))         # Размеры списков коэффициентов должны быть равны
    iCL = []  # Коэффициенты первой строки
    iCH = []  # Коэффициенты второй строки
    for k in xrange(0, len(CL), 2):
        iCL.extend([CL[k-2], CH[k-2]])
        iCH.extend([CL[k-1], CH[k-1]])
    return (iCL, iCH)
Добавлено через 2 часа 19 минут
С этим разобрался.
Теперь нужно объяснить мне вот это. Что за двоеточия в квадратных скобках?
Python
1
2
3
4
5
6
7
#Переупорядочиваем столбцы и строки
    data = imageT.copy()
    data[0:h/2, 0:w/2] = imageT[0:h:2, 0:w:2]
    data[h/2:h, 0:w/2] = imageT[1:h:2, 0:w:2]
    data[0:h/2, w/2:w] = imageT[0:h:2, 1:w:2]
    data[h/2:h, w/2:w] = imageT[1:h:2, 1:w:2]
    return data
0
1293 / 677 / 367
Регистрация: 07.01.2019
Сообщений: 2,302
06.05.2020, 22:15
Цитата Сообщение от FFPowerMan Посмотреть сообщение
Что за двоеточия в квадратных скобках?
Это срез https://pythonworld.ru/osnovy/indeksy-i-srezy.html
0
 Аватар для FFPowerMan
2158 / 1238 / 509
Регистрация: 11.10.2018
Сообщений: 6,275
07.05.2020, 10:17  [ТС]
Што мне делать с формированием нового массива?
Миниатюры
Почему не работает код Вейвлет-преобразования?  
0
 Аватар для FFPowerMan
2158 / 1238 / 509
Регистрация: 11.10.2018
Сообщений: 6,275
07.05.2020, 13:54  [ТС]
matplotlib надо качать/устанавливать? Если то, то где и как?
Или там уже есть?

Добавлено через 1 час 12 минут
Парни, я скачал matplotlib. Как его установить после распаковки?
0
 Аватар для FFPowerMan
2158 / 1238 / 509
Регистрация: 11.10.2018
Сообщений: 6,275
08.05.2020, 19:48  [ТС]
Парни, ну помогите, пожалуйста, перегнать код в C++.
Што-то есть подозрения, што я неправильно перегнал функцию pconv. Проверьте, пожалуйста, и исправьте что надо или укажите на ошибки.
Вот код на Python
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
def pconv(data, CL, CH, delta = 0):
    assert(len(CL) == len(CH))         # Размеры списков коэффициентов должны быть равны
    N = len(CL)
    M = len(data)
    out = []                           # Список с результатом, пока пустой
    for k in xrange(0, M, 2):     # Перебираем числа 0, 2, 4…
        sL = 0                         # Низкочастотный коэффициент
        sH = 0                         # Высокочастотный коэффициент
        for i in xrange(N):          # Находим сами взвешенные суммы
            sL += data[(k + i - delta) % M] * CL[i]
            sH += data[(k + i - delta) % M] * CH[i]
        out.append(sL)                 # Добавляем коэффициенты в список
        out.append(sH)
    return out
Вот я написал код на C++
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
void __fastcall TForm1::pconv(double *ldata, int LM, double *lCL, double *lCH, int ldelta = 0)
{
    int k, i, Cnt;
    double sL, sH;
 
    Cnt = 0;
    for(k = 0; k < LM; k += 2)  //Перебираем числа 0, 2, 4…
    {
        sL = 0;                        //Низкочастотный коэффициент
        sH = 0;                        //Высокочастотный коэффициент
        for(i = 0; i < N; i++)         //Находим сами взвешенные суммы
        {
            sL += ldata[(k + i - ldelta) % LM] * lCL[i];
            sH += ldata[(k + i - ldelta) % LM] * lCH[i];
        }
        out[Cnt++] = sL;               //Добавляем коэффициенты в список
        out[Cnt++] = sH;
    }
 
}
Но 1 из тестов автора на хабре не проходит. Т.е. он там ниже тестирует эту функцию и 1 тест прошел, а 2 не прошел или вообще не прошел тесты, я не помню уже.

Добавлено через 4 часа 51 минуту
Как в Embarcadero C++ Builder RAD Studio 10.3 включить подсказки по параметрам функции? Такое есть вообще?
Как-то тут спрашивал про то, чтобы включить подсказки по методам объекта. Вроде тогда решили вопрос и мне подсказали. Но теперь не могу найти в настройках и ту тему тоже не найду.

Добавлено через 31 минуту
Прямое преобразование нормально работает, а обратное что-то косячит. Не тот результат выдает как у него в статье.
Прочитайте, пожалуйста, еще раз мое сообщение №12.
0
 Аватар для FFPowerMan
2158 / 1238 / 509
Регистрация: 11.10.2018
Сообщений: 6,275
09.05.2020, 20:01  [ТС]
Парни, ну кто мне будет помогать с этим проектом?
Ошибку выше исправил? Кто хочет знать, в чем была проблема?
Все сделал как у автора. Но изображение не такое как у него получилось.
Видно там где-то конструкции Python и C++ различаются.

Поставил Python 3.8. Дальше надо было pip ставить, но он не поставился.
Несмотря на то, что автор на хабре пишет, что в интренете до тучи инструкций. По pip там 1 инструкция установки по сути.
Скачиваешь файл get-pip.py и запускаешь. Я запускал в папке python.
Он устанавливается, но проверку на установку не проходит.
Эта проверка заключается в написании Питоновской команды
Python
1
python --version
Почему устанавливается pip, но Питон его не видит?

Добавлено через 3 минуты
Как вот эту конструкцию перегнать в Питон?
Python
1
data[0:h/2, 0:w/2] = imageT[0:h:2, 0:w:2]
Правильно ли будет взять все строки из imageT, начиная с 0 с инкрементом по строкам 2 и пиксели тоже берутся через 1 и эти строки пихаются в массив data в левую верхнюю четверть?

Добавлено через 37 минут
Установил PIL наконец-то.

Добавлено через 20 минут
Вот такая ошибка
Python
1
2
3
4
Traceback (most recent call last):
  File "F:\(тут путь)\main.py", line 51, in <module>
    image = array('L', image)              # Диапазон яркостей — [0, 1]
TypeError: 'Image' object is not iterable
Тут деление на 255 убрал, чтобы не нагружать информацией.
Что делать?

Добавлено через 49 минут
Сейчас такая ситуация
Traceback (most recent call last):
File "F:\(тут путь)\main.py", line 79, in <module>
data5 = dwt2(image, CL)
File "F:\(тут путь)\main.py", line 54, in dwt2
imageT[i, :] = pconv(imageT[i, :], CL, CH)
TypeError: 'Image' object is not subscriptable

Добавлено через 28 секунд
Как вот эту ошибку исправить?
0
Эксперт Python
 Аватар для unfindable_404
693 / 471 / 204
Регистрация: 22.03.2020
Сообщений: 1,051
09.05.2020, 20:14
Не особо вник в тему, но пока попробуйте выше добавить строку:
Python
1
pixels = imageT.load()
и строку с ошибкой заменить на:
Python
1
pixels[i, :] = pconv(pixels[i, :], CL, CH)
0
 Аватар для FFPowerMan
2158 / 1238 / 509
Регистрация: 11.10.2018
Сообщений: 6,275
10.05.2020, 14:15  [ТС]
Этот код вызывает ошибку
Traceback (most recent call last):
File "F:\(тут путь)\main.py", line 91, in <module>
data5 = dwt2(image, CL)
File "F:\(тут путь)\main.py", line 67, in dwt2
pixels[i, :] = pconv(pixels[i, :], CL, CH)
TypeError: an integer is required
Что делать?

Добавлено через 20 минут
Так он где целое-то просит в этой строке?

Добавлено через 40 минут
Почему-то срезы не работают.
Как заставить их работать?
0
Эксперт Python
 Аватар для unfindable_404
693 / 471 / 204
Регистрация: 22.03.2020
Сообщений: 1,051
10.05.2020, 14:24
Цитата Сообщение от FFPowerMan Посмотреть сообщение
Почему-то срезы не работают.
А, ну правильно, я что-то тупанул. Тут как в numpy работать срезы не будут.
Цитата Сообщение от FFPowerMan Посмотреть сообщение
Как заставить их работать?
Никак. Просто передать в функцию целую матрицу пикселей и добавить ещё один аргумент в описании функции, чтобы учесть i. А уже внутри функции в цикле обрабатывать только интересующий участок матрицы.
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
10.05.2020, 14:48
Цитата Сообщение от FFPowerMan Посмотреть сообщение
Почему-то срезы не работают.
Как заставить их работать?
Нужно документацию по numpy прочитать. Либа написана на вашем любимом С++ - вот и изучайте. Исходники прилагаются на гитхабе.
А на Python уровне нужно изучать синтаксис numpy - он векторный и сам Python в numpy вообще не нужен.
То есть вообще не нужно (в большинстве случаев) использовать никаких циклов и функций из Python. Так что не пытайтесь писать как в С++.

Добавлено через 4 минуты
Цитата Сообщение от FFPowerMan Посмотреть сообщение
Автоматический тип - все автоматическое. На деле ничего не работает. И ничего не понятно.
В Python тип не автоматический, а динамический. НО в отличие от С++ - типизация строгая. То есть никаких неявных преобразований. Поэтому и TypeError. То есть если пишешь ерунду - получаешь пинок под зад от интерпретатора.

Добавлено через 11 минут
P.S. Да, в Python есть уже готовая обертка для Вейвлет преобразований: https://pywavelets.readthedocs.io/en/latest/

Добавлено через 9 секунд
https://github.com/PyWavelets/pywt
0
 Аватар для FFPowerMan
2158 / 1238 / 509
Регистрация: 11.10.2018
Сообщений: 6,275
10.05.2020, 15:09  [ТС]
Цитата Сообщение от Garry Galler Посмотреть сообщение
Нужно документацию по numpy прочитать.
- я читал документацию, может быть проще будет Вы просто скажете что нужно сделать?
Цитата Сообщение от Garry Galler Посмотреть сообщение
Но в отличие от С++ - типизация строгая.
- в С++ тоже строгая типизация.

Добавлено через 1 минуту
Цитата Сообщение от unfindable_404 Посмотреть сообщение
А, ну правильно, я что-то тупанул. Тут как в numpy работать срезы не будут.
- я вчера numpy подключил и что нужно сделать чтобы срезы заработали?
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
10.05.2020, 15:30
Цитата Сообщение от FFPowerMan Посмотреть сообщение
- в С++ тоже строгая типизация.
яркими примерами слабой системы типов являются те, что лежат в основе языков Си и C++. Их характерными атрибутами являются понятия приведения типов и каламбуров типизации. Эти операции поддерживаются на уровне компилятора и часто вызываются неявно.
Цитата Сообщение от FFPowerMan Посмотреть сообщение
что нужно сделать чтобы срезы заработали?
Опять возвращаемся к тому же: передавать правильные параметры. Синтаксис срезов вы прочитали?

Цитата Сообщение от FFPowerMan Посмотреть сообщение
может быть проще будет Вы просто скажете что нужно сделать?
То есть переписать все за вас? Я не изучал вейвлет преобразования и вчитываться в код мне лень, тем более это Python 2.

По поводу первой ошибки из вашего первого поста.
Цитата Сообщение от FFPowerMan Посмотреть сообщение
TypeError: iteration over non-sequence
Цитата Сообщение от FFPowerMan Посмотреть сообщение
TypeError: 'Image' object is not subscriptable
Image это объект. Чтобы его преобразовать к матрице(массиву) совместимой с numpy нужно выполнить специальное преобразование
Python
1
data = np.asarray(image, dtype="uint8" ) # dtype это нужный вам тип данных.
)
0
 Аватар для FFPowerMan
2158 / 1238 / 509
Регистрация: 11.10.2018
Сообщений: 6,275
10.05.2020, 18:00  [ТС]
Цитата Сообщение от Garry Galler Посмотреть сообщение
Image это объект. Чтобы его преобразовать к матрице(массиву) совместимой с numpy нужно выполнить специальное преобразование
- это я уже допетрил.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.05.2020, 18:00
Помогаю со студенческими работами здесь

Реализация непрерывного вейвлет преобразования
Добрый день! Хочу обратиться за помощью к сообществу. Мне необходимо произвести оценку распределения частот (гармоник) внутри...

Нулевое среднее вейвлет преобразования
Уважаемые форумчане объясните пожалуйста почему свойство нулевого среднего в непрерывном вейвлет преобразовании так важно при локализации...

Дискретное вейвлет преобразования Добеши
Вычисления дискретного вейвлет-преобразования Добеши различных порядков (от D2 до D12 по выбору пользователя) в фильтров форме для...

Вейвлет преобразования для кардиосигналов
Нужно создать программу в matlab для вейвлет анализа экг. Есть данные экг(в блокноте) нужно отобразить данные в виде графика и выделить QRS...

Алгоритм непрерывного вейвлет-преобразования (НВП)
Здравствуйте. Передо мной стоит следующая задача: необходимо реализовать программу, анализирующую человеческую речь, на основе...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru