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

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

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

Author24 — интернет-сервис помощи студентам
Мне нужно на дошке 5 на 5 рандомно поставить 5 звездочек. Как это можна сделать? Я нашла функцию rand(). Но как сделать не знаю . Подскажите если вам не сложно. Я не программист. По предмету информатика нужно сдать
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.02.2016, 11:58
Ответы с готовыми решениями:

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

Написать программу, которая будет генерировать квадратную матрицу рандомно
Необходимо написать программу которая будет генерировать квадратную матрицур рандомно размерности...

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

Заполнить рандомно матрицу с выделением динамической памяти
#include "stdafx.h" #include <iostream> #include <ctime> #include <cstdlib> #include...

22
240 / 213 / 84
Регистрация: 18.03.2010
Сообщений: 750
19.02.2016, 12:01 2
Цитата Сообщение от oxanamaluseva Посмотреть сообщение
нужно на дошке 5 на 5
А по русски можно?
0
0 / 0 / 1
Регистрация: 19.02.2016
Сообщений: 38
19.02.2016, 12:15  [ТС] 3
jonson, доска
0
240 / 213 / 84
Регистрация: 18.03.2010
Сообщений: 750
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;
}
0
0 / 0 / 1
Регистрация: 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;
                }
            }
        }
    }
0
240 / 213 / 84
Регистрация: 18.03.2010
Сообщений: 750
19.02.2016, 15:28 6
Цитата Сообщение от oxanamaluseva Посмотреть сообщение
правильно ли я сделала?
А ты посмотри, как это будет работать.
0
0 / 0 / 1
Регистрация: 19.02.2016
Сообщений: 38
19.02.2016, 15:45  [ТС] 7
jonson, нет не правильно работает, проверила. Вопрос: Подскажите как правильно
0
859 / 448 / 112
Регистрация: 06.07.2013
Сообщений: 1,491
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;
}
делать это после того, как проинициализируешь массив нулями или чем то другим
0
240 / 213 / 84
Регистрация: 18.03.2010
Сообщений: 750
19.02.2016, 15:56 9
Цитата Сообщение от oxanamaluseva Посмотреть сообщение
Подскажите как правильно
Я выложил код выше, или по вашему он не правильный?
0
859 / 448 / 112
Регистрация: 06.07.2013
Сообщений: 1,491
19.02.2016, 16:00 10
Цитата Сообщение от jonson Посмотреть сообщение
Я выложил код выше, или по вашему он не правильный?
и да, у него правильный код, у меня вместо row = rand() % num; должно быть % 5
0
240 / 213 / 84
Регистрация: 18.03.2010
Сообщений: 750
19.02.2016, 16:01 11
Raali, у Вас в 7 строчке маленькая очепятка.
0
0 / 0 / 1
Регистрация: 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
0
240 / 213 / 84
Регистрация: 18.03.2010
Сообщений: 750
19.02.2016, 17:03 13
Цитата Сообщение от oxanamaluseva Посмотреть сообщение
я переделала
oxanamaluseva, у тебя в цикле for при инициализации mCells, значение State_0 получит только первая строка, остальные 4 будут содержать "мусор". А почему - подумай)
0
859 / 448 / 112
Регистрация: 06.07.2013
Сообщений: 1,491
19.02.2016, 17:08 14
Цитата Сообщение от oxanamaluseva Посмотреть сообщение
Но у меня только звездочки выводяться
нули не будут выводиться, поставь какой то другой символ, например 'o'
0
0 / 0 / 1
Регистрация: 19.02.2016
Сообщений: 38
19.02.2016, 17:14  [ТС] 15
jonson, честно, не знаю по чему. Помогите написать как правильно нужно віводить
0
859 / 448 / 112
Регистрация: 06.07.2013
Сообщений: 1,491
19.02.2016, 17:18 16
Цитата Сообщение от oxanamaluseva Посмотреть сообщение
Помогите написать как правильно нужно віводить
покажи , как ты выводишь результат
0
240 / 213 / 84
Регистрация: 18.03.2010
Сообщений: 750
19.02.2016, 17:21 17
Цитата Сообщение от oxanamaluseva Посмотреть сообщение
не знаю по чему
подсказка, между строками 12 и 13 (после блока вложеного for), вставь
C++
1
col = 0;
0
0 / 0 / 1
Регистрация: 19.02.2016
Сообщений: 38
19.02.2016, 17:23  [ТС] 18
jonson, спасибо
0
240 / 213 / 84
Регистрация: 18.03.2010
Сообщений: 750
19.02.2016, 17:26 19
показывай что выводится. И чему у тебя равна State_0
0
0 / 0 / 1
Регистрация: 19.02.2016
Сообщений: 38
19.02.2016, 17:28  [ТС] 20
jonson, все ок. то что нужно выводиться. как сюда фото вставить я не знаю
0
19.02.2016, 17:28
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.02.2016, 17:28
Помогаю со студенческими работами здесь

Заполнить матрицу по столбцам рандомно и с разным диапазоном значений
тэкс, есть двумерный массив с 30 строками и 3 столбцами, как заполнить этот массив по столбцам...

Заполнить квадратную матрицу 10 на 10 змейкой
заполнить квадратную матрицу 10 на 10 змейкой С++ вот так: 91 92 93 94...98 99 100 90 89 88...

Заполнить квадратную матрицу змейкой
заполнить квадратную матрицу NxN змейкой С++ вот так: 25 24 23 22 21 16 17 18 19 20 15 14 13...

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


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

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