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

Двумерный массив

27.01.2021, 23:42. Показов 1708. Ответов 7

Студворк — интернет-сервис помощи студентам
Я создал двумерный массив, которые может быть заполен автоматически при помощи рандома или же вручную.
Мне нужно чтобы из полученной матрицы он перемножал линию, которая состоит только из отрицательных чисел, но я не понимаю как это реализовать.


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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#include <iostream>
#include <time.h>
#include <cmath>
#include <random>
 
using namespace std;
 
void fillByYourself(int** numb, int m, int n)
{
    cout << endl;
 
    for (int i = 0; i < n; i++) {
        for (int k = 0; k < m; k++) {
            cout << "Enter element [" << i << "][" << k << "] value: ";
            cin >> numb[i][k];
        }
        cout << endl;
    }
}
 
void fillByUsageOfRandom(int** numb, int _fn, int _ln, int m, int n)
{
    random_device rand;
    default_random_engine dre(rand());
    uniform_int_distribution<int> uid(_ln, _fn);
 
    for (int i = 0; i < n; i++) {
        for (int k = 0; k < m; k++) {
            numb[i][k] = uid(dre);
        }
    }
}
 
int main()
{
    int n;
    int m;
    int type;
 
    cout << "Enter value for n: ";
    cin >> n;
    cout << "Enter value for m: ";
    cin >> m;
 
    m = abs(m);
    n = abs(n);
    int** numb = new int* [n];
    for (int i = 0; i < n; ++i) {
        numb[i] = new int[m];
    }
    cout << endl << " I will make it by myself |1|" << endl;
    cout << "I am too lazy atm do it by yourself |2|" << endl;
    cout << "I want to: ";
    cin >> type;
 
    switch (type) {
    case 1: {
        fillByYourself(numb, m, n);
        break;
    }
    default:
    case 2: {
        int _fn;
        int _ln;
        cout << endl << "Choose range of numbers" << endl;
        cout << "We will start from: ";
        cin >> _fn;
 
        cout << "and untill: ";
        cin >> _ln;
 
        _ln = abs(max(1, min(_ln, INT_MAX)));
        _fn = -abs(max(1, min(_fn, INT_MAX)));
 
        fillByUsageOfRandom
        (numb, _ln, _fn, m, n);
 
        break;
    }
    }
   
    delete[] numb;
 
    system("pause");
}
[/CPP]
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.01.2021, 23:42
Ответы с готовыми решениями:

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

Как можно вложить двумерный массив в двумерный?
Нужно написать программу перемножения двух матриц размерностью МxМ, элементы которых, матрицы размерностью КxК... Подскажите (желательно с...

Массив: Как скопировать двумерный массив в другой массив?
Как скопировать двумерный массив в другой массив?

7
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
28.01.2021, 00:30
Цитата Сообщение от JozzyKs Посмотреть сообщение
Мне нужно чтобы из полученной матрицы он перемножал линию
дайте определение линии - это строка, столбец или диагональ ?
0
0 / 0 / 0
Регистрация: 27.01.2021
Сообщений: 14
28.01.2021, 00:35  [ТС]
Как я понял под линией подразумевается строка или ряд, то есть глобально это не важно, поэтому я исхожу из того, что это строка.
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
28.01.2021, 00:59
Цитата Сообщение от JozzyKs Посмотреть сообщение
под линией подразумевается строка
хорошо, так и пишите - строка

сначала найдите индекс строки, содержащей только отрицательные:
C++
1
2
3
4
5
6
7
8
9
10
11
int p, f=0, idx=0;
for (int i = 0; i < n; i++) 
{
    p=0;
    for (int k = 0; k < m; k++) 
        if(numb[i][k]>=0) {p=1;break;}
    if(p==0) {f=1;idx=i;break;}                
}
 
if(f) cout << "idx=" << idx << "\n";
else cout << "such rows are absent\n";
зачем подсчитайте сумму в этой строке

строки 45,46 уберите

как-то сложно Вы вычисляете границы диапазона значений:
Цитата Сообщение от JozzyKs Посмотреть сообщение
_ln = abs(max(1, min(_ln, INT_MAX)));
        _fn = -abs(max(1, min(_fn, INT_MAX)));
это в условии было такое задание ? напишите оригинал условия задачи
0
0 / 0 / 0
Регистрация: 27.01.2021
Сообщений: 14
28.01.2021, 01:00  [ТС]
Я перевёл через переводчик условия задания так, как если начну переводить сам, тогда это займёт время(оригинал на латышском)

По составленному алгоритму Visual Studio 2013 в среде C/C + + напишите программу консоли с применением динамических двухмерных числовых Nxm в качестве массива массива (n и m вводит пользователь).

Необходимо реализовать 2 способа заполнения массива: ручное заполнение (элементы массива вводят сам пользователь) и автоматическое заполнение (элементы массива заполняются созданными числами экземпляра в диапазоне, который указывается самим пользователем). Пользователь должен иметь возможность самостоятельно выбрать один из следующих типов заполнения массива. Такой выбор может быть реализован в виде меню.

Параметры ввода/вывода массива в блок-схеме подробно описать не требуется, но можно указать один соответствующий блок, в котором можно написать, например, «Ввод Massia arr (с размерами nxm)» или «Заполнение массивного arr с целыми числами экземпляра n * m» в диапазоне [a; b]» и т.п.

6. Вычисление умножения элементов в строках массива, в которых нет положительных элементов.
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
28.01.2021, 01:27
Лучший ответ Сообщение было отмечено JozzyKs как решение

Решение

Цитата Сообщение от JozzyKs Посмотреть сообщение
Вычисление умножения элементов в строках массива
так не в строке, а в строках. я так понимаю что нужно найти произведение в каждой строке отдельно ? тогда блок нужно немного поменять:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int p, f=0;
double mult;
for (int i = 0; i < n; i++) 
{
    p=0;
    mult=1.;
    for (int k = 0; k < m; k++) 
    {
        if(numb[i][k]>=0) {p=1;break;}
        mult*=numb[i][k];
    }
    if(p==0) {f=1;cout << "row" << i+1 << ":  mult=" << mult << "\n";}                
}
 
if(f==0) cout << "such rows are absent\n";
строки 72 и 73 уберите. ввод границ ИМХО лучше сделать в самой функции

добавьте обработку ввода ошибочного числа в меню

освобождение памяти двумерного массива:
C++
1
2
3
for (int i = 0; i < n; i++)
delete[]numb[i];
delete[]numb;
Добавлено через 7 минут
поменяйте название массива на arr и названия переменных границ диапазона на a и b - как написано в условии
1
0 / 0 / 0
Регистрация: 27.01.2021
Сообщений: 14
28.01.2021, 01:29  [ТС]
Большое вам спасибо за помощь, моя голова уже расплавилась из-за беспрерывной учёбы в течений долгого времени. Это была последняя работа. Теперь я смогу отдохнуть и с новыми силами продолжить учиться.
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
28.01.2021, 01:46
JozzyKs, пожалуйста. предложенный блок можете оформить в виде функции, а функцию ввода можно так:
C++
1
2
3
4
5
6
7
void fillByYourself (int** arr, int n, int m)
{
    cout << "Enter integer array " << n << "x" << m << ":\n"; 
    for (int i = 0; i < n; i++) 
        for (int k = 0; k < m; k++)            
            cin >> arr[i][k];    
}
Добавлено через 4 минуты
вызов:
C++
1
fillByYourself(arr,n,m); // сначала n, затем m
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.01.2021, 01:46
Помогаю со студенческими работами здесь

Массив: Случайным образом заполнить двумерный массив размерностью 3х4 цифрами от -20 до 10
Помогите пожалуйста с задачей Написать программу, которая случайным образом заполняет двумерный массив размерностью 3х4 цифрами от -20...

Массив: преобразорвать двумерный массив в одномерный и отсортировать его методом пузырька
всем привет. народ помогите с прогой, конкретно с функцией sort (65 строка), она должна двухмерный массив перевести построчно в одномерный...

Чем отличаются двумерный символьный массив и массив указателей на строки
Двумерный символьный массив и массив указателей на строки. Собственно чем они отличаются? Заранее спасибо.

Массив: Как можно задать и вывести симметричный двумерный массив?
как можно задать и вывести симметричный массив

Дан двумерный массив 3х3. Получить одномерный массив из из отрицательных элементов матрицы.
Пожалуйста, помогите решить простым методом задачку, просто не могу понять смысл ее выполнения. Дан двумерный массив 3х3.Получить...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru