Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/43: Рейтинг темы: голосов - 43, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 25.10.2009
Сообщений: 15

Сгенерировать случайный двумерный массив с заданной размерностью

28.10.2010, 15:36. Показов 8336. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно сгенерировать двумерный массив с заданной размерностью и вывести его на экран, помогите это сделать пожалуйста
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.10.2010, 15:36
Ответы с готовыми решениями:

Дан двумерный массив размерностью 4*5. Сформировать одномерный массив
Дан двумерный массив размерностью 4*5, заполненный целыми числами с клавиатуры. Сформировать одномерный массив каждый элемент которого...

Двумерный массив размерностью nxm
Написать программу в С++ задание: Дан двумерный массив размерностью nxm (n и m задаются с клавиатуры),заполненный целыми числами с...

Дан двумерный массив размерностью Н. сформировать одномерный массив из элементов заданного массива расположенных над главной диагональю.
помогите решить=)Дан двумерный массив размерностью Н. сформировать одномерный массив из элементов заданного массива расположенных над ...

18
125 / 65 / 9
Регистрация: 19.04.2010
Сообщений: 196
28.10.2010, 15:51
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
#include <math.h>
 
int main()
{
  int n, m;
  int i, j;
  int *matrix;
  printf("Enter row and column matrix: ");
  scanf("%d %d", &n, &m);
  printf("\n");
  
  matrix = (int*)malloc(sizeof(int)*n*m);
  for(i=0;i<n;i++)
    for(j=0;j<m;j++)
       matrix[i*n+j] = rand();
 
  free(matrix);
  
   return 0;
}
0
0 / 0 / 0
Регистрация: 25.10.2009
Сообщений: 15
28.10.2010, 16:14  [ТС]
а почему у меня си пишет неопределены такие функции как malloc, rand, free?
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
28.10.2010, 16:17
Подключите stdlib.h
0
0 / 0 / 0
Регистрация: 25.10.2009
Сообщений: 15
28.10.2010, 16:24  [ТС]
извините за тупые вопросы, но так как я в си бот, как вывести это на экран?
0
274 / 175 / 12
Регистрация: 14.03.2010
Сообщений: 501
28.10.2010, 19:31
palach777, тебе дали очень плохой совет. Так пишут на чистом Си, а на плюсах так делать не принято. На Си++ твоя программа должна выглядеть примерно так:
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
39
40
41
42
43
44
#include <iostream>
#include <vector>
 
class int_matrix {
public:
    int_matrix (int height, int width) : m_matrix(height, array_type(width)) { random_fill(); }
    
    void show () const {
        for (matrix_type::const_iterator i = m_matrix.begin(); i != m_matrix.end(); ++i) {
            for (array_type::const_iterator j = i->begin(); j != i->end(); ++j) {
                std::cout << "\t" << *j;
            }
            std::cout << std::endl;
        }
    }
    
    void random_fill (int base = 10) {
        for (matrix_type::iterator i = m_matrix.begin(); i != m_matrix.end(); ++i) {
            for (array_type::iterator j = i->begin(); j != i->end(); ++j) {
                *j = random() % base;
            }
        }
    }
 
private:
    typedef std::vector<int> array_type;
    typedef std::vector<array_type> matrix_type;
    matrix_type m_matrix;
};
 
int main () {
    srandom(time(NULL));
 
    int width, height;
    
    std::cout << "Введите число строк и столбцов матрицы: ";
    std::cin >> height >> width;
    
    int_matrix matrix(height, width);
    
    matrix.show();
    
    return 0;
}
Сразу вряд ли поймёшь, поэтому читай документацию по классу std::vector. Зато такой способ верный не только с точки зрения логики программы, но и с точки зрения идеологии.
1
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
28.10.2010, 20:22
volovzi, Ну перебор для простых программ. Как-то даже слишком)

Достаточно и такого. Хотя в конкретно этой программе можно даже не бить на функции.

Впринципе я согласен с вашим использованием вектора. Но вот классы здесь стругать, если программа одноразовая резона не вижу.
Тем более, что и ввод и вывод матрицы как функции класса не особо хорошо, по той причине, что нету абстракции. Так что идеология то не поддерживается в некотором плане.

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
39
40
41
42
43
44
45
46
47
#include <iostream>
#include <iomanip>
#include <ctime>
#include <cstdlib>
 
void rand_fill(int** Arr, int n, int m)
{
     for(int i=0; i<n; ++i)
     {
         for(int j=0; j<m; ++j)
         {
              Arr[i][j]=rand();
         }
      }
}
 
void print(int** Arr, int n, int m)
{
    for(int i=0; i<n; ++i)
    {
        for(int j=0; j<m; ++j)
        {
             std::cout<<std::setw(6)<<Arr[i][j]<<' ';
        }
        std::cout<<'\n';
     }
}
 
int main()
{
     srand(static_cast<unsigned>(time(0)));
     int** Arr;
     int n, m;
     std::cout<<"Enter n: ";
     std::cin>>n;
     std::cout<<"Enter m: ";
     std::cin>>m;
     Arr=new int*[n];
     for(int i=0; i<n; ++i)
        Arr[i]=new int[m];
     rand_fill(Arr, n, m);
     print(Arr, n, m);
     for(int i=0; i<n; ++i)
         delete[] Arr[i];
     delete[] Arr;
     return 0;
}
2
125 / 65 / 9
Регистрация: 19.04.2010
Сообщений: 196
28.10.2010, 20:26
Согласен полностью что до абсурда доводить каждую задачу не нужно.
Чем проще она решается тем меньше в ней ошибок.
Тут не требуется грандиозной гибкости.
1
274 / 175 / 12
Регистрация: 14.03.2010
Сообщений: 501
28.10.2010, 20:32
Lavroff, не могу согласиться. Ничего сложного тут нет, всё дело в привычке к стандартной библиотеки шаблонов. Разобраться с вектором и итераторами, и дальше вообще станет легче жить .
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
28.10.2010, 20:33
volovzi, Да понятное дело, что легко. И вектор и итератор все прекрасно. Но, класс тут лишний, если не задумываться о том, что это может развиться дальше.
Но во-первых метод show в классе не канает, во-вторых random_fill тоже не канает.
Разве класс матрица должен иметь методы с использованием консоли, да + с пользовательским интерфейсом? Разделять интерфейс от реализации тоже часть хорошего стиля и идеологии.

Да и кстати. Что за srandom?
0
274 / 175 / 12
Регистрация: 14.03.2010
Сообщений: 501
28.10.2010, 20:36
Цитата Сообщение от Sudoki Посмотреть сообщение
Согласен полностью что до абсурда доводить каждую задачу не нужно.
Чем проще она решается тем меньше в ней ошибок.
Тут не требуется грандиозной гибкости.
Человек просил Си++, а ты ему написал на Си. Немного разные вещи.
По-моему, гораздо больший абсурд — работать вручную с памятью.
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
28.10.2010, 20:38
volovzi, Видишь-ли в чем проблема... Обычно, народ, который спрашивает такую задачу ждет самого простого решения задачи. А векторы/итераторы им перед преподом объяснять как-то не вариант будет.

И все же... Очень интересует что за srandom (опечатка?) и макроса NULL в С++
0
274 / 175 / 12
Регистрация: 14.03.2010
Сообщений: 501
28.10.2010, 20:48
Цитата Сообщение от Lavroff Посмотреть сообщение
volovzi, Видишь-ли в чем проблема... Обычно, народ, который спрашивает такую задачу ждет самого простого решения задачи. А векторы/итераторы им перед преподом объяснять как-то не вариант будет.

И все же... Очень интересует что за srandom (опечатка?) и макроса NULL в С++
А почему ты думаешь, что векторы объяснять сложнее, чем работу функций malloc, realloc и иже с ними? Тем более, что в плюсах их, типа, нет.

Опечаток нет. Всю жизнь пользуюсь парой srandom/random. Это, вроде как, старшие братья srand/rand. А NULL обозначает нулевой указатель "(void *)0". Или сейчас как-то по-другому принято?
0
Freelance
Эксперт С++
 Аватар для asics
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
28.10.2010, 20:53
Цитата Сообщение от volovzi Посмотреть сообщение
Тем более, что в плюсах их, типа, нет.
Си является подмножеством языка С++,так что нельзя говорить что ети функции не входят в стандартную библиотеку С++.
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
28.10.2010, 20:54
volovzi,
Дык. Я же не говорил, что код на Си который написали правилен для С++. Но работу new и delete то в чем проблема в объяснении?

В плюсах не рекомендуется NULL использовать честно говоря. Страуструп по этому поводу пишет:
"Используйте 0 вместо NULL и у вас будет меньше проблем".
На тему random-a это не функция С++, ибо в стандарте это не предусмотренно насколько я понимаю. Функция борландовская.
random

Хотя впринципе я не исключаю, что это из Буста, но подключение буста я не заметил у вас.
А так же не исключаю, что это нечто из нового стандарта... Но по-моему это еще не реализовано. Вообщем лень копаться лезть по манам. Что за функция то такая?
0
274 / 175 / 12
Регистрация: 14.03.2010
Сообщений: 501
28.10.2010, 21:02
Цитата Сообщение от Asics^ Посмотреть сообщение
Си является подмножеством языка С++,так что нельзя говорить что ети функции не входят в стандартную библиотеку С++.
Строго говоря, не является. Но эти функции поддерживаются, хотя их использование не очень приветствуется.

Цитата Сообщение от Lavroff Посмотреть сообщение
volovzi,
Дык. Я же не говорил, что код на Си который написали правилен для С++. Но работу new и delete то в чем проблема в объяснении?

В плюсах не рекомендуется NULL использовать честно говоря. Страуструп по этому поводу пишет:
new/delete — это да. Тут проблем нет. Для институтской лабы сойдёт .

По поводу рандома — у меня он в стандартной библиотеке о_О. К борланду моя среда разработки отношения не имеет. В документации написано "These functions appeared in 4.2BSD".

По поводу нуля спасибо. Оказывается, у меня тоже ещё остались сишные привычки.
0
Freelance
Эксперт С++
 Аватар для asics
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
28.10.2010, 21:09
Цитата Сообщение от volovzi Посмотреть сообщение
Строго говоря, не является.
Кем "говоря"?
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
28.10.2010, 21:09
volovzi, Даа... Странная функция... В MSVS такой не имеется...

Добавлено через 17 секунд
Asics^, Всеми говоря. Это разные языки. Кроме основ.
0
0 / 0 / 0
Регистрация: 25.10.2009
Сообщений: 15
28.10.2010, 21:57  [ТС]
спасибо большое за помощь,я наконец разобрался
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.10.2010, 21:57
Помогаю со студенческими работами здесь

C++ Дан двумерный массив размерностью NxM
Дан двумерный массив размерностью NxM(N и M вводятся с клавиатуры). Найти максимальный и минимальный элементы данного массива.Произвести...

Дан двумерный массив с размерностью n, вывести все отрицательные значения
Дан двумерный массив с размерностью n, вывести все отрицательные значения.

Создать и вывести на экран двумерный массив целых чисел размерностью 3х3
1. создать и вывести на экран двумерный массив целых чисел размерностью 3х3 2. создать и вывести на экран двумерный массив вещественных...

Ввести двумерный массив целых чисел размерностью 2 на 4. Заменить все четные элементы на 0
Ввести двумерный массив целых чисел размерностью 2 на 4. Заменить все четные элементы числом 0. Буду благодарен за помощь и поддержку.

Задан двумерный массив вещественных чисел размерностью (M+1)x(N+1). В строку m+1 записать суммы элементов по с
Задан двумерный массив вещественных чисел размерностью (M+1)x(N+1). В строку m+1 записать суммы элементов по столбцам, в столбец n+1...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это дополнительная запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru