С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
0 / 0 / 0
Регистрация: 29.04.2014
Сообщений: 185

Крестики Нолики. Где-то ошибка

23.06.2014, 18:38. Показов 1677. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Тихо едет не спеша, крыша шифером шурша.
В общем. Надо чтоб было игровое поле 3х3. Изначально заполнено каким то символом.
Игрок 1 вводит координаты - строка/столбец ячейки.
Игрок 1 вводит символ +/0. Программа проверяет и матюкается если он ввел не свой символ.

Рисуем поле. Все ячейки кроме введенных заполенны по умолчанию, какимто символом. Выбраная игроком ячейка заполнена + или 0.

Игрок 2 выбирает координаты и ставит символ.
Консоль обнуляется и выводиться новый рисунок игрового поля с учетом внесенных изменений по игровым символам.


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
#include <iostream>
using namespace std;
 
 
//---------
    void PGShow(char PlayGr[3][3], char empty, int gT, int vT, char choice);
//-----------
    int TVer(int vT);
    int TGor(int gT);
//-----------
    char PlMoov1(char choice);
    char PlMoov2(char choice);
//-----------
 
 
int main() {
    //иниц. всех переменных.
    setlocale(0,"");
    char empty='X';
    char choice;
    char PlayGr[3][3];  
    int gT, vT;
    
    /*
    // заполнение массива пустыми значениями.
    for(int i=0; i<3;++i){
        for(int k=0; k<3; ++k)
            PlayGr[i][k]=empty;
    }*/
    
    
    return 0;
}
 
//----------------------------------------------
void PGShow(char PlayGr[3][3], char empty, int gT, int vT, char choice){ 
    
        // тут в массив с Х рисуем нужный символ.
        for(int i =0; i<3; ++i){            
            for(int k=0; k<3;++k){
                if (i == vT && k == gT)
                    PlayGr[i][k]=choice;
                
                cout    << PlayGr[i][k];
            }
            cout    <<endl;             
        }
                
        //рисуем массив и смотрим что получилось.
        for(int i=0; i<3;++i){
            
            for(int k=0; k<3;++k){
                cout    << PlayGr[i][k];
            }
            cout    <<endl;
        }
}
//--------------------------------------------
int  TGor(int gT){
    
        cout    <<"Введите строку с клeточкой: ";
        cin     >>gT;
        gT = gT-1; 
        
    return gT;
}
//-----------------------------------------
int  TVer (int vT){
        int val1;
        cout    <<"Введите столбик с клeточкой: ";
        cin     >>val1;
        vT = val1-1;        
    return vT;
};
//----------------------------------------------------------------
char PlMoov1(char choice){
    cout    << "Ходит игрок №1. Игрок ставит 0 : ";
    
    for(int i =0; choice != '0'; i++){
        cin     >> choice;
        
        if(choice != '0')
            cout    << "Вы должны ввести только (0 нуль). \n";
        
        else if(choice == '0')
            choice = '0';
    }
    
    return choice;
}
//-------------------------
char PlMoov2(char choice){
    cout    << "Ходит игрок №2. Игрок ставит + : ";
    
    for(int i =0; choice != '+'; i++){
        cin     >> choice;
        if(choice != '+')
            cout    << "Вы должны ввести только (+ плюс). \n";
        
        else if(choice == '+')
            choice = '+';
    }
    
    return choice;
}
//------------------------
Гдето я запутался. И мозги не варят.... прошу подсказать идея или логика решения правильная? Может скорее всего где то синтаксическая или небольшая логическая ошибка.

ПРошу указать на ошибку а не давать решение задачи. Сам решить хочу. Спасибо)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.06.2014, 18:38
Ответы с готовыми решениями:

Ошибка в програме Крестики-нолики
main.cpp #include &quot;KR.h&quot; using namespace std; int main() { RandomPlayer *r = new RandomPlayer('o'); ...

Игра Крестики-Нолики (Ошибка в коде)
Доброго времени суток. Не показывает победителя если комбинация по вертикали/горизонтали/диагонали сошлась. И если вводить букву...

Крестики нолики
Всем доброе утро) Написал программу, только не могу найти там ошибку в проверке. Когда надо проверить кто выйграл, по диагоналям строкам...

15
 Аватар для MayaNash
1296 / 470 / 151
Регистрация: 24.08.2011
Сообщений: 2,249
23.06.2014, 19:04
C++
1
2
3
4
5
    int TVer(int vT);
    int TGor(int gT);
//-----------
    char PlMoov1(char choice);
    char PlMoov2(char choice);
что должны принимать и возвращать эти функции? может быть они должны менять значения?

вообще по сути-то зачем игрок должен вводить свой значок? игрок №1 ставит допустим крестик, игрок №2 ставит нолик. зачем у них еще это спрашивать, если и так понятно кто что ставит?

за исключением того, что можно было бы сделать красивее и рациональнее, и не разбивать функции на 2 (чтение строки и столбца - фактически одна функция), вроде норм, но в майне ничего не делается, так что ошибки и не можеть быть пока что
допиши майн, посмотрим
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6101 / 4957 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
23.06.2014, 19:05
MMt, а вопрос-то, где вопрос?
Устраняйте дублирование (например, последние 2 метода можно легко объединить в один, и не только их). Меньше дублирования - меньше шансов совершить ошибку
1
31 / 31 / 32
Регистрация: 21.06.2014
Сообщений: 81
23.06.2014, 19:08
Идея у Вас правильная, логика хромает. В любом случае тяжело оценивать только несколько функций, которые только написаны и не используются.

Цитата Сообщение от MMt Посмотреть сообщение
Игрок 1 вводит символ +/0. Программа проверяет и матюкается если он ввел не свой символ.
Зачем при ходе вводить символ, ведь в крестиках-ноликах первый игрок всегда ставит 'X', а второй 'О'.

C++
1
char empty='X';
Если пустые клеточки выводить как Х - игровое поле будет нечитабельным. Логичнее сделать их пробелом
C++
1
char empty=' ';

А вот как раз сами крестики и нолики логичнее сделать буквами 'X' и 'O' - в отличии от варианта '+' и '0' - буквы имеют одинаковую ширину и высоту и будут выглядеть аккуратнее.
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6101 / 4957 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
23.06.2014, 19:37
Вот мое виденье, в плюсах я не очень шарю, так что просьба не бить ногами
Кликните здесь для просмотра всего текста
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>
 
using namespace std;
 
 
const int N = 3;
const char Empty = '-';
char map[N][N];
 
void ClearMap();
void DrawMap();
int Turn(const char*, char);
int Win(int, int, char);
 
int main()
{
    ClearMap(); 
    int i = 0;
    for (; i < 9 && !(Turn("Player 1", 'X') || Turn("Player 2", '0')); i++)
    {
    }
    if (i == 9)
        cout << "DRAW!" << endl;
    return 0;
}
 
void ClearMap()
{
    for (int i = 0; i < N; i++)
        for (int j = 0; j < N; j++)
            map[i][j] = Empty;
}
 
void DrawMap()
{
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < N; j++)
            cout << '|' << map[i][j];
        cout << '|' << endl;
    }
}
 
int Turn(const char* playername, char symbol)
{
    int x, y;
    DrawMap();
    cout << playername << "'s turn. Enter coordinates X and Y" << endl;
    cin >> x >> y;
    while (x < 0 || y < 0 || x > 3 || y > 3 || map[x][y] != Empty)
    {
        cout << "Invalid coordinates. Try again" << endl;
        cin >> x >> y;
    }
    map[x][y] = symbol;
    int win = Win(x, y, symbol);
    if (win)
        cout << playername << " WIN!" << endl;
    return win;
}
 
int Win(int x, int y, char symbol)
{
    //проверяем горизонталь
    int i;
    for (i = 0; i < 3 && map[i][y] == symbol; i++)
    {
    }
    if (i == 3)
        return 1;
    //проверяем вертикаль
    for (i = 0; i < 3 && map[x][i] == symbol; i++)
    {
    }
    if (i == 3)
        return 1;
    //возвращаем диагонали
    return map[0][0] == symbol && map[1][1] == symbol && map[2][2] == symbol
        || map[0][2] == symbol && map[1][1] == symbol && map[2][0] == symbol;
}
0
 Аватар для Хедин
76 / 71 / 55
Регистрация: 17.05.2014
Сообщений: 301
23.06.2014, 20:16
MMt, хочу узнать, а зачем игроку нужно вводить свой символ и что бы программа проверяла? Достаточно ввести проверку на корректные координаты, а уж какой символ вписать, программа сама поймет
0
0 / 0 / 0
Регистрация: 29.04.2014
Сообщений: 185
23.06.2014, 20:44  [ТС]
да. блин я и в самом деле слишком заумно все делаю. хочу как понавороченней.
0
 Аватар для Хедин
76 / 71 / 55
Регистрация: 17.05.2014
Сообщений: 301
23.06.2014, 21:01
MMt, сделайте тогда не ввод координат ячейки, а некий прицел, который будет перемещаться стрелочками с клавиатуры (подобие курсора мыши)
0
0 / 0 / 0
Регистрация: 29.04.2014
Сообщений: 185
23.06.2014, 23:38  [ТС]
потом. сделаю когда разберусь с логикой от рисовки и ввода с координат.

Добавлено через 13 минут
Промежуточный вариант. Сейчас буду дописывать очищение консоли и возможно выбор ячейки с помощью курсора.

Есть замечания по логике или коду?
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
#include <iostream>
using namespace std;
 
 
 
void draw_Field(char Field[3][3],char choice, int gor_cell, int ver_cell);
int main() {
    setlocale(0,"");
    char Field[3][3];
    char choice, empty = '.';
    int ver_cell, gor_cell;
    
    //инициализация массива
    for(int i=0; i<3;++i){
        for(int k=0; k<3; ++k){
            Field[i][k]= empty;
        }
    }
    //заполнение массива
    for(int i=0; i<3;++i){
        for(int k=0; k<3; ++k){
            cout    << Field[i][k];
        }
        cout    << endl;
    }
    
    //цикл в 9 ходов где игроки будуи вводить координаты.
    for(int z=0; z<9; ++z){
        int fver_cell, fgor_cell;
        
        cout    << "Игрок 1 введите координаты (Х). Строка/Столбик от 1 до 3... ";
        cin     >> fver_cell    >> fgor_cell;
        
        ver_cell = fver_cell-1;
        gor_cell = fgor_cell-1;
        
        choice = 'X';
        
        draw_Field(Field, choice, gor_cell, ver_cell);
        
        cout    << "Игрок 2 введите координаты (0). Строка/Столбик от 1 до 3... ";
        cin     >> fver_cell    >> fgor_cell;
        
        ver_cell = fver_cell-1;
        gor_cell = fgor_cell-1;
        
        choice = '0';
        
        draw_Field(Field, choice, gor_cell, ver_cell);
        
    }
    
    
    
    
    
    
    
    
 
 
    return 0;
}
 
void draw_Field(char Field[3][3], char choice, int gor_cell, int ver_cell){
    
    for(int i=0; i<3; ++i){
        for(int k=0; k<3; ++k){
            if(gor_cell == k && ver_cell == i)
                Field[i][k] = choice;
            cout    << Field[i][k];
        }
        cout    << endl;
    }
}
Добавлено через 2 часа 1 минуту
решил сделать проверку на победу или поражение. правльная логика? или я снова "мудрю"

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
    for(int i=0; i<3; ++i){
            for(int k=0; k<3; ++k){
                if( Field[0][0]='X' &&
                    Field[0][1]='X' &&
                    Field[0][2]='X')
                    
                    res = "Èãðîê 1 âûèãðàë!\n \n";
                
                else if(Field[1][0]='X' &&
                        Field[1][1]='X' &&
                        Field[1][2]='X')
                        res =  "Èãðîê 1 âûèãðàë!\n \n";
                
                else if(Field[2][0]='X' &&
                        Field[2][1]='X' &&
                        Field[2][2]='X')
                        res =  "Èãðîê 1 âûèãðàë!\n \n";     
                
                else if(Field[0][1]='X' &&
                        Field[1][1]='X' &&
                        Field[2][1]='X')
                        res =  "Èãðîê 1 âûèãðàë!\n \n";
                        
                else if(Field[0][2]='X' &&
                        Field[1][2]='X' &&
                        Field[2][2]='X')
                        res =  "Èãðîê 1 âûèãðàë!\n \n"; 
                        
                else if(Field[2][0]='X' &&
                        Field[1][1]='X' &&
                        Field[0][2]='X')
                        res =  "Èãðîê 1 âûèãðàë!\n \n"; 
                
                else if(Field[0][0]='X' &&
                        Field[1][1]='X' &&
                        Field[2][2]='X')
                        res =  "Èãðîê 1 âûèãðàë!\n \n"; 
                
                else if(Field[0][0]='0' &&
                        Field[0][1]='0' &&
                        Field[0][2]='0')
                        res =  "Èãðîê 2 âûèãðàë!\n \n";
                
                else if(Field[1][0]='0' &&
                        Field[1][1]='0' &&
                        Field[1][2]='0')
                        res =  "Èãðîê 2 âûèãðàë!\n \n";
                
                else if(Field[2][0]='0' &&
                        Field[2][1]='0' &&
                        Field[2][2]='0')
                        res =  "Èãðîê 2 âûèãðàë!\n \n";     
                
                else if(Field[0][1]='0' &&
                        Field[1][1]='0' &&
                        Field[2][1]='0')
                        res =  "Èãðîê 2 âûèãðàë!\n \n";
                        
                else if(Field[0][2]='0' &&
                        Field[1][2]='0' &&
                        Field[2][2]='0')
                        res =  "Èãðîê 2 âûèãðàë!\n \n"; 
                        
                else if(Field[2][0]='0' &&
                        Field[1][1]='0' &&
                        Field[0][2]='0')
                        res =  "Èãðîê 2 âûèãðàë!\n \n"; 
                
                else if(Field[0][0]='0' &&
                        Field[1][1]='0' &&
                        Field[2][2]='0')
                        res =  "Èãðîê 2 âûèãðàë!\n \n";
                else 
                        res =  "Íè÷üÿ!";
            }
                        
        }
        return res;
}
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6101 / 4957 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
24.06.2014, 00:20
MMt, дублирование, плохо. Удаляйте
Не хвастаюсь,просто посмотрите мой вариант, там дублирования нет или практически нет. Просто оцените, что можно вынести в отдельные функции, а то вот это например:
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
for(int i=0; i<3; ++i){
            for(int k=0; k<3; ++k){
                if( Field[0][0]='X' &&
                    Field[0][1]='X' &&
                    Field[0][2]='X')
                    
                    res = "Игрок 1 выиграл!\n \n";
                
                else if(Field[1][0]='X' &&
                        Field[1][1]='X' &&
                        Field[1][2]='X')
                        res =  "Игрок 1 выиграл!\n \n";
                
                else if(Field[2][0]='X' &&
                        Field[2][1]='X' &&
                        Field[2][2]='X')
                        res =  "Игрок 1 выиграл!\n \n";     
                
                else if(Field[0][1]='X' &&
                        Field[1][1]='X' &&
                        Field[2][1]='X')
                        res =  "Игрок 1 выиграл!\n \n";
                        
                else if(Field[0][2]='X' &&
                        Field[1][2]='X' &&
                        Field[2][2]='X')
                        res =  "Игрок 1 выиграл!\n \n"; 
                        
                else if(Field[2][0]='X' &&
                        Field[1][1]='X' &&
                        Field[0][2]='X')
                        res =  "Игрок 1 выиграл!\n \n"; 
                
                else if(Field[0][0]='X' &&
                        Field[1][1]='X' &&
                        Field[2][2]='X')
                        res =  "Игрок 1 выиграл!\n \n"; 
                
                else if(Field[0][0]='0' &&
                        Field[0][1]='0' &&
                        Field[0][2]='0')
                        res =  "Игрок 2 выиграл!\n \n";
                
                else if(Field[1][0]='0' &&
                        Field[1][1]='0' &&
                        Field[1][2]='0')
                        res =  "Игрок 2 выиграл!\n \n";
                
                else if(Field[2][0]='0' &&
                        Field[2][1]='0' &&
                        Field[2][2]='0')
                        res =  "Игрок 2 выиграл!\n \n";     
                
                else if(Field[0][1]='0' &&
                        Field[1][1]='0' &&
                        Field[2][1]='0')
                        res =  "Игрок 2 выиграл!\n \n";
                        
                else if(Field[0][2]='0' &&
                        Field[1][2]='0' &&
                        Field[2][2]='0')
                        res =  "Игрок 2 выиграл!\n \n"; 
                        
                else if(Field[2][0]='0' &&
                        Field[1][1]='0' &&
                        Field[0][2]='0')
                        res =  "Игрок 2 выиграл!\n \n"; 
                
                else if(Field[0][0]='0' &&
                        Field[1][1]='0' &&
                        Field[2][2]='0')
                        res =  "Игрок 2 выиграл!\n \n";
                else 
                        res =  "Ничья!";
            }
                        
        }
        return res;
}
совсем никуда не годится. Даже если работает
0
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,854
24.06.2014, 00:31
Цитата Сообщение от MMt Посмотреть сообщение
C++
1
2
3
4
5
6
  if( Field[0][0]='X' &&
                    Field[0][1]='X' &&
                    Field[0][2]='X')
                    
                    res = "Игрок 1 выиграл!\n \n";
           ;

с символами удобней работать человеку
машине удобней работать с числами
посему делай как ей удобней, ей же считать
например в пустых клетках 0 если нолик то -1 если крестик то 1
твоя проверка сведется к обычному сложению
C++
1
2
3
4
5
summ= Field[0][0]+ Field[0][1]+ Field[0][2];
if(summ==3)
  res = "Игрок 1 выиграл!\n \n";
if(summ==-3)
 res = "Игрок 2 выиграл!\n \n";
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6101 / 4957 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
24.06.2014, 01:20
ValeryS, посмотрите мой вариант, там еще проще Не надо перебирать все варианты. Достаточно просто посмотреть текущую строку и столбец матрицы. Мы можем победить, только поставив крестик (или нолик) в какую-то ячейку, причем эта проставленная ячейка будет частью победной строки или стролбца (или ничья).
0
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,854
24.06.2014, 07:19
Цитата Сообщение от Psilon Посмотреть сообщение
Мы можем победить, только поставив крестик (или нолик) в какую-то ячейку,
ну, так и в живую так жу
или ты имеешь ввиду цикл использовать?
это так скажем второй слой подсказок
или что я использовал -1 и 1,?
ну это один из вариантов решения, причем лежавший на поверхности
Цитата Сообщение от Psilon Посмотреть сообщение
int Win(int x, int y, char symbol)
не проще ли использовать здесь тип bool
тогда
Цитата Сообщение от Psilon Посмотреть сообщение
return map[0][0] == symbol && map[1][1] == symbol && map[2][2] == symbol
* * * * || map[0][2] == symbol && map[1][1] == symbol && map[2][0] == symbol;
будет более оправдано
да и здесь можно цикл использовать
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6101 / 4957 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
24.06.2014, 21:35
ValeryS, в С же вроде нет bool, а есть только макрос BOOL . А вводить его через typedef не вижу смысла же. Хотя могу ошибаться Привык, что булевский тип это int.
0
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,854
24.06.2014, 22:01
Цитата Сообщение от Psilon Посмотреть сообщение
ValeryS, в С же вроде нет bool,
ну, а мы то в каком разделе?
Цитата Сообщение от Psilon Посмотреть сообщение
#include <iostream>
using namespace std;
это вроде тоже из плюсов
1
Master of Orion
Эксперт .NET
 Аватар для Psilon
6101 / 4957 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
24.06.2014, 22:35
ValeryS, да путаюсь в них
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.06.2014, 22:35
Помогаю со студенческими работами здесь

Крестики нолики
Доброго времени суток, недавно, я решил написать программу Крестики нолики, опираясь на свои знания в С++, но при компиляции кода...

Крестики нолики 10 на 10
Нашел код крестики нолики 4 на 4 но не компилируется, там ошибки почему то в &lt;&lt; хочу сделать из него 10 на 10 Может кто нибудь...

Крестики нолики
Доброго времени суток, недавно я решил написать игру крестики нолики, написал, но код в ~1300 строк, что очень много, в коде много похожих...

Крестики-нолики
Всем привет и заранее спасибо, кто откликнется. Проблема следующая: игра работает почти корректно, за исключением одной детали: при вызове...

крестики-нолики
Здравствуйте! у кого есть примеры программ крестики-нолики? если не затруднит поделитесь пожалуйста..


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru