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

Считывание вопросов из файла в рандомном порядке

02.09.2014, 22:11. Показов 4310. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, помогите пожалуйста, делаю приложения WinForms, и тут ступор, скажите пожалуйста, как сделать рандом, и считывание из файла, а точнее, у меня имеется 20 вопросов, в текстовом файле, мне надо считать их, только так, чтобы вывелось всего 12, но при каждом новом запуске программы, они должны быть разными, заранее всех благодарю.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.09.2014, 22:11
Ответы с готовыми решениями:

Считывание вопросов из текстового файла в случайном порядке
хочу сделать чтобы первый вопрос считывался в random порядке из vopros1.txt,а второй вопрос считывался из vopros2.txt тоже в random...

Вывести все треугольники в рандомном порядке, рандомном месте и с рандомной ориентацией (Glut в С++)
#include <windows.h> #include <glut.h> //Подключение библиотеки glut.h #include <gl/GL.h> void MyDisplay() { int i = 0; ...

Сделать считывание вопросов из файла
Помогите в программе сделать чтение вопросов к тесту из файла.. на данный момент она только сохраняет результат в файл а мне нужно сделать...

12
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
02.09.2014, 22:59
zZzTipo4ekzZz, сформулируйте задачу так,чтобы её хоть кто-то смог понять и желательно привести попытки решения задачи.
Кстати,ничего страшного не случится,если перед тем как пойти на форум за готовым решением попытаться решить задачу самостоятельно.Уверен,что ваша программа не уникальна и подобное уже встречалось на форуме,не говоря уже об интернете.
На всякий случай оставлю полезные ссылки:

Литература для новичков
FAQ для студентов или школьников
Пространство имен - System.IO (Работа с файлами, директориями, дисками, памятью)
1
2 / 2 / 1
Регистрация: 05.05.2012
Сообщений: 159
03.09.2014, 19:02  [ТС]
Хорошо.
Вот моя программа (рисунок 1), когда я нажимаю на математику, программа переходит к окну математика (рисунок 2), мне надо сделать так, чтобы там выводило по одному вопросу, и по 3 варианта ответа (а,б,в), ответил на вопрос, жмёшь далее, следующий вопрос, после выполнения 12 вопросов, в конце должен произойти подсчёт баллов. Но надо сделать так, чтобы был рандом вопросов, в файле их будет 20. Было кучу попыток сделать хотя бы просто считывания из файла, но ничего не выходило.
[ATTACH]Рисунок 1[/ATTACH]
[ATTACH]Рисунок 2[/ATTACH]
C#
1
StreamReader streamReader = new StreamReader("vbbook.txt")
0
2 / 2 / 1
Регистрация: 05.05.2012
Сообщений: 159
03.09.2014, 19:33  [ТС]
Извините, там не вышло вложить картинки...
Рисунок 1
Рисунок 2
0
Эксперт .NET
 Аватар для Wolfdp
3790 / 1767 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3
04.09.2014, 12:41
Цитата Сообщение от zZzTipo4ekzZz Посмотреть сообщение
Было кучу попыток сделать хотя бы просто считывания из файла, но ничего не выходило.
Вбейте в файл два гвоздя вопроса в таком виде
Code
1
2
0$Скільки буде 2+2$чотири#два#(log(e)*4)^6
2$Шо важче -- кілограм цв'яхів, чи кілограм паперу$перше#друге#2 кілограми печива
ну и считывайте...

C#
1
2
3
4
5
public class QuestionElement{
public int TrueAnswer{get;set;}
public string Question {get;set;}
public IEnumerable<string> Answer{get;set;}
}
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
var questions = List<QuestionElement>();
using (StreamReader sr = new StreamReader("TestFile.txt"))
            {
                string line;
                while ((line = sr.ReadLine()) != null)
                {
var l = line.Split('$');
questions.Add( new QuestionElement{
TrueAnswer = int.Parse(l[0]),
Question = l[1],
Answer = l[2].Split('#')
});
                }
            }
А сортировка и рандом... млин, лень думать =) Как вариант брать рандомный елемент из всех считаных и удалять из общего списка, после ответа.
0
2 / 2 / 1
Регистрация: 05.05.2012
Сообщений: 159
05.09.2014, 14:02  [ТС]
Wolfdp,смотри, вот мой код, куда пихать это всё ?
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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Windows;
using System.IO;
 
namespace Testing
{
    public partial class Математика : Form
    {
        public Математика()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            Hide();
            Form1 Математика = new Form1();
            Математика.ShowDialog();
        }
 
        private void Математика_Load(object sender, EventArgs e)
        {
 
        }
    }
}
0
05.09.2014, 15:10

Не по теме:

Цитата Сообщение от zZzTipo4ekzZz Посмотреть сообщение
Wolfdp,смотри, вот мой код, куда пихать это всё ?
есть тут некий форумчанин с подписью
я тут кнопку на форму кинул, какой мне в ней код написать, чтобы программу ломануть?

0
2 / 2 / 1
Регистрация: 05.05.2012
Сообщений: 159
05.09.2014, 15:12  [ТС]
Ахаха..
А по теме ?)
0
Эксперт .NET
 Аватар для Wolfdp
3790 / 1767 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3
05.09.2014, 15:27
Цитата Сообщение от zZzTipo4ekzZz Посмотреть сообщение
А по теме
В конструкторе или Load формы.
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
05.09.2014, 16:19
Цитата Сообщение от zZzTipo4ekzZz Посмотреть сообщение
имеется 20 вопросов, в текстовом файле, мне надо считать их, только так, чтобы вывелось всего 12
При запуске программы считываете все вопросы (и желательно не текстовый файл использовать, а xml, к примеру), потом через Random генерируете 12 чисел с проверкой на неповторяемые значения, это будут индексы вопросов в массиве всех считанных 20 вопросов. И все.
0
2 / 2 / 1
Регистрация: 05.05.2012
Сообщений: 159
05.09.2014, 21:17  [ТС]
insite2012, а можно пример пожалуйста ? сделал я считывание, из xml файла, таким вот образом.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?xml version="1.0" encoding="utf-8" ?>
<head>
  <Math id="0">
    <Номер>Вопрос №1</Номер>
    <Вопрос>Оберіть вірну відповідь 67+46=?</Вопрос>
    <Ответ>а)103. б)113 (+). в)123</Ответ>
  </Math>
 
  <Math id="1">
    <Номер>Вопрос №2</Номер>
    <Вопрос>Якщо у Марійчки було сім яблук, у Петрика одинадцять, а у Мишка невідомо, але на чотири більше ніж у Петрика.  Скільки яблук у Петрика та у Мишка разом?</Вопрос>
    <Ответ>а)26 (+). б)27. в)16</Ответ>
  </Math>
...........
</head>
Но у меня они считываются не сразу все, а по выбору, то есть я сделал "listBox", там ввёл числа от 1 до 2, и сделал textBox, когда нажимаешь любое число в listBox то в textBox выводит вопрос.
0
2 / 2 / 1
Регистрация: 05.05.2012
Сообщений: 159
06.09.2014, 00:04  [ТС]
Чуть переделал xml.
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?xml version="1.0" encoding="utf-8" ?>
<head>
  <Math id="0">
    <Номер>Вопрос №1</Номер>
    <Вопрос>Оберіть вірну відповідь 67+46=?</Вопрос>
    <Ответ-А->А)103</Ответ-А->
    <Ответ-Б->Б)113 (+)</Ответ-Б->
    <Ответ-В->В)123</Ответ-В->
  </Math>
 
  <Math id="1">
    <Номер>Вопрос №2</Номер>
    <Вопрос>Якщо у Марійчки було сім яблук, у Петрика одинадцять, а у Мишка невідомо, але на чотири більше ніж у Петрика.  Скільки яблук у Петрика та у Мишка разом?</Вопрос>
    <Ответ-А->А)26 (+)</Ответ-А->
    <Ответ-Б->Б)27</Ответ-Б->
    <Ответ-В->В)16</Ответ-В->
  </Math>
...........
</head>
И вот в коде самом:
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
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            string text = "";
            XmlTextReader reader = new XmlTextReader(@"C:\Documents\Visual Studio 2013\Projects\Testing\Testing\XMLFile1.xml");
            while (true)
            {
                reader.ReadToFollowing("Math");
                reader.MoveToFirstAttribute();
                if (Convert.ToInt32(reader.Value) == listBox1.SelectedIndex)
                {
                    reader.ReadToFollowing("Номер");
                    text = text + "" + reader.ReadElementContentAsString() + "\r\n";
                    reader.ReadToFollowing("Вопрос");
                    text = text + "" + reader.ReadElementContentAsString() + "\r\n";
                    reader.ReadToFollowing("Ответ-А-");
                    text = text + "" + reader.ReadElementContentAsString() + "\r\n";
                    reader.ReadToFollowing("Ответ-Б-");
                    text = text + "" + reader.ReadElementContentAsString() + "\r\n";
                    reader.ReadToFollowing("Ответ-В-");
                    text = text + "" + reader.ReadElementContentAsString() + "\r\n";
                    break;
                }
            }
            textBox1.Text = text;
        }
Но мне же ещё надо чтобы были варианты ответов, А-Б и В.
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
        private void checkBox1_CheckedChanged(object sender, EventArgs e)
        {
            string text = "";
            XmlTextReader reader = new XmlTextReader(@"C:\Documents\Visual Studio 2013\Projects\Testing\Testing\XMLFile1.xml");
            while (true)
            {
                reader.ReadToFollowing("Math");
                reader.MoveToFirstAttribute();
                if (Convert.ToInt32(reader.Value) == listBox1.SelectedIndex)
                {
                    reader.ReadToFollowing("Ответ-А-");
                    text = text + "Ответ-" + reader.ReadElementContentAsString() + "\r\n";
                    break;
                }
            }
            textBox1.Text = text;
        }
 
        private void checkBox2_CheckedChanged(object sender, EventArgs e)
        {
            string text = "";
            XmlTextReader reader = new XmlTextReader(@"C:\Documents\Visual Studio 2013\Projects\Testing\Testing\XMLFile1.xml");
            while (true)
            {
                reader.ReadToFollowing("Math");
                reader.MoveToFirstAttribute();
                if (Convert.ToInt32(reader.Value) == listBox1.SelectedIndex)
                {
                    reader.ReadToFollowing("Ответ-Б-");
                    text = text + "Ответ-" + reader.ReadElementContentAsString() + "\r\n";
                    break;
                }
            }
            textBox1.Text = text;
        }
 
        private void checkBox3_CheckedChanged(object sender, EventArgs e)
        {
            string text = "";
            XmlTextReader reader = new XmlTextReader(@"C:\Documents\Visual Studio 2013\Projects\Testing\Testing\XMLFile1.xml");
            while (true)
            {
                reader.ReadToFollowing("Math");
                reader.MoveToFirstAttribute();
                if (Convert.ToInt32(reader.Value) == listBox1.SelectedIndex)
                {
                    reader.ReadToFollowing("Ответ-В-");
                    text = text + "Ответ-" + reader.ReadElementContentAsString() + "\r\n";
                    break;
                }
            }
            textBox1.Text = text;
        }
0
2 / 2 / 1
Регистрация: 05.05.2012
Сообщений: 159
09.09.2014, 23:22  [ТС]
Тему можно закрывать!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.09.2014, 23:22
Помогаю со студенческими работами здесь

Как в программе тестирования реализовать считывание вопросов с файла
сделал тестовое приложение на C# ну вот пример из 2 вопросов using System; using System.Collections.Generic; using System.Linq; ...

Расположить Панели в рандомном порядке
Доброго времени суток! Подскажите пожалуйста, какой наиболее простой способ возможен для рандомного расположения панелей на форме. При этом...

Компьютер в рандомном порядке отключается
такая трабла, комп в рандомном порядке отключается... включить можно лишь если выйнять шнур из сети(на БП какаято автоматика...

Вставить вектор в матрицу в рандомном порядке
Есть вектор размерностью предположим 1х200, как его вставить рандомно в каждую строчку матрицы размерностью 2048х2048?

Вывод n числа картинок в рандомном порядке
Не кидайтесь камнями, а подскажите, как вывести, например, 10 картинок каждый раз (при новом посещении-обновлении сайта) в разном порядке....


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru