Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
 
jekmut
0 / 0 / 0
Регистрация: 30.12.2012
Сообщений: 84
#1

Выбор объекта случайным образом - C++

05.01.2013, 18:42. Просмотров 561. Ответов 18
Метки нет (Все метки)

Проверьте, пожалуйста! Правильно ли я выполнил задание?

Напишите программу, которая случайным образом выбирает объект из сумки, в которой находятся восемь предметов. Каждый предмет может быть красным, синим, оранжевым или зеленым, а также он может быть шаром или кубом. Предположите, что в сумке находится по одному предмету для каждой комбинации (один красный шар, один красный куб, один оранжевый шар, один оранжевый куб, и так далее). Надо использовать два массива строк – один для идентификации цветов, а второй – для идентификации форм.

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
#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
 
int rand0ToN1(int n);
void Objects();
char *forms[2] = {"cube", "ball"};
char *colors[4] = {"red", "blue", "orange", "green"};
                
int main()
{   
    srand(time(NULL));
    
    Objects();
    
    getch();
    return 0;
}
 
void Objects()
{
    int result;
    int f;
    int c;
    
    result = rand0ToN1(8);
    f = rand0ToN1(2);
    c = rand0ToN1(4);
    
    cout << result << " object is " << forms[f] << " and he is " << colors[c] << endl;
}
 
int rand0ToN1(int n)
{
    return rand() % n;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.01.2013, 18:42
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Выбор объекта случайным образом (C++):

Дата случайным образом - C++
Добрый вечер! Помогите пожалуйста написать программу, которая генерирует дату случайным образом в формате &quot;дд.мм.гггг&quot; Я буду очень...

Заполнить массив случайным образом - C++
Добрый день!!! Ребята, объясните пожалуйста, как выполнить такую задачу!!! По возможности, комментируйте каждое действие. Благодарен...

случайным образом выбирается символ - C++
Помогите пожалуйста! .Случайным образом выбирается символ и пока не будет заданного слова (например END)- символы выводятся на экран ...

заполнение массива случайным образом - C++
Помогите на языке Си заполнить массив символов случайным образом символами с кодами в диапазоне от 21 до 254

Перемешивание элементов массива случайным образом - C++
Здравствуйте! Помогите пожалуйста. Нужно перемешать елементы массива случайным образом. Масив вводится вручную, а после нужно перемешать...

Печатать число из набора случайным образом: 2, 4, 6, 8, 10 - C++
Помогите пожалуйста написать программу в цикле, которая будет печатать число из набора случайным образом: 2, 4, 6, 8, 10. В программе...

18
pa3gBa
2 / 2 / 0
Регистрация: 27.04.2012
Сообщений: 20
05.01.2013, 19:18 #2
вроде всё в норме ! )
работает как надо .
1
0x10
2465 / 1637 / 241
Регистрация: 24.11.2012
Сообщений: 4,040
05.01.2013, 19:34 #3
Смущает одна строчка в задании:
Цитата Сообщение от jekmut Посмотреть сообщение
Предположите, что в сумке находится по одному предмету для каждой комбинации
Т.е. по идее если я сделаю выборку из 8 предметов, то я не должен получить два одинаковых результата. Но я не вижу, чтобы в программе это было предусмотрено.
1
jekmut
0 / 0 / 0
Регистрация: 30.12.2012
Сообщений: 84
05.01.2013, 19:53  [ТС] #4
Это получается, что в каждой комбинации должно быть по два объекта? И таких комбинаций должно быть четыре? Я правильно понял?
Да, и еще, когда выполняю несколько раз программу, выводит 0-ой объект, а минимальный должен быть 1, макс. - 8. Наверное, надо цикл, типа
C++
1
for (int i = 1; i <= 8; i++)
0
0x10
2465 / 1637 / 241
Регистрация: 24.11.2012
Сообщений: 4,040
05.01.2013, 19:57 #5
Каждый объект представляет собой пару из двух свойств: формы и цвета. В данном случае различных объектов может быть 8.
1
jekmut
0 / 0 / 0
Регистрация: 30.12.2012
Сообщений: 84
05.01.2013, 22:11  [ТС] #6
Я уже запутался... Что, конкретно, должна вывести программа??? У меня голова идет кругом...
0
Psilon
Master of Orion
Эксперт .NET
5896 / 4793 / 634
Регистрация: 10.07.2011
Сообщений: 14,407
Записей в блоге: 5
Завершенные тесты: 4
05.01.2013, 22:20 #7
jekmut, в программе должен быть каждый объект каждого цвета (кубы всех цветов и шары всех цветов). Так как фигур всего 2 и цветов 4, то декартово произведение 2х4 = 8 комбинаций.

Добавлено через 3 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
void Objects()
{
    char *combinations[2*4];
    for(int i = 0; i < 2; i++)
       for(int j = 0; j < 4; j++)
       {
          combinations[i*4+j] = colors[j] + " " forms[i];  //или как там, не помню, конкатенция строк короче 
          cout <<  combinations[i*4+j] <<endl;
       }
    cout << "picking random object... it's " << combinations[rand() % 2*4] << endl;
}
1
jekmut
0 / 0 / 0
Регистрация: 30.12.2012
Сообщений: 84
07.01.2013, 15:35  [ТС] #8
Спасибо, Вам! Но я новичек и не могу разобраться с этой функцией...
Выдает ошибку в этой строке:
C++
1
combinations[i*4+j] = colors[j] + " " forms[i];
Как исправить???? Было бы здорово, если б написать эту функцию попроще. Заранее благодарен!
0
Psilon
Master of Orion
Эксперт .NET
5896 / 4793 / 634
Регистрация: 10.07.2011
Сообщений: 14,407
Записей в блоге: 5
Завершенные тесты: 4
07.01.2013, 17:35 #9
jekmut, мб так?
C
1
combinations[i*4+j] = strcat(colors[j], strcat(" ",forms[i]));
1
jekmut
0 / 0 / 0
Регистрация: 30.12.2012
Сообщений: 84
07.01.2013, 18:46  [ТС] #10
Все было бы чудесно, но при запуске программы, открывается черное (без каких либо сообщений) окно и срузу же закрывается. Я в замешательстве...
0
Psilon
Master of Orion
Эксперт .NET
5896 / 4793 / 634
Регистрация: 10.07.2011
Сообщений: 14,407
Записей в блоге: 5
Завершенные тесты: 4
07.01.2013, 19:12 #11
jekmut, поставить getchar() в конец?..
0
jekmut
0 / 0 / 0
Регистрация: 30.12.2012
Сообщений: 84
07.01.2013, 19:26  [ТС] #12
У меня функция getch() стоит и все равно не помогает.
0
Psilon
Master of Orion
Эксперт .NET
5896 / 4793 / 634
Регистрация: 10.07.2011
Сообщений: 14,407
Записей в блоге: 5
Завершенные тесты: 4
07.01.2013, 22:09 #13
jekmut, ну так пройдитесь step over. Отладчик для того и придуман.
0
jekmut
0 / 0 / 0
Регистрация: 30.12.2012
Сообщений: 84
08.01.2013, 00:49  [ТС] #14
При отладке программы всплывает такое сообщение: "Ваша программа вызвала нарушение доступа (ошибку сегментации)." Да уж... это задание из книги для начинающих и никто сделать не может... Просто отлично.
0
0x10
2465 / 1637 / 241
Регистрация: 24.11.2012
Сообщений: 4,040
08.01.2013, 08:07 #15
Потому что ерунда с конкатенацией понаписана, потому и валится.
Вообще хочется создать массив структур, в котором разместить либо индексы характеристик объектов, либо указатели на соответствующие строки. Но если
Цитата Сообщение от jekmut Посмотреть сообщение
это задание из книги для начинающих
то, наверное, и не стоит заморачиваться.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.01.2013, 08:07
Привет! Вот еще темы с ответами:

Вещественный массив - заполнение случайным образом. - C++
Здравствуйте. Помогите пжлста с задачкой. (Visual C++ 6.0) Дан вещественный массив размером N. Составить функцию, которая определит...

Сформировать случайным образом масив из 20 элементов - C++
Помогите написать прогу на С++ &quot;Сформувати випадковим чином масив із 20 елементів. Упорядкувати елементи масиву таким чином, щоб...

Перемещать треугольник по экрану случайным образом - C++
Перемещать треугольник по экрану случайным образом

Перемешивание элементов массива случайным образом - C++
Здравствуйте. Помогите написать функцию, которая рандомно перемешивает элементы массива. void PeremeshivanieMassiva(int m); void...


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

Или воспользуйтесь поиском по форуму:
15
Yandex
Объявления
08.01.2013, 08:07
Ответ Создать тему
Опции темы

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