Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 29.09.2015, 20:34
Новичок на форуме
Отправить личное сообщение для Dr.Maksss Посмотреть профиль Найти все сообщения от Dr.Maksss
 
Регистрация: 29.09.2015
Сообщений: 3

При запуске теста вопросы в произвольеном порядке
Доброго времени суток!
Только начал изучать JS и столкнулся с проблемой.
Пишу тест для студентов.....на зачете будут искать на вопросы правильный ответ. Один из четырех.
В алгоритме не знаю, как сделать так, чтобы при прохождении одного теста последующий тест был из других вопросов, т.е. вопросы брались в произвольном порядке.
Вопросов 50, а для тестирования хватит 15, но нужно, чтобы каждый раз они запускались в произвольном порядке.
Постарался объяснить.
Может, кто знает как это организовать?
мой скрипт
<script type="text/javascript">

var countQuest = 0;
var plus = 0;
var test_start = 0;

function check(num){

if(num == 4){

document.getElementById('area').style.display='blo ck'; //
document.getElementById('start').style.display='no ne';
document.getElementById('end').style.display='inli ne';

if(test_start == 0){

//Массив вопросов
var questions = ["1. Яку мінімальну кількість зон повинен мати випробовувальний майданчик для сертифікації будівельних і дорожніх машин?\n",
"2. Що перевіряють у першій зоні на випробовувальному майданчику?\n",
"3. Що перевіряють у другій зоні на випробовувальному майданчику?\n",
"4. Що перевіряють у третій зоні на випробовувальному майданчику?\n",
"5. Які існують способи ідентифікації зразків?\n",
"6. Яким приладом проводять контрольні вимірювання лінійних розмірів?\n",
"7. Яку назву мають пристрої захисту від перекидання та падаючих предметів?\n",
"8. Система конструктивних елементів, змонтованих на машині для забезпечення захисту оператора від падаючих предметів називається\n",
"9. Система конструктивних елементів, змонтованих на машині для збереження життєвого простору в кабіні оператора при перекиданні машини називається\n",
"10. Захисні властивості систем ROPS та FOPS випробовуються\n",
"11. Сукупність конструктивних і експлуатаційних особливостей спецтехніки, спрямованих на попередження або зниження важкості дорожньо-транспортної пригоди, пошкодження спеціального засобу внаслідок перекидання або падіння на нього предметів називається\n",
"12. Пасивна безпека досягається використанням:\n",
"13. Що не перевіряється при проходженні випробувань?\n",
"14. Яку кількість раз необхідно проводити випробування машини на режимі вільного прискорення?\n",
"15. Після перевірки на режимі вільного прискорення, димність на режимі максимальної частоти обертання перевіряють"];

//Массивы вариантов ответов
var number1 = ["2","Оглядовість та освітлення","Оглядовість та освітлення","Оглядовість та освітлення","Візуальний","Лі нійкою","COPS та ROPS","COPS","COPS","При створенні кабіни на заводі\n",
"Активна безпека","Тільки пасків безпеки","Мікроклімат у кабіні","Не менше 6"];
var number2 = ["3","Кути з’їзду та заїзду","Кути з’їзду та заїзду","Кути з’їзду та заїзду","Візуальний і по документації","Курвиметр","RO PS та FOPS","FOPS","FOPS","Під час проведення сертифікації\n",
"Пасивна безпека","Поперечних брусів в дверях ТЗ","Зусилля на органах управління","7"];
var number3 = ["4","Гальмівну систему та поперечну стійкість машини","Гальмівну систему та поперечну стійкість машини","Гальмівну систему та поперечну стійкість машини","По документації","Рулеткою","FOPS та COPS","ROPS","ROPS","Одразу після установки на трактор\n",
"Безпека","Дуг безпеки","Товщина скла кабіни","Не більше 10"];
var number4 = ["5","Візуальну відповідність машини нормативним документам","Візуальну відповідність машини нормативним документам","Візуальну відповідність машини нормативним документам","Не існує таких","Далекоміром","ROВS та FOBS","FOBS","FOBS","Вони стандартні і не перевіряються\n",
"ROPS та FOPS","Всього переліченого","Питомий тиск гусениці на грунт","5"];


document.getElementById('question').innerHTML=ques tions[countQuest];

document.getElementById('option1').innerHTML=numbe r1[countQuest];
document.getElementById('option2').innerHTML=numbe r2[countQuest];
document.getElementById('option3').innerHTML=numbe r3[countQuest];
document.getElementById('option4').innerHTML=numbe r4[countQuest];


//Массив правильных ответов
var answer = [1,3,2,0,1,2,1,1,2,0,1,3,2,0,0];

test_start = 1;
}
}
else{
//Массив вопросов
var questions = ["1. Яку мінімальну кількість зон повинен мати випробовувальний майданчик для сертифікації будівельних і дорожніх машин?\n",
"2. Що перевіряють у першій зоні на випробовувальному майданчику?\n",
"3. Що перевіряють у другій зоні на випробовувальному майданчику?\n",
"4. Що перевіряють у третій зоні на випробовувальному майданчику?\n",
"5. Які існують способи ідентифікації зразків?\n",
"6. Яким приладом проводять контрольні вимірювання лінійних розмірів?\n",
"7. Яку назву мають пристрої захисту від перекидання та падаючих предметів?\n",
"8. Система конструктивних елементів, змонтованих на машині для забезпечення захисту оператора від падаючих предметів називається\n",
"9. Система конструктивних елементів, змонтованих на машині для збереження життєвого простору в кабіні оператора при перекиданні машини називається\n",
"10. Захисні властивості систем ROPS та FOPS випробовуються\n",
"11. Сукупність конструктивних і експлуатаційних особливостей спецтехніки, спрямованих на попередження або зниження важкості дорожньо-транспортної пригоди, пошкодження спеціального засобу внаслідок перекидання або падіння на нього предметів називається\n",
"12. Пасивна безпека досягається використанням:\n",
"13. Що не перевіряється при проходженні випробувань?\n",
"14. Яку кількість раз необхідно проводити випробування машини на режимі вільного прискорення?\n",
"15. Після перевірки на режимі вільного прискорення, димність на режимі максимальної частоти обертання перевіряють"];

//Массивы вариантов ответов
var number1 = ["2","Оглядовість та освітлення","Оглядовість та освітлення","Оглядовість та освітлення","Візуальний","Лі нійкою","COPS та ROPS","COPS","COPS","При створенні кабіни на заводі\n",
"Активна безпека","Тільки пасків безпеки","Мікроклімат у кабіні","Не менше 6","Не пізніше 60 секунд"];
var number2 = ["3","Кути з’їзду та заїзду","Кути з’їзду та заїзду","Кути з’їзду та заїзду","Візуальний і по документації","Курвиметр","RO PS та FOPS","FOPS","FOPS","Під час проведення сертифікації\n",
"Пасивна безпека","Поперечних брусів в дверях ТЗ","Зусилля на органах управління","7","Через 10 секунд"];
var number3 = ["4","Гальмівну систему та поперечну стійкість машини","Гальмівну систему та поперечну стійкість машини","Гальмівну систему та поперечну стійкість машини","По документації","Рулеткою","FOPS та COPS","ROPS","ROPS","Одразу після установки на трактор\n",
"Безпека","Дуг безпеки","Товщина скла кабіни","Не більше 10","Не раніше 2 хвилин"];
var number4 = ["5","Візуальну відповідність машини нормативним документам","Візуальну відповідність машини нормативним документам","Візуальну відповідність машини нормативним документам","Не існує таких","Далекоміром","ROВS та FOBS","FOBS","FOBS","Вони стандартні і не перевіряються\n",
"ROPS та FOPS","Всього переліченого","Питомий тиск гусениці на грунт","5","Через 30 хвилин"];


//Массив правильных ответов
var answer = [1,3,2,0,1,2,1,1,2,0,1,3,2,0,0];

if(num == answer[countQuest]) plus++;

if(questions.length - 1> countQuest){

countQuest++;

document.getElementById('question').innerHTML=ques tions[countQuest];

document.getElementById('option1').innerHTML=numbe r1[countQuest];
document.getElementById('option2').innerHTML=numbe r2[countQuest];
document.getElementById('option3').innerHTML=numbe r3[countQuest];
document.getElementById('option4').innerHTML=numbe r4[countQuest];


}
else{

document.getElementById('area').style.display='non e';
alert('Ви маєте ' + plus + ' вірних відповіді(ей)!');
}
}
}

</script>

Заранее спасибо всем откликнувшимся!
Ответить с цитированием
  #2 (permalink)  
Старый 29.09.2015, 20:55
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

Сообщение от Dr.Maksss
Вопросов 50, а для тестирования хватит 15, но нужно, чтобы каждый раз они запускались в произвольном порядке.
<script language="JavaScript" type="text/javascript">
function random(min,max,l)
{var arr = [],m = [],n = 0;
  if (max - min < l-1) return;
  for (var i=0; i<=(max-min); i++)m[i] = i + min;
  for (var i=0; i<l; i++) {n = Math.floor(Math.random()*(m.length)); arr[i]=m.splice(n,1)[0];};
  return arr
}
for (var i=0; i<5; i++)  {
document.write(JSON.stringify(random(1,50,15))+"<br>")

}
</script>
Ответить с цитированием
  #3 (permalink)  
Старый 30.09.2015, 08:21
Аватар для ksa
ksa ksa на форуме
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,118

Dr.Maksss, хранить всю информацию в разных массивах плохая практика...
Ответить с цитированием
  #4 (permalink)  
Старый 30.09.2015, 08:30
Аватар для join
Профессор
Отправить личное сообщение для join Посмотреть профиль Найти все сообщения от join
 
Регистрация: 05.03.2012
Сообщений: 477

у Рони, иногда вопросы(числа) повторяются.
Ответить с цитированием
  #5 (permalink)  
Старый 30.09.2015, 08:31
Аватар для join
Профессор
Отправить личное сообщение для join Посмотреть профиль Найти все сообщения от join
 
Регистрация: 05.03.2012
Сообщений: 477

ksa,
Почему? Есть наглядный пример что это плохо?
Ответить с цитированием
  #6 (permalink)  
Старый 30.09.2015, 08:56
Аватар для ksa
ksa ksa на форуме
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,118

Сообщение от join
Почему?
Это разные элементы... Они ни как не связаны... Т.о. никакой манипуляции с ними не сделать.
Даже редактирование будет затруднено...

Вот более приемлемое хранение

var questions=[
	{
		text: 'Текст вопроса',
		answers: [
			{
				text: 'Текст ответа',
				correct: true
			}
		]
	}
];
Ответить с цитированием
  #7 (permalink)  
Старый 30.09.2015, 09:06
Аватар для join
Профессор
Отправить личное сообщение для join Посмотреть профиль Найти все сообщения от join
 
Регистрация: 05.03.2012
Сообщений: 477

ksa,
Ок. Наглядно. Хранить вопрос, ответ, корректность ответа и тд, всё в одном "объекте-вопросе". Массив состоит их этих объектов.
Ответить с цитированием
  #8 (permalink)  
Старый 30.09.2015, 09:49
Аватар для ksa
ksa ksa на форуме
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,118

Сообщение от join
у Рони, иногда вопросы(числа) повторяются.
Вот мои 5коп случайных выборок из массива...

var a=[0,1,2,3,4,5,6,7,8,9];
alert(portion(a,5));
function portion(Arr,N) {
	var a=[];
	var prt=[];
	if (N>Arr.length) return [];
	for (var i=0; i<Arr.length; i++) a[i]=Arr[i];
	for (var i=0; i<N+1; i++) {
		var itm=Math.floor(Math.random()*a.length);
		prt[i]=a[itm];
		a.splice(itm,1);
	};
	return prt;
};
Ответить с цитированием
  #9 (permalink)  
Старый 30.09.2015, 15:36
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

Сообщение от join
у Рони, иногда вопросы(числа) повторяются.
в 15 наугад ? не должно
если в разных 15 это нормально, а как иначе?
Ответить с цитированием
  #10 (permalink)  
Старый 30.09.2015, 15:37
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

ksa,
по моему твой и мой код одинаковы
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как заставить функцию при запуске увидеть ГЛОБАЛЬНУЮ переменную? возжаждавший Элементы интерфейса 8 23.02.2017 01:27
Подключение скриптов при запуске модального окна PickUp Элементы интерфейса 0 22.09.2014 14:49
Ошибка “define is not defined” при запуске Istanbul TorchTT Общие вопросы Javascript 0 26.06.2014 15:38
При повторнм запуске функции - считает не верно Iktash Элементы интерфейса 1 21.11.2012 19:00
вопросы при изучений функций zloctb Общие вопросы Javascript 11 27.01.2012 20:58