Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
Nattali
9 / 9 / 2
Регистрация: 11.12.2012
Сообщений: 55
#1

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

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

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

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

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

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

Определить, является ли введенная тестовая строка записью отрицательного целого числа
Определить, является ли введенная тестовая строка записью отрицательного целого...

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

4
ninja2
969 / 188 / 32
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
25.09.2013, 00:27 #2
Nattali, допустим ты случайно сгенерировала число от 1 до 50 например 10, так выведи просто 10 элемент массива и все.
0
Nattali
9 / 9 / 2
Регистрация: 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Эксперт С++
10029 / 5952 / 1486
Регистрация: 25.07.2009
Сообщений: 11,251
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: ...


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

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

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