Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
-3 / 0 / 0
Регистрация: 21.10.2017
Сообщений: 55
1

Как обратиться к массиву?

12.04.2018, 17:47. Показов 2000. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Хотелось бы узнать как работает данный массив. Что такое PAD_MAX . И как обращаиться к данному массиву? Он должен выводить часть поля для игры крестики нолики. И мне нужно к нему обратиться , но я не знаю как. Подскажите люди добрые.




C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
 
#define PAD_MAX 4
 
char mass[PAD_MAX][16] = {
    {"Game pad: \n"},
    {"|---|---|---| \n"},
    {"|---|---|---| \n"},
    {"|---|---|---| \n"}
    };
int main(void)
{
    int i;
    for(i = 0; i < PAD_MAX; i++)
    {
        printf("%s", mass[i]);
    }
    
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.04.2018, 17:47
Ответы с готовыми решениями:

Необходимо обратиться к исходному массиву
На строке 52 (и 60) надо обратиться к исходному массиву, т.е. сделать реверс (и сдвиг) массива...

Почему нельзя обратиться к массиву, не указывая индекс его элемента
Всем привет. вот часть кода. #define N 3 int main() { char *m = {&quot;First&quot;,&quot;Second&quot;,&quot;The...

Как обратиться к массиву
вот я создал динамический массив: int a1 = 4; // строк int a2 = 7; // столбцов // создадим...

Как обратиться к массиву?
Есть массив res типа obj. и не могу вывести в label то что помечено красным. Как это сделать?...

5
2489 / 1147 / 707
Регистрация: 25.04.2016
Сообщений: 3,294
12.04.2018, 18:06 2
- Господин, массив?

#define PAD_MAX 4

Это команда для препроцессора, перед компиляцией программы в каждом месте, где встретится текст PAD_MAX, вместо это текста будет подставлено значение 4. Если так понять сложно, представьте себе, что это константа, т.е.
C
1
const int PAD_MAX = 4;
и теперь в каждом месте программы, где встретится PAD_MAX, на самом деле будет стоять число 4.

В целом тут происходит следующее:

Задается первая размерность двумерного массива mass[][], затем объявляется сам массив mass[4][16], ну и после этого происходит печать каждой строки этого двумерного массива на экран.

Обратиться к элементам этого массива можно как к элементам любого другого двумерного массива:
C
1
2
3
4
5
6
7
8
for (int i = 0; i<4; i++)
{
    for (int k = 0; k<16; k++)
    {
        printf("%c", mass[i][k]);
    }
    printf("\n");
}
0
-3 / 0 / 0
Регистрация: 21.10.2017
Сообщений: 55
12.04.2018, 18:49  [ТС] 3
А вы не подскажите как , вывести на игровое поле "нолик" или "крестик" вместо дефиса по средине. Я пытался как на видео сделать ,а там человек пишет на Си++. Я пытался через if else но ничего не вышло.



Вот полностью код моей игры я хотел функции меин , где цикл сделать вывод крестика или нолика на игровое поле массива.
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
#include "stdio.h"
#include "string.h"
#define PAD_MAX 4
 int get_move(){
 int i;
 int go; 
    printf("Варианты перемещения: \n"); 
    printf ("|-7-|-8-|-9-| \n");
    printf ("|-4-|-5-|-6-| \n");
    printf ("|-1-|-2-|-3-| \n");
    printf ("------------------ \n"); 
 char mass[PAD_MAX][16] = {
    {"Game pad: \n"},
    {"|---|---|---| \n"},
    {"|---|---|---| \n"},
    {"|---|---|---| \n"}
    };
    
    for(i = 0; i < PAD_MAX; i++)
    {
        printf("%s", mass[i]);
    }
    printf ("Введите число: \n");
    
            
    scanf("%i" , &go );
    while( go>9){
        printf ("Введите корректное число от (1-9): \n", go);
        scanf("%i" , &go );
        
    }
    while( go<1){
        printf ("Введите корректное число от (1-9): \n", go);
        scanf("%i" , &go );
    }
 
 }
 
int main(){
    for(int i=0;i<4;i++){
   int go=get_move();
    printf("Ход который вы ввели:%i \n", go);
    
    
    }
    
   
  
    
    return 0;
}
Изображения
 
0
2489 / 1147 / 707
Регистрация: 25.04.2016
Сообщений: 3,294
12.04.2018, 23:49 4
Лучший ответ Сообщение было отмечено K4RT3R как решение

Решение

Я бы изменил принцип самой программы до чего-нибудь вроде такого:
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
#include <stdio.h>
 
void gen_field (int a[][3], const int);     // делаем пустое поле
void print_field (int a[][3], const int);       // вывордим поле на экран
int  get_move (void);                               // ход игрока
void do_move (int a[][3], int, int);            // осуществляем ход игрока
int game_Over (int a[][3], const int);          // проверяем поле на конец игры
 
int main (void)
{
    /* игра крестики-нолики */
    const int n = 3;                // размеры игрового поля
    int bf[n][n];                   // игровое поле
 
    gen_field(bf, n);               // генерируем пустое поле
    print_field(bf, n);         // выводим поле на экран
 
    int inGame = 1; // идет ли игра? (1 - да, 0 - нет)
    int go;             // ход игрока
    int step = 0;       // количество сделанных ходов
    int player = 1; // начинаем с игрока1
 
    while (inGame > 0)
    {
        if (game_Over(bf, n) == 1) inGame = 0;  // если пришел конец игры
        else
        {
            go = get_move();            // узнаем ход игрока
 
            // нужно проверить, а не ошибся ли игрок с вводом,
            // и не занято ли выбранное поле ходом другого игрока..
 
            do_move(bf, go, player);// совершаем ход для игрока player
            print_field(bf, n);     // выводим поле на экран
 
            // тут нужно поменять игрока на следующих ход
            // т.е. если был игрок1, становится игрок2
            player = (player > 1) ? 1: 2;
        }
    }
    int i;
    for (i=0; i<6; i++) printf("\n");
    /* **********************************************
     * тут нужно определить кто выиграл..
     * или это можно сделать внутри game_Over
     * в любом случае нужно сообщить результат игры
     * *********************************************/
    return 0;   
}
// --- заполняем поле пустыми клетками ---
void gen_field (int a[][3], const int z)
{
    int i, k;
    for (i=0; i<z; i++)
        for (k=0; k<z; k++)
            a[i][k] = 0;
}
// --- выводим поле на экран ---
void print_field (int a[][3], const int z)
{
    int i, k;
    for (i=0; i<6; i++) printf("\n");
    printf("\n\t Game field:\n");   // шапка
    for (i=0; i<z; i++)
    {
        printf("\t|");              // левая граница поля
        for (k=0; k<z; k++)     // правую границу выводим...
            if (a[i][k] == 0) printf("---|");       // ...в зависимости от значения
            else if (a[i][k] == 1) printf("-X-|");  // игрового поля. 0 - пустое;
            else printf("-0-|");                            // 1 - крестик; 2 - нолик;
        printf("\n");
    }
}
// --- получаем ход игрока ---
int get_move (void)
{
    int i;
    for (i=0; i<6; i++) printf("\n");
    printf("Варианты перемещения:\n"); 
    printf ("------------------\n");
    printf ("|-7-|-8-|-9-|\n");
    printf ("|-4-|-5-|-6-|\n");
    printf ("|-1-|-2-|-3-|\n");
    printf ("------------------\n"); 
    int n;
    do{
        printf("n = ");
        scanf("%d", &n);
    }while (n<1 || n>9);
 
    return n;
}
// --- совершаем ход: для player1 ставим 1, для plsyer2 ставим 2 --
void do_move(int a[][3], int go, int player)
{
    switch (go)
    {
        case 1:
            a[2][0] = (player == 1)? 1: 2;      // если игрок 1, ставим 1
            break;
        case 2:
            a[2][1] = (player == 1)? 1: 2;      // если игрок 2, ставим 2
            break;
        case 3:
            a[2][2] = (player == 1)? 1: 2;
            break;
        case 4:
            a[1][0] = (player == 1)? 1: 2;
            break;
        case 5:
            a[1][1] = (player == 1)? 1: 2;
            break;
        case 6:
            a[1][2] = (player == 1)? 1: 2;
            break;
        case 7:
            a[0][0] = (player == 1)? 1: 2;
            break;
        case 8:
            a[0][1] = (player == 1)? 1: 2;
            break;
        case 9:
            a[0][2] = (player == 1)? 1: 2;
            break;
    }
}
int game_Over (int a[][3], const int z)
{
    int i, k;
    int over = 0;           // конец игры? пока нет
 
    // прроверим остались ли еще ходы?
    int max = z*z;
    for (i=0; i<z; i++)
        for (k=0; k<z; k++)
            if(a[i][k] != 0) max--;
    if (max <1) over = 1;   // если все поле занято, конец игры
    
    /* тут нам нужно проверить все поле на конец игры, т.е. не закончил
     * ли кто игру досрочно */
    return over;
}
Добавлено через 3 минуты
Т.е. смысл в том, что у нас есть игровое поле 3х3 , и это поле хранится в массиве в main(), а когда нам нужно что-то сделать с полем, например записать в него новый ход игрока, мы передаем его в нужную функцию. При этом для печати нам достаточно просто передать поле и посмотреть какие ходы в нем записаны, т.е. например ходы первого игрока обозначены числом 1, ходы второго игрока - числом 2, и соответственно свободное поле - числом 0. Тогда мы просто смотрим что записано в текущую ячейку поля и в зависимости от этого выводим на экран илбо крстик, либо нолик. либо прочерк... Ну и так далее.
1
-3 / 0 / 0
Регистрация: 21.10.2017
Сообщений: 55
13.04.2018, 11:24  [ТС] 5
Большущее вам спасибо!

Добавлено через 1 час 24 минуты
Для того , чтобы сделать вывод победителя необходимо с помощью if задать нужно условие в нашем случае это a[...][...] к примеру > 3 . 3 т.к кол-во шагов не должно превышать по вертикали и горизонтали. Правильно я мыслю?
0
2489 / 1147 / 707
Регистрация: 25.04.2016
Сообщений: 3,294
13.04.2018, 23:22 6
Лучший ответ Сообщение было отмечено K4RT3R как решение

Решение

Это зависит от того, как мы кодируем наше игровое поле, допустим, пусть пустая клетка - это 0, крестик - это 1 и нолик - это 2, проще всего найти победителя посчитав сумму в трех клетках, т.е.
1 + 1 + 1 = 3
2 + 2 + 2 = 6

на первый взгляд все хорошо, но если у нас будет строка:

2 1 0

то 2 + 1 + 0 = 3
а это сумма для крестиков... т.е. стоит выбирать такие значения, сумму которых можно определить однозначно, например:
пустая клетка - 0
крестик - 1
нолик - 5

в этом случае, как бы мы ни старались, но в любом случае нам нужно в сумме либо 3, либо 15 для победы

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

пусть:

х х х
х х х
х х х

- это наш массив.

тогда нам нужно найти и проверить суммы всех горизонталей:

х х х
х х х
х х х

х х х
х х х
х х х

х х х
х х х
х х х

затем точно так же, всех вертикалей:
х х х
х х х
х х х

х х х
х х х
х х х

х х х
х х х
х х х

и всех диагоналей:

х х х
х х х
х х х

х х х
х х х
х х х

и если хотя бы в одном случае встретится совпадение с 3 или 15, значит победитель определен и игра закончена.

Добавлено через 8 минут
нахождение и проверку суммы по горизонталям и вертикалям лучше поручить вложенным циклам, например:

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
int i, k;               // счетчики циклов
const int z = 3;        // размер массива
int s;                  // сумма
 
// проверим по горизонтали
for (i=0; i<z; i++)
{
    s = 0;
    for (k=0; k<z; k++)
        s+= a[i][k];            // s = s + a[i][k];
    if (s == 3) break;
    if (s == 15) break;
}
 
if (s == 3) ;  // победитель найден, закончить проверку
if (s == 15) ; // победитель найден, закончить проверку
 
// теперь по вертикали
for (i=0; i<z; i++)
{
    s = 0;
    for (k=0; k<z; k++)
        s += a[k][i];
    if (s == 3) break;
    if (s == 15) break;
}
 
if (s == 3) ;  // победитель найден, закончить проверку
if (s == 15) ; // победитель найден, закончить проверку
а диагонали вполне можно и обычной суммой найти, т.е. вроде:
C
1
s = a[0][0]+a[1][1]+a[2][2];
Добавлено через 2 минуты
В общем, это ненамного сложнее, чем просто if прописать...

Хотя можно, конечно посчитать все суммы вручную...
C
1
2
3
4
s = a[0][0]+a[0][1]+a[0][2];
if (s == x) ...
s = a[1][0]+a[1][1]+a[1][2];
if (s == x) ...
и так до впадения в маразм

выглядеть будет конечно кошмарно, зато будет железно работать.

Добавлено через 5 часов 21 минуту
Думаю это не единственный вопрос, который может у вас возникнуть, поэтому я просто оставлю этот код здесь:
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
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
#include <stdio.h>
 
void gen_field (int a[][3], const int);     // создаем пустое поле
void print_field (int a[][3], const int);   // выводим поле на экран
int get_move (void);                        // ход игрока
int convert_2d (int);                       // переводим ход игрока в индекс
int check_move (int a[][3], const int, int);// свободна ли ячейка?
void do_move (int a[][3], int, int);        // осуществляем ход игрока
int game_over (int a[][3], const int);      // проверяем поле на конец игры
int win_player (int a[][3], const int);     // кто победил?
 
int main (void)
{
    /* игра крестики-нолики для двух игроков */
    const int n = 3;                // размеры игрового поля
    int bf[n][n];                   // игровое поле
 
    gen_field(bf, n);               // генерируем пустое поле
 
    int inGame = 1;             // идет ли игра? (1 - да, 0 - нет)
    int go;                     // ход игрока
    int player = 1;             // начинаем с игрока1
    int doit;                   // запрашивать ли ввод от игрока?
 
    while (inGame > 0)
    {
        print_field(bf, n);     // выводим поле на экран
        if (game_over(bf, n) > 0) inGame = 0;   // если пришел конец игры
        else
        {
            do {
                print_field(bf, n);                     // выводим поле на экран
                go = get_move();                            // узнаем ход игрока
            } while (check_move(bf, n, go) > 0);    // можно ли ходить?
 
            do_move(bf, go, player);            // совершаем ход для игрока player
            player = (player > 1) ? 1: 2;       // если был игрок1, становится игрок2
        }
    }
 
    int i;
    print_field(bf, n);                         // выводим поле на экран
    for (i=0; i<5; i++) printf("\n");       // напечатаем отступ
 
    player = win_player(bf, n);             // определим победителя
 
    if (player < 1)         printf("\t  Ничья.\n");
    else if (player < 2)    printf("\tВыиграл игрок 1.\n");
    else                    printf("\tВыиграл игрок 2.\n");
    for (i=0; i<6; i++) printf("\n");       // напечатаем отступ
 
    return 0;
}
// --------------- заполняем поле пустыми клетками ----------------
void gen_field (int a[][3], const int z)
{
    int i, k;
    for (i=0; i<z; i++)
        for (k=0; k<z; k++)
            a[i][k] = 0;
}
// -------------------- выводим поле на экран ---------------------
void print_field (int a[][3], const int z)
{
    int i, k;
    for (i=0; i<6; i++) printf("\n");
    printf("\n\t Game field:\n");   // шапка
 
    for (i=0; i<z; i++)
    {
        printf("\t|");              // левая граница поля
        for (k=0; k<z; k++)     // правую границу выводим...
            if (a[i][k] < 1) printf("---|");        // ...в зависимости от значения
            else if (a[i][k] < 7) printf("-X-|");   // игрового поля. 0 - пустое;
            else printf("-0-|");                            // 5 - крестик; 7 - нолик;
        printf("\n");
    }
}
// --------------------- получаем ход игрока ----------------------
int get_move (void)
{
    int i, n, s = 1;
    for (i=0; i<6; i++) printf("\n");
    printf("Варианты перемещения:\n");
    printf ("------------------\n");
    printf ("|-7-|-8-|-9-|\n");
    printf ("|-4-|-5-|-6-|\n");
    printf ("|-1-|-2-|-3-|\n");
    printf ("------------------\n");
    do{
        printf("n = ");
        scanf("%d", &n);
    }while (n<1 || n>9);
 
    return n;
}
// ------- переводим ход игрока в индекс одномерного массива ------
int convert_2d (int f)
{
    if (f>0 && f<4)  return f+5;
    if (f>3 && f<7)  return f-1;
    if (f>6 && f<10) return f-7;
}
// ------------- проверяем свободна ли заданная ячейка ------------
int check_move (int a[][3], const int z, int go)
{
    int result;
    int f = convert_2d(go);
    int i = (int) f/3;
    int k = f%3;
    return result = (a[i][k] > 0) ? 1 : 0;  // если занята 1, иначе 0
}
// --- совершаем ход: для player1 ставим 1, для player2 ставим 2 --
void do_move(int a[][3], int go, int player)
{
    int f = convert_2d(go);
    int i = (int) f/3;          // узнаем первый индекс
    int k = f%3;                    // второй индекс
    a[i][k] = (player < 2) ? 5 : 7; // если игрок 1, ставим 5, иначе 7
}
// ---------------- проверим остались ли еще ходы -----------------
int game_over (int a[][3], const int z)
{
    int i, k, max = z*z, over = 0;  // конец игры? пока нет
    for (i=0; i<z; i++)
        for (k=0; k<z; k++)
            if(a[i][k] > 0) max--;
    if (max < 1) return over = 1;       // если все поле занято, конец игры
    over = win_player(a, z);            // не закончил ли кто игру досрочно?
    return over;
}
// ---------- проверим не закончил ли кто игру досрочно -----------
int win_player (int a[][3], const int z)
{
    int i, k, s, x = 5*z, y = 7*z, over = 0;
    for (i=0; i<z; i++)                 // проверим по горизонтали
    {
        s = 0;
        for (k=0; k<z; k++)
            s+= a[i][k];
        if (s == x) over = 1, i = z;
        if (s == y) over = 2, i = z;
    }
    if (over > 0) return over;
    for (i=0; i<z; i++)                 // теперь по вертикали
    {
        s = 0;
        for (k=0; k<z; k++)
            s+= a[k][i];
        if (s == x) over = 1, i = z;
        if (s == y) over = 2, i = z;
    }
    if (over > 0) return over;
    s = a[0][0]+a[1][1]+a[2][2];        // теперь по диагоналям
    if (s == x) over = 1;
    if (s == y) over = 2;
    if (over > 0) return over;
    s = a[0][2]+a[1][1]+a[2][0];
    if (s == x) over = 1;
    if (s == y) over = 2;
    return over;
}
Добавлено через 23 минуты
Единственное, что тут требует разъяснений, так это алгоритм, по которому мы из хода игрока получаем индексы массива:

вот индексы нашего двумерного массива:

0,0 0,1 0,2
1,0 1,1 1,2
2,0 2,1 2,2

мы можем сопоставить ему одномерный массив:
0 1 2
3 4 5
6 7 8

Ну, на деле он, конечно выглядит просто как лента индексов: 0 1 2 3 4 5 6 7 8, но в виде матрицы проще сопоставить соответствующие клетки. Т.е. клетке 0,0 соответствует клетка 0, клетке 1,1 соответствует клетка 4, и т.д.

и у нас есть таблица ходов для игрока:

7 8 9
4 5 6
1 2 3

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

1. Сначала мы переводим ход игрока в соответствующий ему индекс одномерного массива:

массив | ходы:
0 1 2 | 7 8 9
3 4 5 | 4 5 6
6 7 8 | 1 2 3

т.е. из числа 1 в правой части должно получиться число 6 в левой, а из числа 9 в правой части должно получиться число 2 в левой. Преобразование производится по следующему принципу:

n = a - 7 | if a >= 7 && a <= 9
n = a - 1 | if a >= 4 && a <= 6
n = a + 5 | if a >= 1 && a <= 3

за это отвечает функция convert_2d()
т.е. она получает ход игрока a и возвращает индекс воображаемого одномерного массива n

теперь все, что остается - это преобразовать индекс воображаемого одномерного массива в реальные индексы двумерного массива, т.е. из числа 0 получить индексы 0 и 0, из числа 8 получить индексы 2 и 2. На самом деле это довольно просто.

Первый индекс мы получаем делением с отбрасыванием дробной части, т.е. мы делим индекс воображаемого одномерного массива на размер массива, в нашем случае - это 3:
a[i][k]
i = (int) n /3;
мы просто делим n нацело, с отбрасыванием дробной части

и второй индекс k получается получением остатка от деления n на размер массива:
k = n % 3;

почему так?

Допустим, у нас индекс одномерного массива 0
тогда
i = 0 / 3 = 0
k = 0 % 3 = 0

т.е. получаются индексы 0 и 0

Давайте преобразуем обратно:
n = i*3 + k = 0*3 + 0 = 0

т.е. все работает...

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

Добавлено через 38 минут
Вообще думаю этот код можно значительно улучшить и оптимизировать, поскольку я над ним особо не думал - просто писал первое, что в голову придет.
1
13.04.2018, 23:22
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.04.2018, 23:22
Помогаю со студенческими работами здесь

Как обратиться к массиву string
Задача состоит в том чтобы закинуть все слова из строки string в массив слов string, вроде делаю...

Как обратиться к инициализированному массиву
Здравствуйте, массив заявлен, но про него еще ничего не ясно и как работать с этим идентификатором,...

Как обратиться к массиву буквой?
Текст задания : Шахматная партия. Шахматная доска имеет размер 8х8. При этом координаты фигуры...

Как обратиться к массиву структур
Создал структуру class strForDebug { public double dCoordinates; public...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Какой язык программировани­я лучший для разработки нейронных сетей
InfoMaster 20.01.2025
В современном мире технологий искусственные нейронные сети становятся неотъемлемой частью множества инновационных решений, от распознавания речи до автоматического управления транспортными. . .
Как подключить JavaScript файл в другом JavaScript файле
InfoMaster 20.01.2025
В современной веб-разработке организация кодовой базы играет ключевую роль в создании масштабируемых и поддерживаемых приложений. Модульность и правильное структурирование кода стали неотъемлемыми. . .
Как откатить изменения в исходниках, не внесенные в Git
InfoMaster 20.01.2025
При работе с системой контроля версий Git разработчики часто сталкиваются с необходимостью отменить внесенные изменения в исходном коде. Особенно актуальной становится ситуация, когда изменения еще. . .
В чем разница между px, in, mm, pt, dip, dp, sp
InfoMaster 20.01.2025
В мире цифрового дизайна и разработки интерфейсов правильный выбор единиц измерения играет ключевую роль в создании качественного пользовательского опыта. История развития систем измерений для. . .
Как изменить адрес удалённого репозитория (origin) в Git
InfoMaster 20.01.2025
В терминологии Git термин origin является стандартным именем для основного удаленного репозитория, с которым взаимодействует локальная копия проекта. Когда разработчик клонирует репозиторий с. . .
Как переместить последние коммиты в новую ветку (branch) в Git
InfoMaster 20.01.2025
При работе над проектом часто возникают ситуации, когда необходимо изолировать определенные изменения от основной линии разработки. Это может быть связано с экспериментальными функциями, исправлением. . .
Как вернуть результат из асинхронной функции в JavaScript
InfoMaster 20.01.2025
Асинхронное программирование представляет собой фундаментальную концепцию в JavaScript, которая позволяет выполнять длительные операции без блокировки основного потока выполнения программы. В. . .
Какой локальный веб-сервер выбрать
InfoMaster 19.01.2025
В современной веб-разработке локальные веб-серверы играют ключевую роль, предоставляя разработчикам надежную среду для создания, тестирования и отладки веб-приложений без необходимости использования. . .
Почему планшеты и iPad уже не так популярны, как раньше
InfoMaster 19.01.2025
Эра революционных инноваций История планшетов началась задолго до того, как эти устройства стали привычными спутниками нашей повседневной жизни. В начале 1990-х годов появились первые прототипы,. . .
Как самому прошить BIOS ноутбука
InfoMaster 19.01.2025
BIOS (Basic Input/ Output System) представляет собой важнейший компонент любого компьютера или ноутбука, который обеспечивает базовое взаимодействие между аппаратным и программным обеспечением. . .
Какой Linux выбрать для домашнего компьютера
InfoMaster 19.01.2025
Современные реалии выбора операционной системы В современном мире выбор операционной системы для домашнего компьютера становится все более важным решением, которое может существенно повлиять на. . .
Как объединить два словаря одним выражением в Python
InfoMaster 19.01.2025
В мире программирования на Python работа со словарями является неотъемлемой частью разработки. Словари представляют собой мощный инструмент для хранения и обработки данных в формате "ключ-значение". . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru