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

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

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

Студворк — интернет-сервис помощи студентам
Хотелось бы узнать как работает данный массив. Что такое 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 last&quot;}; char *tmp; int...

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

5
2487 / 1151 / 709
Регистрация: 25.04.2016
Сообщений: 3,315
12.04.2018, 18:06
- Господин, массив?

#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  [ТС]
А вы не подскажите как , вывести на игровое поле "нолик" или "крестик" вместо дефиса по средине. Я пытался как на видео сделать ,а там человек пишет на Си++. Я пытался через 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
2487 / 1151 / 709
Регистрация: 25.04.2016
Сообщений: 3,315
12.04.2018, 23:49
Лучший ответ Сообщение было отмечено 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  [ТС]
Большущее вам спасибо!

Добавлено через 1 час 24 минуты
Для того , чтобы сделать вывод победителя необходимо с помощью if задать нужно условие в нашем случае это a[...][...] к примеру > 3 . 3 т.к кол-во шагов не должно превышать по вертикали и горизонтали. Правильно я мыслю?
0
2487 / 1151 / 709
Регистрация: 25.04.2016
Сообщений: 3,315
13.04.2018, 23:22
Лучший ответ Сообщение было отмечено 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.04.2018, 23:22
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru