Вывод из массива случайного элемента (программа тестирования) - C (СИ)

Узнай цену своей работы

Формулировка задачи:

#include "stdafx.h"
#include<iostream>
using namespace std;
 
//--------------масив структур---------------
struct answer
{
char* a;
char* b;
char* c;
char* d;
char* x;
char* key;
};
//-------------------------------------------
 
void main() 
{
//-----------------масив с вопросами-----------------
char** v=new char*[15];
for (int i=0; i<6; i++)
{v[i]=new char[255];}
 
v[0]="Вопрос0";
 
v[1]="Вопрос1";
 
v[2]="Вопрос2";
 
v[3]="Вопрос3";
 
v[4]="Вопрос4";
 
v[5]="Вопрос5";
//--------------------------------------------------
//-----Масив структур (варианты ответов)------------
answer ans[6];
 
ans[0].a="вариант ответа номер 0";
ans[0].b="вариант ответа номер 1";
ans[0].c="вариант ответа номер 2";
ans[0].d="вариант ответа номер 3";
ans[0].x="правильный ответ";
ans[0].key="ключ";
 
ans[1].a="вариант ответа номер 0";
ans[1].b="вариант ответа номер 1";
ans[1].c="вариант ответа номер 2";
ans[1].d="вариант ответа номер 3";
ans[1].x="правильный ответ";
ans[1].key="ключ";
 
ans[2].a="вариант ответа номер 0";
ans[2].b="вариант ответа номер 1";
ans[2].c="вариант ответа номер 2";
ans[2].d="вариант ответа номер 3";
ans[2].x="правильный ответ";
ans[2].key="ключ";
 
ans[3].a="вариант ответа номер 0";
ans[3].b="вариант ответа номер 1";
ans[3].c="вариант ответа номер 2";
ans[3].d="вариант ответа номер 3";
ans[3].x="правильный ответ";
ans[3].key="ключ";
 
ans[4].a="вариант ответа номер 0";
ans[4].b="вариант ответа номер 1";
ans[4].c="вариант ответа номер 2";
ans[4].d="вариант ответа номер 3";
ans[4].x="правильный ответ";
ans[4].key="ключ";
 
ans[5].a="вариант ответа номер 0";
ans[5].b="вариант ответа номер 1";
ans[5].c="вариант ответа номер 2";
ans[5].d="вариант ответа номер 3";
ans[5].x="правильный ответ";
ans[5].key="ключ";
//--------------------------------------------------
 
char z;
int l;
 
for (l=0; l<5; l++)
{
//----------ГЕНЕРИРУЕМ СЛУЧАЙНОЕ ЧИСЛО--------------
 
srand (unsigned(time(NULL)));
int h;
h=rand()%5;
//--------------------------------------------------
 
cout<<v[h]<<"\n"; //вывод вопроса
cout<<ans[h].a<<"\n";//вывод 1 варианта ответа
cout<<ans[h].b<<"\n";//вывод 2 варианта ответа
cout<<ans[h].c<<"\n";//вывод 3 варианта ответа
cout<<ans[h].d<<"\n";//вывод 4 варианта ответа
cin>>z;
cout<<"\n\n";
}
}
ВОПРОС: Как сделать так что генерировался случайный вопрос из масива (соответственно к нему соответствующие варианты вопроса.) (ограничение: в цикле он не разу не повторялся.) То есть например мы заходим в программу, она выдает нам например 5 вопрос. мы вводим желаемый вариант ответа например, мы вводим

b

Жмем ввод. Опять выводится например 3 вопрос. мы вводим желаемый вариант ответа например, мы вводим

с

Жмем ввод. и так далее, пока не закончится цикл в данном случае 5 раз. В данный момент все прекрасно работает, но генерируемые вопросы повторяются. Помогите пожалуйста в решении проблемы. P.S. создавал похожую тему с генерацией случайного числа, но в данном примере применить не удалось.

Решение задачи: «Вывод из массива случайного элемента (программа тестирования)»

textual
Листинг программы
#include <time.h>
#include <iostream>
int main()
{
    setlocale(LC_ALL, "Russian");
    srand (unsigned(time(NULL)));
    int h, i(0); //задаем 10 вопросов из 15
    int mas[15] = {0};
    for(;;)
    {
        h=rand()%15;
        if(mas[h])
        {
            std::cout<<h<<"\tуже был!\n";
            continue;
        }
        std::cout<<"Новый\t"<<h<<'\n';
        ++i;
        mas[h] = 1;
        if(i == 10)
            break;
    }
    system("pause");
    return 0;
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.3 из 5
Похожие ответы