Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
xTIGRx
292 / 198 / 2
Регистрация: 23.10.2010
Сообщений: 1,174
Записей в блоге: 1
#1

Как присвоить ячейке число в матрице - C++

20.01.2014, 08:00. Просмотров 481. Ответов 13
Метки нет (Все метки)

Есть матрица 3 на 3, как сделать чтобы каждой ячейке (всего получается 9) присвоить свое значение, чтобы в дальнейшем обращаться к ним по номерам...подкиньте идейку или направьте в нужное русло....
это надо чтобы сделать крестики нолики в OpenGL
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.01.2014, 08:00
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как присвоить ячейке число в матрице (C++):

Как присвоить нужному элементу в матрице значение первого или последнего элемента? - C++
#include <stdio.h> #include <conio.h> #include<iostream> using namespace std; int main() { int a; int i,j,n,k; int...

Как присвоить значение любое число - C++
у меня в программе есть значение char c='1'; Мне нужно чтоб "с" было равно любому числу от 0 до 9999......

Как присвоить константе число с клавиатуры - C++
Есть массив const a = 100; int mas; Нужно сделать так, что бы размер массива указывался с клавиатуры. как это можно...

Как правильно число в ячейке типа string, перекинуть в ячейку в тип double ? - C++
Cуть вопроса описанна в теме. Может не правильно объяснил, но всё же, вот пример: #include <iostream> #include <string> ...

Как присвоить переменной рандомное число в диапазоне 000000 до 999999 - C++
Как присвоить переменной предположим А рандомное число в диапазоне 000000 до 999999 , не 0 - 999999 а 000000-999999

Присвоить число из строки любой переменной - C++
Есть любая строка например: char {12:15}; как из неё присвоить переменной n число 12?

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Enotniy
96 / 95 / 14
Регистрация: 15.01.2014
Сообщений: 283
20.01.2014, 08:13 #2
xTIGRx, храни в массиве int mass[9].
0 1 2
3 4 5
6 7 8
вот и всё в чём проблема-то
0
Ev_Hyper
Заблокирован
20.01.2014, 10:04 #3
Enotniy, так неудобно. Если матрица 3x3, то и массив должен быть двухмерный int mas[3][3];
0
xTIGRx
292 / 198 / 2
Регистрация: 23.10.2010
Сообщений: 1,174
Записей в блоге: 1
20.01.2014, 18:25  [ТС] #4
Enotniy, я не про консольный вариант сейчас говорю...матрицу создавать я умею если что...вы хоть понимаете что значит делать отрисовку клеток с массивом???, тему внимательнее читаем.

Ev_Hyper, ребята чиатйте пожалуйста вначале тему...я вообще создаю клетку без массива...
0
some_name
Вежливость-главное оружие
225 / 224 / 55
Регистрация: 19.02.2013
Сообщений: 1,440
20.01.2014, 18:33 #5
чушь какае-то :
Цитата Сообщение от xTIGRx Посмотреть сообщение
Есть матрица 3 на 3 (всего получается 9)
==
Цитата Сообщение от xTIGRx Посмотреть сообщение
я вообще создаю клетку без массива
?????
0
Tulosba
:)
Эксперт С++
4396 / 3239 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
20.01.2014, 18:41 #6
Цитата Сообщение от xTIGRx Посмотреть сообщение
Есть матрица 3 на 3, как сделать чтобы каждой ячейке (всего получается 9) присвоить свое значение,
а чего кода пожалели? Отсюда и рождается недопонимание.
0
Arkaniy
106 / 106 / 6
Регистрация: 29.08.2012
Сообщений: 453
20.01.2014, 18:41 #7
Можно сделать эдакое преобразование. К примеру нужно обратиться к 4 ячейке, тогда можно записать так
mass[4/3][4%3]; и получится mass[1][1]; что и соответствует 4 ячейке, если начинать отсчет с 0.
0
MrGluck
Модератор
Эксперт CЭксперт С++
7239 / 4407 / 642
Регистрация: 29.11.2010
Сообщений: 11,929
20.01.2014, 19:01 #8
Ну создаете вы клетку без массива. А дальше то все равно нужно 9 сущностей во что-то агрегировать, логичнее всего - в двумерный массив, но можно извратиться и в одномерный засунуть.

Вас интересует обращение к конкретному элементу по номеру? Ну вот тогда вам примерчик:
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
#include <cstdlib>
#include <iostream>
 
const int N = 3; // just for example, because I'm lazy
 
void fill(char A[N][N])
{
    for (int i=0; i < N; i++)
        for (int j=0; j < N; j++)
            A[i][j] = '_';
}
 
bool isFull(const char A[N][N])
{
    for (int i=0; i < N; i++)
        for (int j=0; j < N; j++)
            if (A[i][j] == '_')
                return false;
    return true;
}
 
void printRule()
{
    std::cout << "Rule:\n";
    for (int i=0; i < N; i++)
    {
        for (int j=0; j < N; j++)
            std::cout << i*N + j + 1 << " ";
        std::cout << std::endl;
    }
    std::cout << std::endl;
}
 
void print(const char A[N][N])
{
    #ifdef _WIN32
    system("cls");
    #else
    system("clear");
    #endif
 
    printRule();
    for (int i=0; i < N; i++)
    {
        for (int j=0; j < N; j++)
            std::cout << A[i][j] << " ";
        std::cout << std::endl;
    }
 
    std::cin.get(); // pause
}
 
void addAndPrint(char A[N][N], int n, const char c)
{
    // check
    if (n < 1 || n > N*N)
    {
        std::cout << "\aNeed integer from 1 to " << N*N << std::endl;
        return;
    }
 
    n--; // make index from number
 
    char *place = &A[n/N][n%N];
    if (*place != '_')
    {
        std::cout << "\aPlace is already filled\n";
        return;
    }
    else
        *place = c; // add new label
 
    print(A);
}
 
 
int main()
{
    char A[N][N];
    fill(A);
    const char players[2] = {'X', 'O'};
    bool state = false;
    printRule();
    for (int i; !isFull(A) && std::cin >> i; addAndPrint(A, i, players[state]), state ^=1);
}
Вообщем писал пока не надоело Проверок на победу нет, в случае попытки поставить на то же место игрок теряет ход, а не ходит заново.
2
Ev_Hyper
Заблокирован
20.01.2014, 20:27 #9
Цитата Сообщение от xTIGRx Посмотреть сообщение
Enotniy, я не про консольный вариант сейчас говорю...матрицу создавать я умею если что...вы хоть понимаете что значит делать отрисовку клеток с массивом???, тему внимательнее читаем.
Ev_Hyper, ребята чиатйте пожалуйста вначале тему...я вообще создаю клетку без массива...
а что по вашему массивы только для консольных приложений нужны?

Насчет крестиков-ноликов, почему не сделать так, чтобы пользователь просто клацал на нужную кнопку?
0
xTIGRx
292 / 198 / 2
Регистрация: 23.10.2010
Сообщений: 1,174
Записей в блоге: 1
21.01.2014, 20:04  [ТС] #10
Ev_Hyper, да можно, только как это реализовать в OpenGL, ведь там нет как в Builder кнопки которую можно перетащить на форму и клацать)))

MrGluck, то что надо)) осталось мне только разобраться в вашем коде и сделать это в OpenGL)). да кстати вопрос...как в консоли вы нарисовали матрицу с '_' и после ввода стирается та ячейка номер которой ввели и записывается Х или О???
0
Ev_Hyper
Заблокирован
21.01.2014, 20:06 #11
Цитата Сообщение от xTIGRx Посмотреть сообщение
Ev_Hyper, да можно, только как это реализовать в OpenGL, ведь там нет как в Builder кнопки которую можно перетащить на форму и клацать)))
а вам что обязательно в OpenGl надо?
0
MrGluck
Модератор
Эксперт CЭксперт С++
7239 / 4407 / 642
Регистрация: 29.11.2010
Сообщений: 11,929
21.01.2014, 20:09 #12
Цитата Сообщение от xTIGRx Посмотреть сообщение
MrGluck, то что надо)) осталось мне только разобраться в вашем коде и сделать это в OpenGL)). да кстати вопрос...как в консоли вы нарисовали матрицу с '_' и после ввода стирается та ячейка номер которой ввели и записывается Х или О???
с помощью команд системы тут:
Цитата Сообщение от MrGluck Посмотреть сообщение
C++
1
2
3
4
5
#ifdef _WIN32
system("cls");
#else
system("clear");
#endif
для винды это cls, для Linux (наверное и UNIX) clear.

Добавлено через 2 минуты
У меня просто каждый раз перерисовка идет
0
xTIGRx
292 / 198 / 2
Регистрация: 23.10.2010
Сообщений: 1,174
Записей в блоге: 1
21.01.2014, 21:50  [ТС] #13
Ev_Hyper, да)) я же на чистом C++ пишу, а вы как я понял Builder используете а точнее Rad studio...

MrGluck, ок спс.
0
Ev_Hyper
Заблокирован
22.01.2014, 09:20 #14
Цитата Сообщение от xTIGRx Посмотреть сообщение
Ev_Hyper, да)) я же на чистом C++ пишу, а вы как я понял Builder используете а точнее Rad studio...
неправильно поняли С Борландом совсем незнаком. Немного Qt знаю и С# начал учить
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.01.2014, 09:20
Привет! Вот еще темы с ответами:

Присвоить целой переменной L число, составленное из литерных переменных - C++
всем здравствуйте, помогите пожалуйста. написать на Си программу. задание вот: Значениями литерных переменных С0,С1,С2, являются цифры....

Вывести сумму элементов с x-той по y-тую строку включительно. (1<=x<=y<=h) 2)2 x y z – изменить элемент в ячейке x, y на число z - C++
Дана прямоугольная таблица h*w (h, w&lt;=250). Затем дано m запросов (m&lt;=105). Есть два вида запросов: 1)1 x y – вывести сумму элементов с...

Присвоить переменной S определенное значение, если введенное число х лежит вне отрезков [2..5] и [-1..1] - C++
. Не используя оператора if, присвоить переменной S значение 0, если введенное число х лежит вне отрезков и , и значение 1 — в противном...

Переменной целого типа присвоить число, образованное совместной записью трех символьных переменных - C++
Заданные три переменных символьного типа. Переменные целого типа присвоить число, образованное совместимых записью этих переменных. Если...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
22.01.2014, 09:20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru