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

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

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

Как рандомно заполнить квадратную матрицу звездочками? - C++

19.02.2016, 11:58. Просмотров 469. Ответов 22
Метки нет (Все метки)

Мне нужно на дошке 5 на 5 рандомно поставить 5 звездочек. Как это можна сделать? Я нашла функцию rand(). Но как сделать не знаю . Подскажите если вам не сложно. Я не программист. По предмету информатика нужно сдать
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.02.2016, 11:58
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как рандомно заполнить квадратную матрицу звездочками? (C++):

Как заполнить квадратную матрицу числами по порядку? - C++
Осталась надежда только на вас! Не могу понять как сделать чтобы матрица заполнялась в цикле определенным порядком чисел, куда не...

Написать программу, которая будет генерировать квадратную матрицу рандомно - C++
Необходимо написать программу которая будет генерировать квадратную матрицур рандомно размерности от 3 до 5(рандомно), значения...

Требуется заполнить змейкой квадратную матрицу так, как показано на рисунке - C++
Требуется заполнить змейкой квадратную матрицу так, как показано на рисунке справа: заполнение происходит с единицы из левого верхнего угла...

Заполнить квадратную матрицу змейкой - C++
заполнить квадратную матрицу NxN змейкой С++ вот так: 25 24 23 22 21 16 17 18 19 20 15 14 13 12 11 6 7 8 9 10 5 4 3 2 1

Заполнить квадратную матрицу по спирали - C++
Одномерный: В заданном целочисленном массиве R(9) определить индекс наибольшего из нечетных по значению положительных элементов. ...

Заполнить квадратную матрицу змейкой - C++
Задано число N. Заполните квадратную матрицу NxN числами от 1 до N^2 “змейкой”, как показано в примере. 4 1 8 9 16 2 7 10 15...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
jonson
232 / 205 / 61
Регистрация: 18.03.2010
Сообщений: 749
19.02.2016, 12:01 #2
Цитата Сообщение от oxanamaluseva Посмотреть сообщение
нужно на дошке 5 на 5
А по русски можно?
oxanamaluseva
0 / 0 / 0
Регистрация: 19.02.2016
Сообщений: 38
19.02.2016, 12:15  [ТС] #3
jonson, доска
jonson
232 / 205 / 61
Регистрация: 18.03.2010
Сообщений: 749
19.02.2016, 12:23 #4
Цитата Сообщение от oxanamaluseva Посмотреть сообщение
доска
а при чем тут доска?
Вот может поможет.
Кликните здесь для просмотра всего текста
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
#include <iostream>
#include <time.h>
 
int main()
{
    srand (time(NULL));
    const int N = 5;
    char arr[N][N];
    for(int i=0; i<N; ++i)
        for(int y=0; y<N; ++y)
            arr[i][y] = '-';
 
    int x, y, it = N;
 
    while (it)
    {
        x = rand()%5;
        y = rand()%5;
        if(arr[x][y] != '*')
        {
            arr[x][y] = '*';
            it--;
        }
    }
 
    for(int i=0; i<N; ++i)
    {
        for(int y=0; y<N; ++y)
            std::cout << arr[i][y] << " ";
        std::cout << std::endl;
    }
    system("pause");
    return 0;
}
oxanamaluseva
0 / 0 / 0
Регистрация: 19.02.2016
Сообщений: 38
19.02.2016, 15:13  [ТС] #5
jonson, доска - матрица 5 на 5

Добавлено через 2 часа 37 минут
посмотрите правильно ли я сделала?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
srand(time(NULL));
    const int num = 5; 
    for (int row = 0; row < kSize; ++row)
    {
        for (int col = 0; col < kSize; ++col)
        {
            int it = num;
            mCells[row][col] = State_0;
            while (it)
            {
                row = rand() % num;
                col = rand() % num;
                if (mCells[row][col] != '*')
                {
                    mCells[row][col] = State_Star;
                    --it;
                }
            }
        }
    }
jonson
232 / 205 / 61
Регистрация: 18.03.2010
Сообщений: 749
19.02.2016, 15:28 #6
Цитата Сообщение от oxanamaluseva Посмотреть сообщение
правильно ли я сделала?
А ты посмотри, как это будет работать.
oxanamaluseva
0 / 0 / 0
Регистрация: 19.02.2016
Сообщений: 38
19.02.2016, 15:45  [ТС] #7
jonson, нет не правильно работает, проверила. Вопрос: Подскажите как правильно
Raali
623 / 327 / 34
Регистрация: 06.07.2013
Сообщений: 1,056
Завершенные тесты: 1
19.02.2016, 15:55 #8
тебе нужно 5 звездочек так?
C++
1
int num = 5;
теперь делаем бесконечный цикл, так как нам нужно удостовериться что мы точно поставим 5 ( потому что можно их поставить друг на друга случайно)
C++
1
2
3
4
5
6
7
8
9
10
11
12
while(true)
{
row = rand() % num;
col = rand() % num;
if(mCells[row][col] != '*')//если у нас там еще нет звездочки
{
mCells[row][col] != '*';
--num;
}
if(num == 0) // поставили все, выходим
break;
}
делать это после того, как проинициализируешь массив нулями или чем то другим
jonson
232 / 205 / 61
Регистрация: 18.03.2010
Сообщений: 749
19.02.2016, 15:56 #9
Цитата Сообщение от oxanamaluseva Посмотреть сообщение
Подскажите как правильно
Я выложил код выше, или по вашему он не правильный?
Raali
623 / 327 / 34
Регистрация: 06.07.2013
Сообщений: 1,056
Завершенные тесты: 1
19.02.2016, 16:00 #10
Цитата Сообщение от jonson Посмотреть сообщение
Я выложил код выше, или по вашему он не правильный?
и да, у него правильный код, у меня вместо row = rand() % num; должно быть % 5
jonson
232 / 205 / 61
Регистрация: 18.03.2010
Сообщений: 749
19.02.2016, 16:01 #11
Raali, у Вас в 7 строчке маленькая очепятка.
oxanamaluseva
0 / 0 / 0
Регистрация: 19.02.2016
Сообщений: 38
19.02.2016, 16:34  [ТС] #12
Raali, jonson, я переделала. Я забыла уточнить. У меня матрица 5 на 5 и там где не стоит звездочка ноли стоят. Но у меня только звездочки выводяться
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
srand(time(NULL));
    const int num = 5;
    int row = 0;
    int col = 0;
    int it = num;
 
    for (; row < kSize; ++row)
    {
        for (; col < kSize; ++col)
        {
            mCells[row][col] = State_0;
        }
    }
    while (it > 0)
    {
        row = rand() % kSize;
        col = rand() % kSize;
        if (mCells[row][col] != State_Star)
        {
            mCells[row][col] = State_Star;
            --it;
        }
    }
Добавлено через 59 секунд
kSize у меня 5
jonson
232 / 205 / 61
Регистрация: 18.03.2010
Сообщений: 749
19.02.2016, 17:03 #13
Цитата Сообщение от oxanamaluseva Посмотреть сообщение
я переделала
oxanamaluseva, у тебя в цикле for при инициализации mCells, значение State_0 получит только первая строка, остальные 4 будут содержать "мусор". А почему - подумай)
Raali
623 / 327 / 34
Регистрация: 06.07.2013
Сообщений: 1,056
Завершенные тесты: 1
19.02.2016, 17:08 #14
Цитата Сообщение от oxanamaluseva Посмотреть сообщение
Но у меня только звездочки выводяться
нули не будут выводиться, поставь какой то другой символ, например 'o'
oxanamaluseva
0 / 0 / 0
Регистрация: 19.02.2016
Сообщений: 38
19.02.2016, 17:14  [ТС] #15
jonson, честно, не знаю по чему. Помогите написать как правильно нужно віводить
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.02.2016, 17:14
Привет! Вот еще темы с ответами:

Заполнить квадратную матрицу 10 на 10 змейкой - C++
заполнить квадратную матрицу 10 на 10 змейкой С++ вот так: 91 92 93 94...98 99 100 90 89 88 87...83 82 81 . . . 11 12 13...

Заполнить квадратную матрицу следующим способом - C++
Собственно, кто сможет помочь? :-|

Заполнить квадратную матрицу числами по периметру - C++
Уважаемые форумчане такой вопрос нужно вывести и заполнить квадрат 5x5 цифрами. По середине должны быть 0 на примере показано как надо...

Заполнить квадратную матрицу следующим способом - C++
Нужно заполнить матрицу вот таким способом Y\X 0 1 2 3 4 5 6 7 8 --------------------- 0 | 5 5 5 5 5 5 5 5 5...


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

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

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