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

Сформировать одномерный массив из диагональных элементов матрицы

13.06.2018, 20:21. Показов 5972. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребята,любой пример объясните хочу понять массивы и подпрограммы ,или если есть готовые примеры ,скиньте пожалуйста!

1.Дана квадратная матрица Х размером n x n. Сформировать одномерный массив Y из ее диагональных элементов. Найти сумму диагональных элементов. Оформить ввод, обработку и вывод в виде подпрограмм.
 Комментарий модератора 
П.5.16.Правил
Запрещено создавать темы с множеством вопросов во всех разделах, кроме разделов платных услуг. Один вопрос - одна тема.

2.Заданы две матрицы А и В размером 7 x 5. Вычислить элементы матрицы С, являющейся разностью двух матриц А и В, то есть cij = aij – bij. Ввод матриц А и В оформить в виде одной процедуры, вычисление матрицы С – в виде другой, вывод матриц А, В и С – в виде третьей.

3.Задана матрица А размером m x n. Найти сумму элементов каждой строки матрицы и записать эти суммы в соответствующие элементы массива В размером m. Оформить ввод и обработку матрицы в виде подпрограмм.

4.Задана матрица А размером 4 x 5. Образовать матрицу В, каждый элемент которой равен произведению соответствующего элемента матрицы A на номер строки. Оформить ввод, обработку и вывод матриц в виде подпрограмм.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.06.2018, 20:21
Ответы с готовыми решениями:

Сформировать одномерный массив из диагональных элементов матрицы. Найти след матрицы
Для заданной квадратной матрицы сформировать одномерный массив из ее диагональных элементов. Найти след матрицы, суммируя элементы...

Для заданной квадратной матрицы сформировать одномерный массив из ее диагональных элементов
Для заданной квадратной матрицы сформировать одномерный массив из ее диагональных элементов.с++

Для заданной квадратной матрицы сформировать одномерный массив из ее диагональных элементов
Для заданной квадратной матрицы сформировать одномерный массив из ее диагональных элементов. Найти след матрицы, суммируя элементы...

9
115 / 83 / 43
Регистрация: 19.01.2018
Сообщений: 484
13.06.2018, 21:00
Цитата Сообщение от Tatarin_1999 Посмотреть сообщение
1.Дана квадратная матрица Х размером n x n. Сформировать одномерный массив Y из ее диагональных элементов. Найти сумму диагональных элементов. Оформить ввод, обработку и вывод в виде подпрограмм.
Пойдем с конца, подпрограмма это та же функция которую ты реализовываешь как-то так:
C++
1
(void/int/char/bool...) funcName (int,char,string,bool...){}
Создание одномерного массива в С++ плохо тем, что можно указать только заведомо в коде его размер (то есть должно быть константное значение), но в принципе если знать сразу какая будет матрица то можно указать размер который равен одной количеству столбиков или строк (матрица же образует квадрат), но в нашем случае в два раза больше так как нужно искать две диагонали.
Для нахождение значение диагоналей нужно разбить код на 2 части, первая это поиск по главной диагонали что можно сделать простым циклом for указав примерно такое:
C++
1
for (int i = 0; i < 5; i++){Y[i] = X[i][i];}
а для поиска другой диагонали нужно будет добавить вторую переменную для указание строки, вот что получиться:
C++
1
int tmp = 5; for (int i = 0; i < 5; i++){Y[i] = X[tmp][i];}
, после чего вывести простым циклом:
C++
1
for (int i = 0; i < 5; i++){std::cout << Y[i] << '\n';}
1
0 / 0 / 1
Регистрация: 19.12.2017
Сообщений: 66
13.06.2018, 21:28  [ТС]
RostikTawer,
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
Такой вариант имеет место существовать ,если да,укажите на недочеты
 
#include <iostream>
#include <conio.h>
using namespace std;
 
int main()
{
    int n;
int temp = 0;
int summ = 0;
cout << "Kolvo elementov: \n";
cin >> n;
int * pArr = new int[n];
int ** pMatr = new int *[n];
 
    for (int i = 0; i < n; i++)
    {
        pMatr[i] = new int[n];
    }
    for (int i = 0; i < n; i++)
    {
    for (int j = 0; j < n; j++)
        {
            cout << i << " " << "stroka" << " " << j << " " << "stolb" << " :";
            cin >> temp;
            pMatr[i][j] = temp;
        }
    }
    for (int i = 0; i < n; i++)
    {
        pArr[i] = pMatr[i][i];
    }
    cout << "res Array: ";
    for (int i = 0; i < n; i++)
    {
 
        cout << pArr[i] << " ";
    }
    cout << "summ Array: ";
    for (int i = 0; i < n; i++)
    {
 
        summ += pArr[i];
}
    cout << summ;
system("PAUSE");
    return 0;
}
0
115 / 83 / 43
Регистрация: 19.01.2018
Сообщений: 484
13.06.2018, 22:22
Tatarin_1999, Главное что-бы работало, а недочеты придут со временем, ваш подход весьма хорош но только если для таких задач, а так то в больших задачах еще память нужно освобождать, но в задании ничего подобного сказано не было, так что все хорошо.
0
0 / 0 / 1
Регистрация: 19.12.2017
Сообщений: 66
13.06.2018, 23:09  [ТС]
RostikTawer, спасибо)
0
475 / 427 / 290
Регистрация: 10.03.2015
Сообщений: 1,782
14.06.2018, 00:42
Цитата Сообщение от RostikTawer Посмотреть сообщение
Создание одномерного массива в С++ плохо тем, что можно указать только заведомо в коде его размер
Это с каких таких пор только заведомо? А как же динамические массивы?

Цитата Сообщение от RostikTawer Посмотреть сообщение
так то в больших задачах еще память нужно освобождать, но в задании ничего подобного сказано не было, так что все хорошо.
Память, которую выделяешь нужно освобождать всегда, независимо от того, требуют этого в задании или
нет.
Tatarin_1999, В твоем коде куча лишних итераций и операций, которые можно сократить.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int ** pMatr = new int *[n];
 
    for (int i = 0; i < n; i++)
    {
        pMatr[i] = new int[n];
    }
    for (int i = 0; i < n; i++)
    {
    for (int j = 0; j < n; j++)
        {
            cout << i << " " << "stroka" << " " << j << " " << "stolb" << " :";
            cin >> temp;
            pMatr[i][j] = temp;
        }
    }
    for (int i = 0; i < n; i++)
    {
        pArr[i] = pMatr[i][i];
    }
Этот блок можно сократить до:
C++
1
2
3
4
5
6
7
8
9
10
11
int ** pMatr = new int *[n];
for (int i = 0; i < n; i++)
{
    pMatr[i] = new int[n];
    for (int j = 0; j < n; j++)
    {
        cout << i << " " << "stroka" << " " << j << " " << "stolb" << " :";
        cin >> pMatr[i][j];
    }
    pArr[i] = pMatr[i][i];
}
Этот аналогично:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
    cout << "res Array: ";
    for (int i = 0; i < n; i++)
    {
 
        cout << pArr[i] << " ";
    }
    cout << "summ Array: ";
    for (int i = 0; i < n; i++)
    {
 
        summ += pArr[i];
}
    cout << summ;
->
C++
1
2
3
4
5
6
7
    cout << "res Array: ";
    for (int i = 0; i < n; i++)
    {
        cout << pArr[i] << " ";
        summ += pArr[i];
    }
    cout << "summ Array: " << summ << endl;
Ну и само собой разумеющееся:
C++
1
2
3
4
for (int i = 0; i < n; i++)
    delete[]pMatr[i];
delete[]pMatr;
delete[]pArr;
0
115 / 83 / 43
Регистрация: 19.01.2018
Сообщений: 484
14.06.2018, 18:57
SuperKir,
Цитата Сообщение от SuperKir Посмотреть сообщение
Это с каких таких пор только заведомо? А как же динамические массивы?
так это динамика, обычно такие задание дают на начальных этапах где еще не учили динамическую память.
0
475 / 427 / 290
Регистрация: 10.03.2015
Сообщений: 1,782
14.06.2018, 19:45
RostikTawer, это не отменяет того факта, что:
Цитата Сообщение от RostikTawer Посмотреть сообщение
Создание одномерного массива в С++ плохо тем, что можно указать только заведомо в коде его размер
здесь написано неверное утверждение.
0
115 / 83 / 43
Регистрация: 19.01.2018
Сообщений: 484
08.07.2018, 19:02
SuperKir, я имел ввиду статического
0
475 / 427 / 290
Регистрация: 10.03.2015
Сообщений: 1,782
08.07.2018, 19:36
RostikTawer, тогда вопросов нет
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.07.2018, 19:36
Помогаю со студенческими работами здесь

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

Сформировать одномерный массив из элементов матрицы
Есть двумерный массив, 5*6 Сформировать одномерный массив, каждый элемент которого равен наибольшему по модулю элементу соответствующего...

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

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

Сформировать одномерный массив Х из элементов матрицы А...
помогите пожалуйста! никак не получается сделать основную задачу. остановился на этом варианте, но все равно не получается - записываю...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru