Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 07.06.2017
Сообщений: 8
1

Программа, которая выводит текст в случайном порядке, а затем соответстующие ответы в таком же порядке

07.06.2017, 14:47. Показов 1065. Ответов 3

Author24 — интернет-сервис помощи студентам
Написана часть программы, которая выводит 15 вопросов в случайном порядке, и при этом ни один вопрос не повторяется. Проблема : как сделать так, чтобы ответы на эти вопросы выводились соответственно в таком же порядке, но уже после всех вопросов, следом за ними?

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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#include "stdafx.h"
#include<iostream>
#include <time.h>
 
using namespace std;
 
void main()
{
    setlocale(LC_ALL, "Russian");
    char** a = new char*[15];
    char **x = new char*[15];
    for (int i = 0; i<15; i++)
    {
        a[i] = new char[255];
    }
 
    a[0] = "Вопрос номер 1";
    a[1] = "Вопрос номер 2";
    a[2] = "Вопрос номер 3";
    a[3] = "Вопрос номер 4";
    a[4] = "Вопрос номер 5";
    a[5] = "Вопрос номер 6";
    a[6] = "Вопрос номер 7";
    a[7] = "Вопрос номер 8";
    a[8] = "Вопрос номер 9";
    a[9] = "Вопрос номер 10";
    a[10] = "Вопрос номер 11";
    a[11] = "Вопрос номер 12";
    a[12] = "Вопрос номер 13";
    a[13] = "Вопрос номер 14";
    a[14] = "Вопрос номер 15";
    a[15] = "Вопрос номер 16";
 
    char** b = new char*[15];
 
    b[0] = "Ответ номер 1";
    b[1] = "Ответ номер 2";
    b[2] = "Ответ номер 3";
    b[3] = "Ответ номер 4";
    b[4] = "Ответ номер 5";
    b[5] = "Ответ номер 6";
    b[6] = "Ответ номер 7";
    b[7] = "Ответ номер 8";
    b[8] = "Ответ номер 9";
    b[9] = "Ответ номер 10";
    b[10] = "Ответ номер 11";
    b[11] = "Ответ номер 12";
    b[12] = "Ответ номер 13";
    b[13] = "Ответ номер 14";
    b[14] = "Ответ номер 15";
    b[15] = "Ответ номер 16";
 
    char m;
    srand(unsigned(time(NULL)));
    int h, i(0); 
    int mas[19] = { 0 };
    
    
 
    for (;;)
    {
        
        h = rand() % 15;
        
        if (mas[h])
        {
            continue;
        }
        
        std::cout << a[h] << '\n';
        
        switch (h)
        {
        case 0: x[0] = b[0]; break;
        case 1: x[1] = b[1]; break;
        case 2: x[2] = b[2]; break;
        case 3: x[3] = b[3]; break;
        case 4: x[4] = b[4]; break;
        case 5: x[5] = b[5]; break;
        case 6: x[6] = b[6]; break;
        case 7: x[7] = b[7]; break;
        case 8: x[8] = b[8]; break;
        case 9: x[9] = b[9]; break;
        case 10: x[10] = b[10]; break;
        case 11: x[11] = b[11]; break;
        case 12: x[12] = b[12]; break;
        case 13: x[13] = b[13]; break;
        case 14: x[14] = b[14]; break;
        case 15: x[15] = b[15]; break;
        default: printf("nein\n");
        }
        ++i;
        
    
        
        
        mas[h] = 1;
        
        if (i == 15)
            break;
    }
    
 
    cout << "\n\n\n\n";
    for (int j = 0; j<15; j++)
    std::cout << x[j] << '\n';
    while (1);
    
}
Миниатюры
Программа, которая выводит текст в случайном порядке, а затем соответстующие ответы в таком же порядке  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.06.2017, 14:47
Ответы с готовыми решениями:

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

Файлы. Программа, которая считывает текст из файла и выводит на экран все его предложения в обратном порядке
Помогите пожалуйста! Такая проблема, есть программа: #include &quot;stdafx.h&quot; #include &lt;stdio.h&gt;...

Нужно написать код для программы, которая выводит на экран звездочки ("*") в таком порядке:
Нужна помощь в решении проблемы. Правда язык обучения у меня английский, поэтому некоторые задания...

Написать программу, которая считывает текст из файла и выводит на экран все его предложения в обратном порядке
Написать программу, которая считывает текст из файла и выводит на экран все его предложения в...

3
243 / 268 / 219
Регистрация: 14.11.2016
Сообщений: 1,043
07.06.2017, 15:36 2
Что добавил выделил //***
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#include<iostream>
#include <ctime>
using namespace std;
void main(void)
{
    setlocale(LC_ALL, "Russian");
    char** a = new char*[15];
    char **x = new char*[15];
    for (int i = 0; i<15; i++)
        a[i] = new char[255];
    a[0] = "Вопрос номер 1";
    a[1] = "Вопрос номер 2";
    a[2] = "Вопрос номер 3";
    a[3] = "Вопрос номер 4";
    a[4] = "Вопрос номер 5";
    a[5] = "Вопрос номер 6";
    a[6] = "Вопрос номер 7";
    a[7] = "Вопрос номер 8";
    a[8] = "Вопрос номер 9";
    a[9] = "Вопрос номер 10";
    a[10] = "Вопрос номер 11";
    a[11] = "Вопрос номер 12";
    a[12] = "Вопрос номер 13";
    a[13] = "Вопрос номер 14";
    a[14] = "Вопрос номер 15";
    a[15] = "Вопрос номер 16";
    char** b = new char*[15];
    b[0] = "Ответ номер 1";
    b[1] = "Ответ номер 2";
    b[2] = "Ответ номер 3";
    b[3] = "Ответ номер 4";
    b[4] = "Ответ номер 5";
    b[5] = "Ответ номер 6";
    b[6] = "Ответ номер 7";
    b[7] = "Ответ номер 8";
    b[8] = "Ответ номер 9";
    b[9] = "Ответ номер 10";
    b[10] = "Ответ номер 11";
    b[11] = "Ответ номер 12";
    b[12] = "Ответ номер 13";
    b[13] = "Ответ номер 14";
    b[14] = "Ответ номер 15";
    b[15] = "Ответ номер 16";
    char m;
    srand(unsigned(time(NULL)));
    int h, i(0);
    int mas[19] = { 0 };
    size_t count(0);//***
    for (;;)
    {
        h = rand() % 15;
        if (mas[h])
            continue;
        std::cout << a[h] << '\n';
        
        switch (h)
        {
        case 0: x[count++] = b[0]; break;//***
        case 1: x[count++] = b[1]; break;//***
        case 2: x[count++] = b[2]; break;//***
        case 3: x[count++] = b[3]; break;//***
        case 4: x[count++] = b[4]; break;//***
        case 5: x[count++] = b[5]; break;//***
        case 6: x[count++] = b[6]; break;//***
        case 7: x[count++] = b[7]; break;//***
        case 8: x[count++] = b[8]; break;//***
        case 9: x[count++] = b[9]; break;//***
        case 10: x[count++] = b[10]; break;//***
        case 11: x[count++] = b[11]; break;//***
        case 12: x[count++] = b[12]; break;//***
        case 13: x[count++] = b[13]; break;//***
        case 14: x[count++] = b[14]; break;//***
        case 15: x[count++] = b[15]; break;//***
        default: printf("nein\n");
        }
        ++i;
        mas[h] = 1;
        if (i == 15)
            break;
    }
    cout << "\n\n\n\n";
    for (int j = 0; j<15; j++)
        std::cout << x[j] << '\n';
    while (1);
}
1
0 / 0 / 0
Регистрация: 07.06.2017
Сообщений: 8
09.07.2017, 20:34  [ТС] 3
anapshy, спасибо за такой ответ. Не подскажите как данный кусок кода (ниже) загнать в функцию?
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
srand(unsigned(time(NULL)));
    int h, i(0);
    int mas[19] = { 0 };
    size_t count(0);//***
    for (;;)
    {
        h = rand() % 15;
        if (mas[h])
            continue;
        std::cout << a[h] << '\n';
        
        switch (h)
        {
        case 0: x[count++] = b[0]; break;//***
        case 1: x[count++] = b[1]; break;//***
        case 2: x[count++] = b[2]; break;//***
        case 3: x[count++] = b[3]; break;//***
        case 4: x[count++] = b[4]; break;//***
        case 5: x[count++] = b[5]; break;//***
        case 6: x[count++] = b[6]; break;//***
        case 7: x[count++] = b[7]; break;//***
        case 8: x[count++] = b[8]; break;//***
        case 9: x[count++] = b[9]; break;//***
        case 10: x[count++] = b[10]; break;//***
        case 11: x[count++] = b[11]; break;//***
        case 12: x[count++] = b[12]; break;//***
        case 13: x[count++] = b[13]; break;//***
        case 14: x[count++] = b[14]; break;//***
        case 15: x[count++] = b[15]; break;//***
        default: printf("nein\n");
        }
        ++i;
        mas[h] = 1;
        if (i == 15)
            break;
    }
    cout << "\n\n\n\n";
    for (int j = 0; j<15; j++)
        std::cout << x[j] << '\n';
    while (1);
}
0
243 / 268 / 219
Регистрация: 14.11.2016
Сообщений: 1,043
10.07.2017, 15:28 4
elinastein, лучше std::string вместо char.
И почему у тебя вопросов 16, а выделение памяти под 15?
И почему вопросов 16, а mas[19]?
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
#define     _CRT_SECURE_NO_WARNINGS // Удаление предупреждений о нерекомендуемых функциях
//***** Инклюды *********
#include <Windows.h>
#include <iostream>
#include <ctime>
#include <cstdlib>
#include <cstring>
//***** Дефайны *********
#define     TOTAL_QUESTIONS     16
#define     TOTAL_ANSWERS       TOTAL_QUESTIONS
#define     TOTAL_SIZE          TOTAL_ANSWERS
#define     TOTAL_CHARS         255
//***** Прототипы *******
void func(char**, char**, char**, const unsigned = TOTAL_SIZE);
template<typename T> inline const T RandomValue(T&, const unsigned&);
//***********************
/*
inline - при компиляции функцию окажется встраиваемой в место где она вызывается,
что повышает оптимизацию (т.е. меньше затрат на вызов функции).
 
P.s. inline только рекомендует компилятор, но компилятор может и проигнорировать!
*/
int main(void)
{
    /*
    Для правильного отображения русских символов следует сделать следующее:
    1) Нажать ПКМ на верхнюю часть консоли CMD (за которую перетаскивают окно)
    2) Свойства
    3) Шрифт
    4) Lucida Console
    */
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    std::srand(unsigned(std::time(NULL)));
    //***** Переменные **
    char **x = new char*[TOTAL_ANSWERS],
        **answers = new char*[TOTAL_SIZE],
        **questions = new char*[TOTAL_QUESTIONS],
        m('\0');
    for (unsigned i(0); i < TOTAL_QUESTIONS; i++)
    {
        answers[i] = new char[TOTAL_CHARS];
        questions[i] = new char[TOTAL_CHARS];
    }
    //***** Вопросы *****
    strcpy(questions[0], "Вопрос номер 1\0");        strcpy(questions[1], "Вопрос номер 2\0");        strcpy(questions[2], "Вопрос номер 3\0");
    strcpy(questions[3], "Вопрос номер 4\0");        strcpy(questions[4], "Вопрос номер 5\0");        strcpy(questions[5], "Вопрос номер 6\0");
    strcpy(questions[6], "Вопрос номер 7\0");        strcpy(questions[7], "Вопрос номер 8\0");        strcpy(questions[8], "Вопрос номер 9\0");
    strcpy(questions[9], "Вопрос номер 10\0");       strcpy(questions[10], "Вопрос номер 11\0");      strcpy(questions[11], "Вопрос номер 12\0");
    strcpy(questions[12], "Вопрос номер 13\0");      strcpy(questions[13], "Вопрос номер 14\0");      strcpy(questions[14], "Вопрос номер 15\0");
    strcpy(questions[15], "Вопрос номер 16\0");
    //***** Ответы ******
    strcpy(answers[0], "Ответ номер 1\0");            strcpy(answers[1], "Ответ номер 2\0");            strcpy(answers[2], "Ответ номер 3\0");
    strcpy(answers[3], "Ответ номер 4\0");            strcpy(answers[4], "Ответ номер 5\0");            strcpy(answers[5], "Ответ номер 6\0");
    strcpy(answers[6], "Ответ номер 7\0");            strcpy(answers[7], "Ответ номер 8\0");            strcpy(answers[8], "Ответ номер 9\0");
    strcpy(answers[9], "Ответ номер 10\0");           strcpy(answers[10], "Ответ номер 11\0");      strcpy(answers[11], "Ответ номер 12\0");
    strcpy(answers[12], "Ответ номер 13\0");      strcpy(answers[13], "Ответ номер 14\0");      strcpy(answers[14], "Ответ номер 15\0");
    strcpy(answers[15], "Ответ номер 16\0");
    //*******************
 
    func(x, questions, answers);
 
    for (unsigned i(0); i < TOTAL_QUESTIONS; i++)
    {
        delete[] answers[i];
        delete[] questions[i];
    }
    delete[] x;
    delete[] answers;
    delete[] questions;
 
    system("pause");
    return 0;
}
 
template<typename T>
inline const T RandomValue(T &value, const unsigned &rang)
{
    return value = rand() % rang;
}
 
void func(char **x, char **questions, char **answers, const unsigned size)
{
    if (x != nullptr && questions != nullptr && answers != nullptr)
    {
        unsigned h(0), key(0), count(0);
        bool mas[TOTAL_SIZE]{ false };
        while (true) // Пока while(true) ...
        {
            if (!mas[RandomValue<unsigned>(h, size)])   // function RandomValue записывает случайное число в h в диапазоне от 0 до size-1
                                                            // и возвращает результат по индексу массива.
            {
                std::cout << questions[h] << std::endl; // Выводим вопрос
                if (h >= 0 && h < size)
                {                           // Если это число от 0 до size-1 ...
                    x[count++] = answers[h];// Берем адрес строки answer
                    mas[h] = true;          // Ответ дан
                }
                if (++key == size)      // Если key == size ...
                {                       // .. покидаем while()
                    break;
                }
            }
        }
        std::cout << "\n\n\n" << std::endl;
        for (int i = 0; i < size; std::cout << x[i] << std::endl);
    }
}
1
10.07.2017, 15:28
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.07.2017, 15:28
Помогаю со студенческими работами здесь

Написать программу, которая считывает текст из файла и выводит на экран все его предложения в обратном порядке.
Написать программу, которая считывает текст из файла и выводит на экран все его предложения в...

Написать программу, которая считывает текст из файла и выводит на экран все его предложения в обратном порядке.
Написать программу, которая считывает текст из файла и выводит на экран все его предложения в...

Программа, которая выводит на экран все цифры введенного пользователем числа через пробел в прямом порядке
Нужна программа, которая выводит на экран все цифры введенного пользователем числа через пробел в...

Программа, которая выводит буквы введенного слова в случайном порядке
Здравствуйте, может кто-нибудь подсказать как выполнить эту задачу. Суть в том, что программа...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru