С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Nattali
9 / 9 / 0
Регистрация: 11.12.2012
Сообщений: 55
#1

Опять тестовая оболочка - рандом - C++

25.09.2013, 00:00. Просмотров 495. Ответов 4
Метки нет (Все метки)

Написала тест, спасибо Культину, но преподавателя не устраивает. Нужно считывать вопросы с файла с помощью рандома. В тесте 50 вопросов, выбираем их количество а потом генерируем номер каждого вопроса и считываем его. Подскажите как в программе задать что именно ЭТОТ вопрос надо найти и считать...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.09.2013, 00:00
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Опять тестовая оболочка - рандом (C++):

Оболочка потока. Опять неоднозначность - C++
//=========================================================================================================================================...

Тестовая задача - C++
Здраствуйте всем прозьба к вам с тестом вот код если сможите сделать или подправте мой код что дописать чтоб работало как надо...

Тестовая задача - C++
Помогите решить тестовую задачу на С++ Итак, задача. -------------начало задачи-------------------- На входе - текстовый файл...

Графическая оболочка - C++
А чтобы писать программы с графической оболочкой на С++ скоко надо учиться? и как это сложно?

Графическая оболочка на С++ - C++
Привет всем, учил С++ , но так просто для проведения досуга , теперь решил писать программы, столкнулся с вопросом, хочу писать программы,...

графическая оболочка - C++
Возник вопрос с таким заданием: 1)Нужно создать абстрактный класс "геометрические фигуры" сделать 3 дочерних класса, треугольник,...

4
ninja2
231 / 187 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
25.09.2013, 00:27 #2
Nattali, допустим ты случайно сгенерировала число от 1 до 50 например 10, так выведи просто 10 элемент массива и все.
0
Nattali
9 / 9 / 0
Регистрация: 11.12.2012
Сообщений: 55
27.09.2013, 18:36  [ТС] #3
Спасибо, я попыталась изменить код что у меня был, но помучившись решила что проще писать новый. Вот что у меня получилось( я пока не генерирую, а задаю номер ответа через Edit). но по неизвестным мне причинам оно то выводит, то не выводит вопрос... я точно что-то сделала не так(

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
{
int top;
int k=StrToInt(Edit1->Text);
TStringList *list = new TStringList;
AnsiString str;
list->LoadFromFile("tex2.txt");
 
top=Panel1->Top+Panel1->Height+10;
  for(int i = 0; i < list->Count; i++) //главный цикл ищем номер заданного вопроса
  {
  if (list->Strings[i]==k) //номер нашли
      {
      i++;
      Panel1->Caption=(list->Strings[i]); //вывели вопрос
     for(int j=0; j<4; j++)      // считываем варианты ответов
     {
       i++;
       RadioButton[j]->Top=top;
       str = list->Strings[i];
       RadioButton[j]->Caption=(str);
       RadioButton[j]->Visible=true;
       top+=20;
     }
     }
     }
 
delete list;
}
1
Dragon21
0 / 0 / 0
Регистрация: 14.06.2014
Сообщений: 7
14.06.2014, 12:38 #4
Я новичок в c++ конечно, но нельзя ли сделать глобальную переменную, а по кнопке перехода к следующему вопросу будет не, предположим s++(глобальная переменная, прибавляется при нажатии клавиши. Способ через массивы), а генерироваться случайное число, а s его присвоит. Только надо учитывать, чтобы вопросы не повторялись, то есть завести отдельный массив, в который будут записываться номера вопросов, которые генерируются, в идеале массив должен быть глобальным и ещё нужна будет переменная которая заменит s, но будет уже только для этого массива. То есть при нажатии на кнопку "назад" будет генерироваться не случайное число, а будет браться из массива и s будет присваивать его, так же с условием клавиши вперёд, но тут нужно будет в идеале сравнивать значения с каким-нибудь числом, который ты забьёшь в массив в самом начале. К примеру число "-1", которое ну никак не может быть ни номером вопроса, ни индексом(если только сама такой не сделаешь). То есть заполняем массив левым числом, а при записи(первое нажатие кнопки вперёд) заполняем его нормальными номерами вопросов. Таким образом, при нажатии клавиши вперёд, вы сможете проверить записан ли следующий элемент массива, или там левое число, которое нужно заменить.
Простите, что так запутанно немного, но это реально рабочее. Правда в коде я не шибко)
0
easybudda
Модератор
Эксперт CЭксперт С++
9698 / 5648 / 964
Регистрация: 25.07.2009
Сообщений: 10,864
14.06.2014, 13:20 #5
Nattali, видимо, это продолжение какой-то вашей прежней темы? Не очень понятно, что там у Вас происходить должно... Вот выводилка строк из файла в произвольном порядке
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
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <algorithm>
#include <iterator>
#include <cstdlib>
#include <ctime>
 
int main(int argc, char ** argv) {
    if ( argc < 2 ) {
        std::cerr << "Usage: " << *argv << " <input_file>" << std::endl;
        return 1;
    }
    
    std::ifstream ifs(argv[1]);
    if ( ! ifs.is_open() ) {
        std::cerr << "Can't open input file!" << std::endl;
        return 1;
    }
    
    std::string str;
    std::vector<std::string> vec;
    
    while ( std::getline(ifs, str) )
        vec.push_back(str);
        
    ifs.close();
    
    srand(time(NULL));
    
    std::random_shuffle(vec.begin(), vec.end());
    std::copy(vec.begin(), vec.end(), std::ostream_iterator<std::string>(std::cout, "\n"));
    
    return 0;
}
пример вывода
Код
[andrew@easybook ~]$ cd cpp/strings/
[andrew@easybook strings]$ g++ -o random_strings_order random_strings_order.cpp 
[andrew@easybook strings]$ ./random_strings_order random_strings_order.cpp 
	return 0;
	std::random_shuffle(vec.begin(), vec.end());
	srand(time(NULL));
	
		std::cerr << "Usage: " << *argv << " <input_file>" << std::endl;
	
	std::copy(vec.begin(), vec.end(), std::ostream_iterator<std::string>(std::cout, "\n"));
	std::vector<std::string> vec;
	if ( ! ifs.is_open() ) {
	std::ifstream ifs(argv[1]);
	
#include <cstdlib>
		return 1;
#include <iterator>

#include <iostream>
#include <string>
int main(int argc, char ** argv) {
	while ( std::getline(ifs, str) )
#include <algorithm>
}
#include <vector>
	if ( argc < 2 ) {
	
	
	std::string str;
	}
		
		return 1;
	ifs.close();
	
		vec.push_back(str);
#include <ctime>
		std::cerr << "Can't open input file!" << std::endl;
#include <fstream>
	}
[andrew@easybook strings]$
1
14.06.2014, 13:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.06.2014, 13:20
Привет! Вот еще темы с ответами:

Графическая оболочка - C++
Здравствуйте) у меня возникла проблемка, у меня есть скомпелированная игра &quot;Змейка&quot;, но проблема в том, что еще нужно сделать графическую...

Оболочка программы - C++
Всем доброго времени суток. Мне по семестровой надо написать небольшую программу с оболочкой. Под оболочкой подразумевается оконный...

Файловая оболочка - C++
Уважаемые товарищи,прошу помочь мне реализовать такой проект на языке C: Файловая оболочка. * Навигация по дереву...

Оболочка для программы - C++
Вот пишу программу на с++ и интересует, как создать графическую оболочку для программы? Надо сделать окошко для ввода текста двух...


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

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

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