Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/103: Рейтинг темы: голосов - 103, средняя оценка - 4.62
2 / 2 / 0
Регистрация: 01.10.2016
Сообщений: 239

Массив типа bool

08.02.2017, 11:08. Показов 22707. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет, в трех словах, нужно создать массив bool[][] в котором изначально все ячейки false и их значение меняется в зависимости от выбранного radiobutton/checkbox (radiobutton - 6 штук, checkbox - 6 штук). И создать еще один массив в котором правильные ответы уже true. и на обработчике кнопки сверить два массива.
по коду.
есть переменная int questionNumber
и есть два массива
bool [][] ua; (usersAnswer) - насколько мне известно в C# переменная типа bool по умолчанию идет как false следовательно у меня есть массив в котором все ячейки равны false.
в обработчике checkbox.checkedchanged есть запись
ua[questionNumber][0] = true; - в этом моменте ошибка (Ссылка на объект не указывает на экземпляр объекта.)
ua[questionNumber][1] = false;
ua[questionNumber][2] = false;
ua[questionNumber][3] = false;
ua[questionNumber][4] = false;
ua[questionNumber][5] = false;
bool [][] ca; (correctAnswer)
в нем хранятся правильные ответы
все вопросы,а так же ответы находятся в коллекции.

Добавлено через 13 минут
при нажатию на кнопку предыдущий вопрос, проверяется массив ua и на нужном questionNumber (вопросе) выставлялись cheked в соответствие с значениями массива

Добавлено через 15 секунд
при нажатию на кнопку предыдущий вопрос, проверяется массив ua и на нужном questionNumber (вопросе) выставлялись cheked в соответствие с значениями массива
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.02.2017, 11:08
Ответы с готовыми решениями:

Хранение в памяти множества объектов с полями типа bool
опирался на эту тему при размышлениях https://www.cyberforum.ru/csharp-beginners/thread634196-page2.html имеется модель, содержащая...

Сформировать массив типа bool из массива типа char
Доброго времени суток! После ввода элементов массива вылазит ошибка "Необработанное исключение: System.NullReferenceException ... "...

Заполнить массив типа bool из БД (тип поля logical)
надо сделать типа bool mass={0,1,0,1,0) я создал поле типа logical в access while(!Query->Eof) { int i=0; bool mass; ...

15
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
08.02.2017, 11:16
connection123,
А обязательно использовать ступенчатые (рваные, jagged) массивы?
В любом случае перед использованием массивы нужно инициализировать.
Для обычных двумерных:
C#
1
bool[,] ua = new bool[5, 10]; //объявляем и инициализируем массив 5х10
После этого массив можно использовать:
C#
1
ua[questionNumber, 0] = true;
Со ступенчатыми чуть сложнее.
Нужны ступенчатые?
0
2 / 2 / 0
Регистрация: 01.10.2016
Сообщений: 239
08.02.2017, 11:21  [ТС]
Даценд, ну нет,нужен массив вида
0 1 2 3 4 5 6 (это номера ответов (которые лежат в коллекции) )
1
2
3
...
(это номера вопросов)

Добавлено через 2 минуты
Даценд, так вот насчет размерности, размерность по вертикале должна быть равна номеру вопроса, ну тоесть 20 вопросов 20 ячеек, по горизонтале на каждый вопрос 6 вариантов ответа.
0
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
08.02.2017, 11:32
connection123,
Ну значит делайте массив 20х6:
C#
1
bool[,] ua = new bool[20, 6];
0
2 / 2 / 0
Регистрация: 01.10.2016
Сообщений: 239
08.02.2017, 11:35  [ТС]
Даценд, Ячейка 0,0 Даценд, да уже сделал, я в обработчике радиобуттоннов и чекбоксов пишу так
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
        private void checkBox1_CheckedChanged(object sender, EventArgs e)
        {
            ua[questionNumber, 0] = true;
            ua[questionNumber, 1] = false;
            ua[questionNumber, 2] = false;
            ua[questionNumber, 3] = false;
            ua[questionNumber, 4] = false;
            ua[questionNumber, 5] = false;
        }
 
        private void checkBox2_CheckedChanged(object sender, EventArgs e)
        {
            ua[questionNumber, 0] = false;
            ua[questionNumber, 1] = true;
            ua[questionNumber, 2] = false;
            ua[questionNumber, 3] = false;
            ua[questionNumber, 4] = false;
            ua[questionNumber, 5] = false;
        }
насколько я понимаю если одновременно будет выбрано 1,2 чекбокс то он будет обнулять переменную которая под индексом 0?
сперва выбрали 1 чекбокс присвоили тру,затем выбрали 2 чекбокс присвоился фалс?
0
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
08.02.2017, 11:40
connection123,
Сделайте один метод, в котором проверяйте все чекбоксы:
C#
1
2
3
4
5
6
void SetArray(int questionNumber)
{
    ua[questionNumber, 0] = checkBox1.Checked;
    ua[questionNumber, 1] = checkBox2.Checked;
    // ну и т.д.
}
И вызывайте этот метод кнопкой типа "Далее", "Проверить", "Next question" и т.п.
0
2 / 2 / 0
Регистрация: 01.10.2016
Сообщений: 239
08.02.2017, 11:41  [ТС]
Даценд, Да,он обнуляет ячейку,как мне этого избежать?
0
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
08.02.2017, 11:46
connection123,
Не обнуляет.
C#
1
2
3
4
5
6
void SetArray(int questionNumber)
{
    ua[questionNumber, 0] = checkBox1.Checked; //если checkBox1 чекнутый, то ua[questionNumber, 0] будет присвоено true, иначе false
    ua[questionNumber, 1] = checkBox2.Checked; //если checkBox2 чекнутый, то ua[questionNumber, 1] будет присвоено true, иначе false
    // ну и т.д.
}
0
2 / 2 / 0
Регистрация: 01.10.2016
Сообщений: 239
08.02.2017, 11:53  [ТС]
Даценд, так откуда тогда он знает тру ли там или нет

Добавлено через 33 секунды
Даценд, Все,щас попробую,отпишу

Добавлено через 1 минуту
Даценд, Этот метод уже точно не пишется в обработчике чекеров?

Добавлено через 3 минуты
Даценд,
C#
1
2
3
4
5
6
7
8
9
        private void checkBox1_CheckedChanged(object sender, EventArgs e)
        {
            ua[questionNumber, 0] = checkBox1.Checked;
            ua[questionNumber, 1] = checkBox2.Checked;
            ua[questionNumber, 2] = checkBox3.Checked;
            ua[questionNumber, 3] = checkBox4.Checked;
            ua[questionNumber, 4] = checkBox5.Checked;
            ua[questionNumber, 5] = checkBox6.Checked;
        }
то же самое,только длинее,так?
0
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
08.02.2017, 11:58
Цитата Сообщение от connection123 Посмотреть сообщение
то же самое,только длинее,так?
Да, длиннее в 6 раз. Ибо обработчиков CheckedChanged нужно шесть, а метод SetArray всего один.
0
2 / 2 / 0
Регистрация: 01.10.2016
Сообщений: 239
08.02.2017, 12:23  [ТС]
Даценд, ну да,этот массив корректно работает, щас буду другой массив заполнять

Добавлено через 7 минут
Даценд,
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
                if (ua[questionNumber, 0] == true)
                {
                    checkBox1.Checked = true;
                }
                if (ua[questionNumber, 1] == true)
                {
                    checkBox2.Checked = true;
                }
                if (ua[questionNumber, 2] == true)
                {
                    checkBox3.Checked = true;
                }
                if (ua[questionNumber, 3] == true)
                {
                    checkBox4.Checked = true;
                }
                if (ua[questionNumber, 4] == true)
                {
                    checkBox5.Checked = true;
                }
                if (ua[questionNumber, 5] == true)
                {
                    checkBox6.Checked = true;
                }
такая конструкция не пойдет?)

Добавлено через 9 минут
При нажатии на кнопку предыдущий вопрос, программа должна вспоминать выбор пользователя,вот я хотел через ифы, запоминает лишь один ответ который был выбран (первый который выбрали), но в чекбоксах может быть 2-3 правильных варианта
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,900
Записей в блоге: 1
08.02.2017, 12:57
connection123, если это продолжение темы с программой тестирования где уже используется коллекция для вопросов и ответов, то ты двигаешься в неправильном направлении. Дополнительный массив в рамках этой задачи тебе не нужен!
0
2 / 2 / 0
Регистрация: 01.10.2016
Сообщений: 239
08.02.2017, 12:58  [ТС]
OwenGlendower, это все продолжение,но преподаватель сказал двинуться в эту сторону,объяснил что ему нужно два массива bool один полностью false другой определен,и после теста сверять два массива для определения кол-ва верных ответов
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,900
Записей в блоге: 1
08.02.2017, 13:02
connection123, если преподаватель сказал так сделать, тогда ок.
0
2 / 2 / 0
Регистрация: 01.10.2016
Сообщений: 239
08.02.2017, 13:26  [ТС]
OwenGlendower, Как мне сравнить два массива?
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,900
Записей в блоге: 1
08.02.2017, 13:35
connection123, используй цикл
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.02.2017, 13:35
Помогаю со студенческими работами здесь

Ошибка в объявлении переменной типа bool — "bool undeclared"
Доброго времени суток. #include <stdio.h> #include <stdlib.h> #include <string.h> void fileop(); void open(); void save(); ...

Биндинг поля типа bool к полю типа string при определенном условии
Использую паттерн MVVM. Во ViewModel есть свойства: public string ModeS{get;set;} public int ModeD{get;set;} Во View есть...

Конвертирование типа bool
bool b = true; if (b) b = false; else b = true; Вопрос в следующем : как можно в bool сделать автозамену с false в true и...

размер типа bool
сколько занимает в памяти bool?

Переменные типа bool
Сколько переменных типа bool здесь определено: bool &l1, &p2, **t3, b4, *n5, w6;


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru