Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
 Аватар для HOBATOP
323 / 310 / 206
Регистрация: 14.09.2015
Сообщений: 827

Покритикуйте новичка

24.10.2015, 14:56. Показов 728. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго всем времени суток!
Самоучкой пытаюсь освоить Java, общение с опытными программистами или преподавателями недоступно. Остаётся просить помощи у участников форума. Взял себе простенькую задачу для тренировок - переводить сумму в слова. Написал несколько различных реализаций (есть и с бухгалтерским округлением копеек) и сам понимаю, что это как-то совсем уж по-дилетантски. Ниже приложен код с обработкой только целых сумм рублей, без никаких защит от ошибочного ввода или каких-то особых наворотов, типа скобок, вычисления НДС или заглавных букв в первом слове - короче самый минимум, но работает нормально. Просьба: навести на это всё конструктивную и мотивированную критику. Главное, чего ожидаю, это подсказки как преобразовать этот код (тут несколько раз практически идентичные куски - ну только переменные разные - встречаются) в несколько уникальных фрагментов, в которые бы можно было передавать каждый раз определённые параметры и получать различные ответы. Одним словом я добрался до конструкторов и наследования и буксую: поля, переменные super пупер - что впервую очередь объявлять, что во вторую...
Спасибо всем, кто откликнется.
P.S.: Извиняйте за сумбурное изложение, пока что профессиональным жаргоном не владею толком.

Java
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
import java.util.*;
 
/* Сумма прописью (это без копеек и проверок ввода)
 * @author Alexander
 */
public class Num2Word {
 
    public static void main(String[] args) {
        String[] hun = {"", "сто ", "двести ", "триста ", "четыреста ", "пятьсот ", "шестьсот ", "семьсот ", "восемьсот ", "девятьсот "};
        String[] ten = {"", "двадцать ", "тридцать ", "сорок ", "пятьдесят ", "шестьдесят ", "семьдесят ", "восемьдесят ", "девятосто "};
        String[] tens = {"десять ", "одиннадцать ", "двенадцать ", "тринадцать ", "четырнадцать ", "пятнадцать ", "шестнадцать ", "семнадцать ", "восемнадцать ", "девятнадцать "};
        String[] unit = {"", "один ", "два ", "три ", "четыре ", "пять ", "шесть ", "семь ", "восемь ", "девять "};
        String[] unitf = {"", "одна ", "две ", "три ", "четыре ", "пять ", "шесть ", "семь ", "восемь ", "девять "};
        String[] mill = {"миллион ", "миллиона ", "миллионов "};
        String[] thous = {"тысяча ", "тысячи ", "тысяч "};
        String[] currency = {"рубль ", "рубля ", "рублей "};
        int[] digi = new int[9];
        int x;
        String y;
        boolean noUnit = false;
        StringBuilder aut = new StringBuilder();
        System.out.println("Введите число:");
        Scanner set = new Scanner(System.in);
        x = set.nextInt();
        for (int i = 0; i < 9; i++) {
            digi[8 - i] = x % 10;
            x = x / 10;
        }
        aut.append(hun[digi[0]]);
        if (digi[1] == 1) {
            String g = tens[digi[2]];
            aut.append(g);
        } else {
            if (digi[1] == 0) {
 
            } else {
                String g = ten[digi[1] - 1];
                aut.append(g);
            }
        }
        if (digi[1] != 1) {
            aut.append(unit[digi[2]]);
        } else {
 
        }
        if (digi[0] + digi[1] + digi[2] != 0) {
            if (digi[1] != 1 & digi[2] == 1) {
                aut.append(mill[0]);
            } else {
                if (digi[1] != 1 & digi[2] > 1 & digi[2] < 5) {
                    aut.append(mill[1]);
                } else {
                    aut.append(mill[2]);
                }
            }
        }
        aut.append(hun[digi[3]]);
        if (digi[4] == 1) {
            String g = tens[digi[5]];
            aut.append(g);
        } else {
            if (digi[4] == 0) {
 
            } else {
                String g = ten[digi[4] - 1];
                aut.append(g);
            }
        }
        if (digi[4] != 1) {
            aut.append(unitf[digi[5]]);
        } else {
        }
        if (digi[3] + digi[4] + digi[5] != 0) {
            if (digi[4] != 1 & digi[5] == 1) {
                aut.append(thous[0]);
            }
            if (digi[4] != 1 & digi[5] > 1 & digi[5] < 5) {
                aut.append(thous[1]);
            } else {
                aut.append(thous[2]);
            }
        }
        aut.append(hun[digi[6]]);
        if (digi[7] == 1) {
            String g = tens[digi[8]];
            aut.append(g);
        } else {
            if (digi[7] == 0) {
 
            } else {
                String g = ten[digi[7] - 1];
                aut.append(g);
            }
        }
        if (digi[7] != 1) {
            aut.append(unit[digi[8]]);
        } else {
        }
        if (digi[7] != 1 & digi[8] == 1) {
            aut.append(currency[0]);
        } else {
            if (digi[7] != 1 & digi[8] > 1 & digi[8] < 5) {
                aut.append(currency[1]);
            } else {
                aut.append(currency[2]);
            }
        }
        String fully = aut.toString();
        System.out.println(fully);
    }
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.10.2015, 14:56
Ответы с готовыми решениями:

Покритикуйте, пожалуйста
Написала свой пермутатор. Мне нравится. Но понимаю, конечно, что найдется много разных косяков. Большая просьба к опытным программистам,...

Многопоточность. Покритикуйте
ищем простые числа на заданном промежутке, задавая кол-во потоков, равномерно деля работу между ними. потоки должны стартовать...

Покритикуйте код
Всем привет. У меня есть обычный POJO-класс с полями и класс для работы с данной коллекцией объектов. Посоветуйте плс, как улучшить...

9
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
24.10.2015, 15:07
Цитата Сообщение от HOBATOP Посмотреть сообщение
тут несколько раз практически идентичные куски - ну только переменные разные - встречаются) в несколько уникальных фрагментов, в которые бы можно было передавать каждый раз определённые параметры
ну вы же сами сказали. Вот и реализуйте. Это сделает ваш код более читабельным. Длинна метода не должна превышать 10-15 строк.
0
 Аватар для HOBATOP
323 / 310 / 206
Регистрация: 14.09.2015
Сообщений: 827
24.10.2015, 16:28  [ТС]
Цитата Сообщение от KEKCoGEN Посмотреть сообщение
ну вы же сами сказали. Вот и реализуйте.
Так тут-то я и запутался: и так и этак кручу, а не выходит толком, где-то пока что (ну я надеюсь) знаний не хватает... или соображалки...
Цитата Сообщение от KEKCoGEN Посмотреть сообщение
Длинна метода не должна превышать 10-15 строк.
Во! Я же даже такой элементарщины не знаю, и ни где в литературе не читал, или пропустил... Спасибо.
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
24.10.2015, 17:04
Цитата Сообщение от HOBATOP Посмотреть сообщение
Я же даже такой элементарщины не знаю
не беспокойтесь. Тут 90% участников форума этого незнают.
0
 Аватар для HOBATOP
323 / 310 / 206
Регистрация: 14.09.2015
Сообщений: 827
25.10.2015, 16:02  [ТС]
Ok! Чего-то не очень так густо получилось в плане советов/критики. Думалось что будет больше, ну хоть чуть-чуть. А так выходит, что чуть ли не сам с собой общаюсь. По прошествии суток перерисовалась данная реализация в несколько другой вид. Но, вот не могу сформулировать чем, но чем-то она мне тоже не нравится. Красоты, что ли не хватает, лёгкости. К слову, код поучился даже несколько длиннее чем прежний. Есть и плюс добавлять порядок чисел в таком варианте гораздо проще, да и выбор валюты (ежели делать мультиязычный вариант) тоже, как мне думается, куда как проще будет выглядеть. Так что при большем числе знаков и нескольких видах денюжкоф будет выигрыш по объёму программы.
Кстати, уважаемый KEKCoGEN, читабельности, по-вашему мнению, добавилось хоть чутка?
Java
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
import java.util.*;
 
public class Summ2Word {
 
    static String[] hun = {"", "сто ", "двести ", "триста ", "четыреста ", "пятьсот ", "шестьсот ", "семьсот ", "восемьсот ", "девятьсот "};
    static String[] ten = {"", "двадцать ", "тридцать ", "сорок ", "пятьдесят ", "шестьдесят ", "семьдесят ", "восемьдесят ", "девятосто "};
    static String[] tens = {"десять ", "одиннадцать ", "двенадцать ", "тринадцать ", "четырнадцать ", "пятнадцать ", "шестнадцать ", "семнадцать ", "восемнадцать ", "девятнадцать "};
    static String[] unit = {"", "один ", "два ", "три ", "четыре ", "пять ", "шесть ", "семь ", "восемь ", "девять "};
    static String[] unitf = {"", "одна ", "две ", "три ", "четыре ", "пять ", "шесть ", "семь ", "восемь ", "девять "};
    static String[] mill = {"", "миллион ", "миллиона ", "миллионов "};
    static String[] thous = {"", "тысяча ", "тысячи ", "тысяч "};
    static String[] currency = {"", "рубль ", "рубля ", "рублей "};
 
    public static class Found {
 
        int s, x, y;
        String g, i, q, z;
        String[] f;
 
        public void DigiRat() {
            if (x == 1) {
                g = tens[y];
            } else {
                if (x == 0) {
                    g = "";
                } else {
                    g = ten[x - 1];
                }
            }
            if (x != 1 & y != 0) {
                i = unit[y];
            } else {
                i = "";
            }
        }
 
        public void Thousend() {
            if (x == 1) {
                g = tens[y];
            } else {
                if (x == 0) {
                    g = "";
                } else {
                    g = ten[x - 1];
                }
            }
            if (x != 1 & y != 0) {
                i = unitf[y];
            } else {
                i = "";
            }
        }
 
        public void Currency() {
            if (s + x + y != 0) {
                if (x != 1 & y == 1) {
                    q = f[1];
                    z = f[1];
                } else {
                    if (x != 1 & y > 1 & y < 5) {
                        q = f[2];
                        z = f[2];
                    } else {
                        q = f[3];
                        z = f[3];
                    }
                }
            } else {
                q = f[0];
                z = f[3];
            }
        }
    }
 
    public static void main(String[] args) {
 
        int u;
        int[] digi = new int[9];
        StringBuilder aut = new StringBuilder();
        System.out.println("Введите число:");
        Scanner set = new Scanner(System.in);
        u = set.nextInt();
        for (int i = 0; i < 9; i++) {
            digi[8 - i] = u % 10;
            u = u / 10;
        }
        int[] gu = digi.clone();
 
        Found one = new Found();
        one.s = gu[0];
        one.x = gu[1];
        one.y = gu[2];
        one.DigiRat();
        one.f = mill.clone();
        one.Currency();
        aut.append(hun[gu[0]]).append(one.g).append(one.i).append(one.q);
 
        Found two = new Found();
        two.s = gu[3];
        two.x = gu[4];
        two.y = gu[5];
        two.Thousend();
        two.f = thous.clone();
        two.Currency();
        aut.append(hun[gu[3]]).append(two.g).append(two.i).append(two.q);
 
        Found three = new Found();
        three.s = gu[6];
        three.x = gu[7];
        three.y = gu[8];
        three.DigiRat();
        three.f = currency.clone();
        three.Currency();
        aut.append(hun[gu[6]]).append(three.g).append(three.i).append(three.z);
        
        String full = aut.toString();
        System.out.println(full);
 
    }
}
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
25.10.2015, 16:09
HOBATOP, нет. код до сих пор нечитабелен. Давайте переменнам и классам имена, которые отражают их назначение. Куча переменных x, s, f и.т.д не добавляют коду читабельности. Метод мейн до сих пор длинный
0
 Аватар для HOBATOP
323 / 310 / 206
Регистрация: 14.09.2015
Сообщений: 827
25.10.2015, 16:50  [ТС]
Мне приятно с Вами общаться, не сочтите за навязчивость.
Цитата Сообщение от KEKCoGEN Посмотреть сообщение
Давайте переменнам и классам имена, которые отражают их назначение.
Ok! Я понимаю, что сейчас немного нахулиганю, но выложу тот код, в котором всё (по крайней мере для русскоговорящих) будет предельно ясно, даже более. Но не смотря на странноватый (или просто непривычный) вид программка прекрасно компилируется и работает.
Цитата Сообщение от KEKCoGEN Посмотреть сообщение
Куча переменных x, s, f и.т.д не добавляют коду читабельности.
Буду стараться избегать, просто мой опыт программирования накладывает известный отпечаток. Профессиональная деформация видимо.
Цитата Сообщение от KEKCoGEN Посмотреть сообщение
Метод мейн до сих пор длинный
Так и мне он тоже не очень нравится, но пока что не придумал, как бы и его перекроить... Буду думать.
А вот и сам "чудаковатый" код (сильно не пинайте :-) ):
Java
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
import java.util.*;
 
public class Summ2Word {
 
    static String[] сотниСловами = {"", "сто ", "двести ", "триста ", "четыреста ", "пятьсот ", "шестьсот ", "семьсот ", "восемьсот ", "девятьсот "};
    static String[] десяткиСловами = {"", "двадцать ", "тридцать ", "сорок ", "пятьдесят ", "шестьдесят ", "семьдесят ", "восемьдесят ", "девятосто "};
    static String[] именныеДесятки = {"десять ", "одиннадцать ", "двенадцать ", "тринадцать ", "четырнадцать ", "пятнадцать ", "шестнадцать ", "семнадцать ", "восемнадцать ", "девятнадцать "};
    static String[] единицыСловами = {"", "один ", "два ", "три ", "четыре ", "пять ", "шесть ", "семь ", "восемь ", "девять "};
    static String[] единицыТысяч = {"", "одна ", "две ", "три ", "четыре ", "пять ", "шесть ", "семь ", "восемь ", "девять "};
    static String[] порядокМиллионов = {"", "миллион ", "миллиона ", "миллионов "};
    static String[] порядокТысяч = {"", "тысяча ", "тысячи ", "тысяч "};
    static String[] имяВалюты = {"", "рубль ", "рубля ", "рублей "};
 
    public static class Выборка {
 
        int сотни, десятки, единицы;
        String печатьДесятков, печатьЕдиниц, печатьПорядкаЧисла, печатьВалюты;
        String[] массивВыборкиЗначений;
 
        public void Миллионы() {
            if (десятки == 1) {
                печатьДесятков = именныеДесятки[единицы];
            } else {
                if (десятки == 0) {
                    печатьДесятков = "";
                } else {
                    печатьДесятков = десяткиСловами[десятки - 1];
                }
            }
            if (десятки != 1 & единицы != 0) {
                печатьЕдиниц = единицыСловами[единицы];
            } else {
                печатьЕдиниц = "";
            }
        }
 
        public void Тысячи() {
            if (десятки == 1) {
                печатьДесятков = именныеДесятки[единицы];
            } else {
                if (десятки == 0) {
                    печатьДесятков = "";
                } else {
                    печатьДесятков = десяткиСловами[десятки - 1];
                }
            }
            if (десятки != 1 & единицы != 0) {
                печатьЕдиниц = единицыТысяч[единицы];
            } else {
                печатьЕдиниц = "";
            }
        }
 
        public void ПорядокИВалюта() {
            if (сотни + десятки + единицы != 0) {
                if (десятки != 1 & единицы == 1) {
                    печатьПорядкаЧисла = массивВыборкиЗначений[1];
                    печатьВалюты = массивВыборкиЗначений[1];
                } else {
                    if (десятки != 1 & единицы > 1 & единицы < 5) {
                        печатьПорядкаЧисла = массивВыборкиЗначений[2];
                        печатьВалюты = массивВыборкиЗначений[2];
                    } else {
                        печатьПорядкаЧисла = массивВыборкиЗначений[3];
                        печатьВалюты = массивВыборкиЗначений[3];
                    }
                }
            } else {
                печатьПорядкаЧисла = массивВыборкиЗначений[0];
                печатьВалюты = массивВыборкиЗначений[3];
            }
        }
    }
 
    public static void main(String[] args) {
 
        int введённоеЧисло;
        int[] цифрыВМассив = new int[9];
        StringBuilder наПечать = new StringBuilder();
        System.out.println("Введите число:");
        Scanner числоСКлавиатуры = new Scanner(System.in);
        введённоеЧисло = числоСКлавиатуры.nextInt();
        for (int счётчик = 0; счётчик < 9; счётчик++) {
            цифрыВМассив[8 - счётчик] = введённоеЧисло % 10;
            введённоеЧисло = введённоеЧисло / 10;
        }
        int[] фиксированныйМассив = цифрыВМассив.clone();
 
        Выборка миллионов = new Выборка();
        миллионов.сотни = фиксированныйМассив[0];
        миллионов.десятки = фиксированныйМассив[1];
        миллионов.единицы = фиксированныйМассив[2];
        миллионов.Миллионы();
        миллионов.массивВыборкиЗначений = порядокМиллионов.clone();
        миллионов.ПорядокИВалюта();
        наПечать.append(сотниСловами[фиксированныйМассив[0]]).append(миллионов.печатьДесятков).append(миллионов.печатьЕдиниц).append(миллионов.печатьПорядкаЧисла);
 
        Выборка тысяч = new Выборка();
        тысяч.сотни = фиксированныйМассив[3];
        тысяч.десятки = фиксированныйМассив[4];
        тысяч.единицы = фиксированныйМассив[5];
        тысяч.Тысячи();
        тысяч.массивВыборкиЗначений = порядокТысяч.clone();
        тысяч.ПорядокИВалюта();
        наПечать.append(сотниСловами[фиксированныйМассив[3]]).append(тысяч.печатьДесятков).append(тысяч.печатьЕдиниц).append(тысяч.печатьПорядкаЧисла);
 
        Выборка единиц = new Выборка();
        единиц.сотни = фиксированныйМассив[6];
        единиц.десятки = фиксированныйМассив[7];
        единиц.единицы = фиксированныйМассив[8];
        единиц.Миллионы();
        единиц.массивВыборкиЗначений = имяВалюты.clone();
        единиц.ПорядокИВалюта();
        наПечать.append(сотниСловами[фиксированныйМассив[6]]).append(единиц.печатьДесятков).append(единиц.печатьЕдиниц).append(единиц.печатьВалюты);
        
        String собираемСтроку = наПечать.toString();
        System.out.println(собираемСтроку);
 
    }
}
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
25.10.2015, 16:53
HOBATOP, в плане имен переменных последний код лучше (если не брать в расчет что они на русском и делать так не рекомендуется).
Все ещё много продублированного кода.
0
 Аватар для HOBATOP
323 / 310 / 206
Регистрация: 14.09.2015
Сообщений: 827
25.10.2015, 17:01  [ТС]
Цитата Сообщение от KEKCoGEN Посмотреть сообщение
так не рекомендуется
Я же сразу предупредил, что это будет почти что хулиганство. Но ведь работает, и ни какой разницы (я конечно по таймеру не проверял: ни навыков ни познаний пока что не хватит соорудить программный таймер с наносекундами) по скорости работы не заметно... :-)
Спасибо, KEKCoGEN, пойду main напильником допиливать... Ежели что, то опять нагряну. Ok?
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
25.10.2015, 17:44
Цитата Сообщение от HOBATOP Посмотреть сообщение
Но ведь работает, и ни какой разницы .... по скорости работы не заметно
разница не в скорости работы, а в интеграции со всякими фреймворками, которые используют рефлексию и могут некорректно работать с такими переменными.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.10.2015, 17:44
Помогаю со студенческими работами здесь

Алгоритм: Трамвайные билеты. Покритикуйте
Привет, решение данной задачи на Java. Покритикуйте. package olympicexercises; import java.io.*; import java.util.*; import...

Задачи на числа. Решение. Покритикуйте. (часть №1)
Привет, решение данных заданий на Java - ниже. Покритикуйте. package chapt01.b; import java.util.*; import static...

Задачи на строки и числа. Решение. Покритикуйте
Задачи: Привет, решение данных заданий на Java - см. ссылку ниже. Покритикуйте. import java.io.InputStream; import...

Покритикуйте код моего сокет сервера для игрового чата
С помощью пары уроков, сделал сервер для визуального чата, типа галактики знакомств. Интересны советы по упрощению и оптимизации. Там...

LinkedList Ошибка новичка!
Всем пример! Пишу в NetBeans IDE 8.2. Начал изучать LinkedList. Простой пример: LinkedList cityNames = new LinkedList(); ...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru