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

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

Восстановить пароль Регистрация
 
jekmut
0 / 0 / 0
Регистрация: 30.12.2012
Сообщений: 55
05.01.2013, 18:42     Выбор объекта случайным образом #1
Проверьте, пожалуйста! Правильно ли я выполнил задание?

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

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;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
pa3gBa
2 / 2 / 0
Регистрация: 27.04.2012
Сообщений: 20
05.01.2013, 19:18     Выбор объекта случайным образом #2
вроде всё в норме ! )
работает как надо .
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
05.01.2013, 19:34     Выбор объекта случайным образом #3
Смущает одна строчка в задании:
Цитата Сообщение от jekmut Посмотреть сообщение
Предположите, что в сумке находится по одному предмету для каждой комбинации
Т.е. по идее если я сделаю выборку из 8 предметов, то я не должен получить два одинаковых результата. Но я не вижу, чтобы в программе это было предусмотрено.
jekmut
0 / 0 / 0
Регистрация: 30.12.2012
Сообщений: 55
05.01.2013, 19:53  [ТС]     Выбор объекта случайным образом #4
Это получается, что в каждой комбинации должно быть по два объекта? И таких комбинаций должно быть четыре? Я правильно понял?
Да, и еще, когда выполняю несколько раз программу, выводит 0-ой объект, а минимальный должен быть 1, макс. - 8. Наверное, надо цикл, типа
C++
1
for (int i = 1; i <= 8; i++)
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
05.01.2013, 19:57     Выбор объекта случайным образом #5
Каждый объект представляет собой пару из двух свойств: формы и цвета. В данном случае различных объектов может быть 8.
jekmut
0 / 0 / 0
Регистрация: 30.12.2012
Сообщений: 55
05.01.2013, 22:11  [ТС]     Выбор объекта случайным образом #6
Я уже запутался... Что, конкретно, должна вывести программа??? У меня голова идет кругом...
Psilon
Master of Orion
 Аватар для Psilon
5738 / 4686 / 619
Регистрация: 10.07.2011
Сообщений: 14,160
Записей в блоге: 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;
}
jekmut
0 / 0 / 0
Регистрация: 30.12.2012
Сообщений: 55
07.01.2013, 15:35  [ТС]     Выбор объекта случайным образом #8
Спасибо, Вам! Но я новичек и не могу разобраться с этой функцией...
Выдает ошибку в этой строке:
C++
1
combinations[i*4+j] = colors[j] + " " forms[i];
Как исправить???? Было бы здорово, если б написать эту функцию попроще. Заранее благодарен!
Psilon
Master of Orion
 Аватар для Psilon
5738 / 4686 / 619
Регистрация: 10.07.2011
Сообщений: 14,160
Записей в блоге: 5
Завершенные тесты: 4
07.01.2013, 17:35     Выбор объекта случайным образом #9
jekmut, мб так?
C
1
combinations[i*4+j] = strcat(colors[j], strcat(" ",forms[i]));
jekmut
0 / 0 / 0
Регистрация: 30.12.2012
Сообщений: 55
07.01.2013, 18:46  [ТС]     Выбор объекта случайным образом #10
Все было бы чудесно, но при запуске программы, открывается черное (без каких либо сообщений) окно и срузу же закрывается. Я в замешательстве...
Psilon
Master of Orion
 Аватар для Psilon
5738 / 4686 / 619
Регистрация: 10.07.2011
Сообщений: 14,160
Записей в блоге: 5
Завершенные тесты: 4
07.01.2013, 19:12     Выбор объекта случайным образом #11
jekmut, поставить getchar() в конец?..
jekmut
0 / 0 / 0
Регистрация: 30.12.2012
Сообщений: 55
07.01.2013, 19:26  [ТС]     Выбор объекта случайным образом #12
У меня функция getch() стоит и все равно не помогает.
Psilon
Master of Orion
 Аватар для Psilon
5738 / 4686 / 619
Регистрация: 10.07.2011
Сообщений: 14,160
Записей в блоге: 5
Завершенные тесты: 4
07.01.2013, 22:09     Выбор объекта случайным образом #13
jekmut, ну так пройдитесь step over. Отладчик для того и придуман.
jekmut
0 / 0 / 0
Регистрация: 30.12.2012
Сообщений: 55
08.01.2013, 00:49  [ТС]     Выбор объекта случайным образом #14
При отладке программы всплывает такое сообщение: "Ваша программа вызвала нарушение доступа (ошибку сегментации)." Да уж... это задание из книги для начинающих и никто сделать не может... Просто отлично.
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
08.01.2013, 08:07     Выбор объекта случайным образом #15
Потому что ерунда с конкатенацией понаписана, потому и валится.
Вообще хочется создать массив структур, в котором разместить либо индексы характеристик объектов, либо указатели на соответствующие строки. Но если
Цитата Сообщение от jekmut Посмотреть сообщение
это задание из книги для начинающих
то, наверное, и не стоит заморачиваться.
jekmut
0 / 0 / 0
Регистрация: 30.12.2012
Сообщений: 55
08.01.2013, 11:49  [ТС]     Выбор объекта случайным образом #16
Я согласен. Это задание легкое, нужно немного изменить пример и все. Psilon сделал так, как считал нужным. Для меня это пока сложно да и к тому же не работает... Моя программа должна вывести всего один объект из восьми или все восем случайным образом???
Psilon
Master of Orion
 Аватар для Psilon
5738 / 4686 / 619
Регистрация: 10.07.2011
Сообщений: 14,160
Записей в блоге: 5
Завершенные тесты: 4
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;
}
jekmut
0 / 0 / 0
Регистрация: 30.12.2012
Сообщений: 55
08.01.2013, 13:37  [ТС]     Выбор объекта случайным образом #18
Вот это другое дело! )) Огромное спасибо!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.01.2013, 13:43     Выбор объекта случайным образом
Еще ссылки по теме:

C++ Дата случайным образом
Строки. В массиве s(20) сформированном случайным образом C++
Перемещать треугольник по экрану случайным образом C++

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

Или воспользуйтесь поиском по форуму:
Psilon
Master of Orion
 Аватар для Psilon
5738 / 4686 / 619
Регистрация: 10.07.2011
Сообщений: 14,160
Записей в блоге: 5
Завершенные тесты: 4
08.01.2013, 13:43     Выбор объекта случайным образом #19
jekmut, всегда пожалуйста
Yandex
Объявления
08.01.2013, 13:43     Выбор объекта случайным образом
Ответ Создать тему
Опции темы

Текущее время: 15:15. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru