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

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

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

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

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

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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.01.2013, 18:42
Ответы с готовыми решениями:

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

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

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

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

18
2 / 2 / 4
Регистрация: 27.04.2012
Сообщений: 20
05.01.2013, 19:18 2
вроде всё в норме ! )
работает как надо .
1
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
05.01.2013, 19:34 3
Смущает одна строчка в задании:
Цитата Сообщение от jekmut Посмотреть сообщение
Предположите, что в сумке находится по одному предмету для каждой комбинации
Т.е. по идее если я сделаю выборку из 8 предметов, то я не должен получить два одинаковых результата. Но я не вижу, чтобы в программе это было предусмотрено.
1
0 / 0 / 1
Регистрация: 30.12.2012
Сообщений: 88
05.01.2013, 19:53  [ТС] 4
Это получается, что в каждой комбинации должно быть по два объекта? И таких комбинаций должно быть четыре? Я правильно понял?
Да, и еще, когда выполняю несколько раз программу, выводит 0-ой объект, а минимальный должен быть 1, макс. - 8. Наверное, надо цикл, типа
C++
1
for (int i = 1; i <= 8; i++)
0
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
05.01.2013, 19:57 5
Каждый объект представляет собой пару из двух свойств: формы и цвета. В данном случае различных объектов может быть 8.
1
0 / 0 / 1
Регистрация: 30.12.2012
Сообщений: 88
05.01.2013, 22:11  [ТС] 6
Я уже запутался... Что, конкретно, должна вывести программа??? У меня голова идет кругом...
0
Master of Orion
Эксперт .NET
6098 / 4954 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
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
0 / 0 / 1
Регистрация: 30.12.2012
Сообщений: 88
07.01.2013, 15:35  [ТС] 8
Спасибо, Вам! Но я новичек и не могу разобраться с этой функцией...
Выдает ошибку в этой строке:
C++
1
combinations[i*4+j] = colors[j] + " " forms[i];
Как исправить???? Было бы здорово, если б написать эту функцию попроще. Заранее благодарен!
0
Master of Orion
Эксперт .NET
6098 / 4954 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
07.01.2013, 17:35 9
jekmut, мб так?
C
1
combinations[i*4+j] = strcat(colors[j], strcat(" ",forms[i]));
1
0 / 0 / 1
Регистрация: 30.12.2012
Сообщений: 88
07.01.2013, 18:46  [ТС] 10
Все было бы чудесно, но при запуске программы, открывается черное (без каких либо сообщений) окно и срузу же закрывается. Я в замешательстве...
0
Master of Orion
Эксперт .NET
6098 / 4954 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
07.01.2013, 19:12 11
jekmut, поставить getchar() в конец?..
0
0 / 0 / 1
Регистрация: 30.12.2012
Сообщений: 88
07.01.2013, 19:26  [ТС] 12
У меня функция getch() стоит и все равно не помогает.
0
Master of Orion
Эксперт .NET
6098 / 4954 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
07.01.2013, 22:09 13
jekmut, ну так пройдитесь step over. Отладчик для того и придуман.
0
0 / 0 / 1
Регистрация: 30.12.2012
Сообщений: 88
08.01.2013, 00:49  [ТС] 14
При отладке программы всплывает такое сообщение: "Ваша программа вызвала нарушение доступа (ошибку сегментации)." Да уж... это задание из книги для начинающих и никто сделать не может... Просто отлично.
0
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
08.01.2013, 08:07 15
Потому что ерунда с конкатенацией понаписана, потому и валится.
Вообще хочется создать массив структур, в котором разместить либо индексы характеристик объектов, либо указатели на соответствующие строки. Но если
Цитата Сообщение от jekmut Посмотреть сообщение
это задание из книги для начинающих
то, наверное, и не стоит заморачиваться.
0
0 / 0 / 1
Регистрация: 30.12.2012
Сообщений: 88
08.01.2013, 11:49  [ТС] 16
Я согласен. Это задание легкое, нужно немного изменить пример и все. Psilon сделал так, как считал нужным. Для меня это пока сложно да и к тому же не работает... Моя программа должна вывести всего один объект из восьми или все восем случайным образом???
0
Master of Orion
Эксперт .NET
6098 / 4954 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
08.01.2013, 12:37 17
Что не рабоатет?
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
#include <iostream>
#include <stdlib.h>
#include <time.h>
#include <string>
#define M 2
#define N 4
 
using namespace std;
 
 
string forms[M] = {"cube", "ball"};
string colors[N] = {"red", "blue", "orange", "green"};
 
 
string GetRandomObjects()
{
    srand(time(NULL));
    return "Object is " + colors[rand() % N] + " " + forms[rand() % M];
}
 
int main()
{    
    cout << GetRandomObjects() << endl;
    return 0;
}
1
0 / 0 / 1
Регистрация: 30.12.2012
Сообщений: 88
08.01.2013, 13:37  [ТС] 18
Вот это другое дело! )) Огромное спасибо!
0
Master of Orion
Эксперт .NET
6098 / 4954 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
08.01.2013, 13:43 19
jekmut, всегда пожалуйста
0
08.01.2013, 13:43
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.01.2013, 13:43
Помогаю со студенческими работами здесь

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

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

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

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


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

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