Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
connection123
1 / 1 / 0
Регистрация: 01.10.2016
Сообщений: 239
Завершенные тесты: 1
1

Массив: Реализация системы ответов и вопросов теста...

29.12.2016, 09:03. Просмотров 1248. Ответов 62
Метки нет (Все метки)

Всем привет,нужна помощь запутался в том как лучше реализовать работу с массивами, вообщем.
Есть база данных в ней 2 таблицы Вопросы/Ответы. В таблице вопросы столбцы ID | Текст. В таблице ответы столбцы ID | ID вопроса | текст | правильность ответа (bool).
Нужно сделать массив вопросов,ответов. В массиве ответов должен учитываться номер вопроса (50 вопрос 1,2,3 вариант ответа)
и следовательно нужен массив правильных ответов типа bool, а так же массив ответов те что дал пользователь?
Может я чего то не так думаю, и количество массивов можно уменьшить,и будут ли все массивы двумерными?
Если не сложно распишите текстом план действий.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.12.2016, 09:03
Ответы с готовыми решениями:

Реализация системы частиц
Появилась необходимость создать свою систему частиц на С#. Возник вопрос по...

Реализация экспертной системы
Нужна помощь в реализации экспертной системы. Т.е. необходимо связать базу...

Где в этом коде задается текст теста для вопросов и ответов
Ребят, можете кто-нибудь объяснить мне глупенькой, где в этом коде задается...

Процент правильных ответов по окончанию теста
Здравствуйте! Помогите пожалуйста с программой, все в принципе готово, но...

Загрузка ответов теста из текстового файла
Здравствуйте форумчане нужна помощь.Делаю тестирование и подгружаю вопросы и 4...

62
connection123
1 / 1 / 0
Регистрация: 01.10.2016
Сообщений: 239
Завершенные тесты: 1
29.12.2016, 17:17  [ТС] 41
1231231ghacking, Ну перебирает каждый элемент массива,коллекции,строки, так?
Если это так, то мне нужно при каком то условии (выбран радиобуттон) переходить к следующему элементу массива,коллекции,строки.

Добавлено через 4 минуты
OwenGlendower, Какого автора советуете почитать, консольные не интересуют.
1231231ghacking,
C#
1
2
3
4
5
6
7
foreach(var quest in questions)
             {
              if(radiobutton1.Checked)
              {
                 label1.text = quest
               }
             }
0
OwenGlendower
Супер-модератор
Эксперт .NET
10218 / 8822 / 3775
Регистрация: 17.03.2014
Сообщений: 17,735
Записей в блоге: 1
29.12.2016, 17:19 42
Цитата Сообщение от connection123 Посмотреть сообщение
Какого автора советуете почитать
Любого из этой темы - Литература по C# для начинающих и не только
0
connection123
1 / 1 / 0
Регистрация: 01.10.2016
Сообщений: 239
Завершенные тесты: 1
29.12.2016, 17:20  [ТС] 43
1231231ghacking,
C#
1
2
3
4
5
6
7
foreach(var quest in questions)
             {
              if(radiobutton1.Checked)
              {
                 label1.text = quest
               }
             }
на твоем примере,понял для чего и зачем этот оператор. как мне начать с первого вопроса и закончить двадцатым?
0
1231231ghacking
98 / 102 / 62
Регистрация: 19.11.2015
Сообщений: 380
Завершенные тесты: 3
29.12.2016, 17:24 44
Вы абсолютно не так делаете, как нужно...
Если запустить этот код, который вы скинули:
C#
1
2
3
4
5
6
7
foreach(var quest in questions)
             {
              if(radiobutton1.Checked)
              {
                 label1.text = quest
               }
             }
То будет выполнятся следующие действия:
Если будет отмечен radiobutto1, то в label1 будет перезаписываться каждая итерация из этого цикла..

Добавлено через 2 минуты
Цикл foreach - это такой же цикл, как и все остальные, его можно легко заменить на for таким образом:
C#
1
2
3
4
for(int i=0;i<questions.Count()-1;i++)
{
//Действия
}
Это то же самое что
C#
1
2
3
4
foreach(var item in questions)
{
//Действия
}
0
OwenGlendower
Супер-модератор
Эксперт .NET
10218 / 8822 / 3775
Регистрация: 17.03.2014
Сообщений: 17,735
Записей в блоге: 1
29.12.2016, 17:26 45
1231231ghacking, ТС уже понял как работает foreach и спрашивает о другом - как ему по очереди пройти все вопросы в ответ на действия пользователя.
0
1231231ghacking
98 / 102 / 62
Регистрация: 19.11.2015
Сообщений: 380
Завершенные тесты: 3
29.12.2016, 17:32 46
Ну, тогда я бы сделал по-другому.
Сделал бы глобальную переменную, которая будет служить индексом элемента в коллекции questions, в зависимости от того, на каком вопросе сейчас пользователь, будет изменяться эта переменная, чтобы можно было обратиться в любом момент к коллекции Answers текущего вопроса.От этого бы уже и отталкивался, сделал ли пользователь правильный выбор или нет.
0
connection123
1 / 1 / 0
Регистрация: 01.10.2016
Сообщений: 239
Завершенные тесты: 1
29.12.2016, 17:40  [ТС] 47
1231231ghacking, Вооот, я создаю переменную скажем int questNumber? она должна быть равно сумме вопросов. Вопросы лежат у меня в questions как мне посчитать колво вопросов в базе?
0
1231231ghacking
98 / 102 / 62
Регистрация: 19.11.2015
Сообщений: 380
Завершенные тесты: 3
29.12.2016, 17:44 48
Какой сумме вопросов?

Для того, чтобы узнать кол-во элементов в коллекции questions, то нужно вызвать так:
questions.Count() - это и будет кол-во вопросов
Не забудьте подключить
using System.Linq, чтобы этот метод работал
0
connection123
1 / 1 / 0
Регистрация: 01.10.2016
Сообщений: 239
Завершенные тесты: 1
29.12.2016, 17:44  [ТС] 49
1231231ghacking, Если с массивом то можно было бы сделать label1.text = questions[questNumber] и после каждого ответа questNumber++, то как мне сделать то же самое только с коллекцией?
0
1231231ghacking
98 / 102 / 62
Регистрация: 19.11.2015
Сообщений: 380
Завершенные тесты: 3
29.12.2016, 17:48 50
Коллекция - это тот же массив.К нему тоже можно обращаться по индексу.
Только вы никак не присвоите элемент коллекции к label1, потому что нужно взять из этого элемента свойства, которые в нем есть и которые вам нужны,например,
C#
1
label1.text = questions[questNumber].Text + " " + questions[questNumber].Id.ToString()
0
connection123
1 / 1 / 0
Регистрация: 01.10.2016
Сообщений: 239
Завершенные тесты: 1
29.12.2016, 17:56  [ТС] 51
1231231ghacking, Вот,первый вопрос вышел, теперь надо вывести второй вопрос, я беру и questNumber++; и он сразу
Индекс за пределами диапазона. Индекс должен быть положительным числом, а его размер не должен превышать размер коллекции.
Имя параметра: index

Добавлено через 1 минуту
1231231ghacking, Славу богу,разобрался,сделал,выводится второй вопрос после questnumber++

Добавлено через 1 минуту
1231231ghacking, OwenGlendower, Спасибо вам огромное,честно. тестирование доделаю, сяду за теорию,очень помогли.
0
1231231ghacking
98 / 102 / 62
Регистрация: 19.11.2015
Сообщений: 380
Завершенные тесты: 3
29.12.2016, 17:57 52
Покажи полностью код, как ты вызываешь.
0
connection123
1 / 1 / 0
Регистрация: 01.10.2016
Сообщений: 239
Завершенные тесты: 1
29.12.2016, 18:00  [ТС] 53
1231231ghacking, Я вызывал в цикле,теперь первая запись вызывается в foreach а все последующие за циклом

Добавлено через 24 секунды
1231231ghacking,
C#
1
2
3
4
5
6
7
8
9
10
foreach (var quest in questions)
            {
                    label1.Text = questions[questNumber].Text + " " + questions[questNumber].ID.ToString();
            }
            questNumber++;
            label2.Text = questions[questNumber].Text;
            questNumber++;
            label2.Text = questions[questNumber].Text;
            questNumber++;
            label2.Text = questions[questNumber].Text;
Добавлено через 1 минуту
1231231ghacking, А вообще мне даже и этот foreach не нужен.
0
1231231ghacking
98 / 102 / 62
Регистрация: 19.11.2015
Сообщений: 380
Завершенные тесты: 3
29.12.2016, 18:01 54
foreach тут абсолютно лишний
0
connection123
1 / 1 / 0
Регистрация: 01.10.2016
Сообщений: 239
Завершенные тесты: 1
29.12.2016, 18:02  [ТС] 55
1231231ghacking, Да,я уже это понял и убрал его,спасибо.
0
1231231ghacking
98 / 102 / 62
Регистрация: 19.11.2015
Сообщений: 380
Завершенные тесты: 3
29.12.2016, 18:04 56
Если у вас сейчас вызывается исключение, то только потому что у вас в коллекции 3 вопроса, а вы обращаетесь по индексу к 4ому вопросу.
И этот код абсолютно непонятен:
C#
1
2
3
4
5
6
            questNumber++;
            label2.Text = questions[questNumber].Text;
            questNumber++;
            label2.Text = questions[questNumber].Text;
            questNumber++;
            label2.Text = questions[questNumber].Text;
Зачем вы перезаписываете в один label2 сразу несколько вопросов?
В нем не будет отображено сразу несколько их, а только тот, который вы присваиваете последний раз
0
connection123
1 / 1 / 0
Регистрация: 01.10.2016
Сообщений: 239
Завершенные тесты: 1
29.12.2016, 18:12  [ТС] 57
1231231ghacking, Почему я в классе не могу объявить переменную типа var. Хочу в класс занести переменную questions

Добавлено через 54 секунды
1231231ghacking, это черновой проект, в один лэйбл для проверки перехода от вопросу к вопросу

Добавлено через 3 минуты
1231231ghacking, как мне сделать переменную question сделать глобальной, а то я ее в обработчике буттона вызвать не могу)
0
1231231ghacking
98 / 102 / 62
Регистрация: 19.11.2015
Сообщений: 380
Завершенные тесты: 3
29.12.2016, 18:13 58
C#
1
List<Question> questions = new List<Question>();
0
OwenGlendower
Супер-модератор
Эксперт .NET
10218 / 8822 / 3775
Регистрация: 17.03.2014
Сообщений: 17,735
Записей в блоге: 1
29.12.2016, 18:17 59
Цитата Сообщение от connection123 Посмотреть сообщение
Почему я в классе не могу объявить переменную типа var.
1) var это не тип
2) потому в C# что такие правила - var можно использовать только для локальных переменных
3) используй имя типа вместо var и всё будет хорошо
0
connection123
1 / 1 / 0
Регистрация: 01.10.2016
Сообщений: 239
Завершенные тесты: 1
29.12.2016, 18:21  [ТС] 60
1231231ghacking, Ошибка 1 Несовместимость по доступности: доступность типа свойства "System.Collections.Generic.List<WindowsFormsApplication2.Answer>" ниже доступности свойства "WindowsFormsApplication2.Question.Answers" Ни с того ни с другого
0
29.12.2016, 18:21
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.12.2016, 18:21

Создание теста со счетчиком и 6-ю вариантами ответов
Нужно создать тест на delphi с 6 вариантами ответов ,тест должен состоять из 36...

Расшифровка базы ответов теста формата *.farm
Нужно взломать программу(прилагаю внизу) для считывания формата *.farm...

Расшифровка базы ответов теста формата *.farm
Здравствуйте! Имеется база данных ответов к тестам формата farm, без программы...


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Опции темы

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