C++ — Помогите найти произведение матриц в с++.


Содержание

умножение матриц — умножение матриц в C ++ с использованием динамически выделяемой памяти

Я пытаюсь написать функцию в C ++, которая умножает две матрицы A, B, которые были выделены динамически. В настоящее время я пытаюсь заставить код умножения работать, затем я попытаюсь превратить его в функцию. Прямо сейчас я получаю ошибку типа; msgstr «ошибка сегментации (ядро сброшено)». Я сузил это до части умножения моего кода, но я понятия не имею, что с ним не так. Может кто-то помочь мне, пожалуйста? Мой код показан ниже.

Решение

Во-первых, вы говорите, что правильно распределяете матрицу, но я не вижу никаких доказательств этого. Вы выделяете массив указателей и инициализируете только первый индекс. A[0] например. Это неверно Вам нужно выделить КАЖДЫЙ РЯД.

Вам нужно выделить A [0] через A [rowA — 1] ..

Далее, ваш цикл умножения (самый внутренний цикл) неверен. Так должно быть:

Итерация ColsA для этого внутреннего цикла.

Программирование на C++

Все по программированию на С++!

Программа для умножения и сложения матриц на языке программирования С++

Программа для умножения и сложения матриц на языке программирования С++

Разработать программу на С++ для работы с матрицами.
Программа должна выполнять следующие операции:
— умножение на матрицу;
— умножение на константу;
— сложение двух матриц.

Скриншот кода программы:

Код программы на языке программирования С++

Программирование на C, C# и Java

Уроки программирования, алгоритмы, статьи, исходники, примеры программ и полезные советы

ОСТОРОЖНО МОШЕННИКИ! В последнее время в социальных сетях участились случаи предложения помощи в написании программ от лиц, прикрывающихся сайтом vscode.ru. Мы никогда не пишем первыми и не размещаем никакие материалы в посторонних группах ВК. Для связи с нами используйте исключительно эти контакты: vscoderu@yandex.ru, https://vk.com/vscode

Алгоритм умножения матриц на языке C

В данной статье мы рассмотрим алгоритм умножения матриц и приведем его код на языке программирования С.

Умножать можно такие прямоугольные матрицы, в которых число столбцов первой матрицы равно числу строк во второй (про такие матрицы говорят, что их форма согласована), то есть их размерность должна быть следующая: матрица A[m, n], матрица B[n, q].

В результате умножения получится матрица C[m, q]:

элементы которой находятся по формуле:

На языке C алгоритм умножения матриц может быть записан следующим образом:

Умножение матриц (статических и динамических)

Нужно создать метод для умножения двух матриц, но чтоб он [метод] был похож как для динамических, так и для статических матриц. Чтобы матрицы передавались в него в качестве аргументов, а не были бы заданы константно.


2 ответа 2

Я вижу несколько вариантов.
Вариант 1. Перегрузка функций. У вас будет две функции с разными параметрами, но одинаковым именем.
Вариант 2. Шаблонная функция.
Вариант 3. Класс-оболочка для матрицы — абстрактный класс для доступа к элементам матрицы, и наследники для статической и динамической матрицы. Произведение реализуется опосредованно через эту оболочку.

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

Выбирайте :) Когда выберите — можно будет заняться реализацией.

статическую матрицу тоже можно подавать в качестве аргумента: указатель на матрицу и её размеры например, вот так

Всё ещё ищете ответ? Посмотрите другие вопросы с метками c++ массивы или задайте свой вопрос.

Похожие

Подписаться на ленту

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

дизайн сайта / логотип © 2020 Stack Exchange Inc; пользовательское содержимое попадает под действие лицензии cc by-sa 4.0 с указанием ссылки на источник. rev 2020.11.13.35428

Пошаговое руководство. Умножение матриц Walkthrough: Matrix Multiplication

Это пошаговое руководство демонстрирует использование C++ AMP для ускорения выполнения Перемножение матриц. This step-by-step walkthrough demonstrates how to use C++ AMP to accelerate the execution of matrix multiplication. Появится два алгоритма и один без заполнения с мозаичное заполнение. Two algorithms are presented, one without tiling and one with tiling.

Предварительные требования Prerequisites

Перед началом работы Before you start:

Убедитесь, что вы используете по крайней мере Windows 7 или Windows Server 2008 R2. Make sure that you are running at least Windows 7, or Windows Server 2008 R2.

Создание проекта To create the project

Инструкции по созданию нового проекта зависит от установленной версии Visual Studio. Instructions for creating a new project vary depending on which version of Visual Studio you have installed. Убедитесь, что у вас есть выбора версий в верхнем левом углу задайте правильную версию. Make sure you have the version selector in the upper left set to the correct version.

Чтобы создать проект в Visual Studio 2020 г. To create the project in Visual Studio 2020

В строке меню выберите файл > New > проекта открыть создайте новый проект диалоговое окно. On the menu bar, choose File > New > Project to open the Create a New Project dialog box.

В верхней части диалогового окна, задайте языка для C++, задайте платформы для Windowsи задайте типпроекта для консоли. At the top of the dialog, set Language to C++, set Platform to Windows, and set Project type to Console.

В отфильтрованном списке типов проектов выберите пустой проект выберите Далее. From the filtered list of project types, choose Empty Project then choose Next. На следующей странице введите MatrixMultiply в имя поле для указания имени проекта и указать расположение проекта, при необходимости. In the next page, enter MatrixMultiply in the Name box to specify a name for the project, and specify the project location if desired.

Выберите создать кнопку, чтобы создать клиентский проект. Choose the Create button to create the client project.

В обозревателе решений, откройте контекстное меню для исходные файлы, а затем выберите добавить > новый элемент. In Solution Explorer, open the shortcut menu for Source Files, and then choose Add > New Item.

В Добавление нового элемента выберите файл C++ (.cpp), введите MatrixMultiply.cpp в имя поле, а затем выберите Добавление кнопки. In the Add New Item dialog box, select C++ File (.cpp), enter MatrixMultiply.cpp in the Name box, and then choose the Add button.

Цукерберг рекомендует:  Микроразметка, Schema.org и практическая польза


Создание проекта в Visual Studio 2020 или 2015 To create a project in Visual Studio 2020 or 2015

В строке меню в Visual Studio, выберите файл > New > проекта. On the menu bar in Visual Studio, choose File > New > Project.

В разделе установленные в области «Шаблоны» выберите Visual C++. Under Installed in the templates pane, select Visual C++.

Выберите пустой проект, введите MatrixMultiply в имя поле, а затем выберите ОК кнопки. Select Empty Project, enter MatrixMultiply in the Name box, and then choose the OK button.

Нажмите кнопку Далее. Choose the Next button.

В обозревателе решений, откройте контекстное меню для исходные файлы, а затем выберите добавить > новый элемент. In Solution Explorer, open the shortcut menu for Source Files, and then choose Add > New Item.

В Добавление нового элемента выберите файл C++ (.cpp), введите MatrixMultiply.cpp в имя поле, а затем выберите Добавление кнопки. In the Add New Item dialog box, select C++ File (.cpp), enter MatrixMultiply.cpp in the Name box, and then choose the Add button.

Умножение без заполнения Multiplication without tiling

В этом разделе описано рассмотрим умножения двух матриц, А и Б, которые определяются следующим образом: In this section, consider the multiplication of two matrices, A and B, which are defined as follows:

Объект является матрицу 3 x 2, а B — матрица 2 x 3. A is a 3-by-2 matrix and B is a 2-by-3 matrix. Результат умножения A, B является следующая матрица 3 x 3. The product of multiplying A by B is the following 3-by-3 matrix. Продукт вычисляется путем умножения строки типа по столбцам B поэлементно. The product is calculated by multiplying the rows of A by the columns of B element by element.

Для умножения без использования C++ AMP To multiply without using C++ AMP

Откройте MatrixMultiply.cpp и используйте следующий код, чтобы заменить существующий код. Open MatrixMultiply.cpp and use the following code to replace the existing code.

Алгоритм представляет собой простую реализацию, определения Перемножение матриц. The algorithm is a straightforward implementation of the definition of matrix multiplication. Он не использует любые алгоритмы параллельных или потоками для уменьшения времени вычислений. It does not use any parallel or threaded algorithms to reduce the computation time.

В строке меню выберите Файл > Сохранить все. On the menu bar, choose File > Save All.

Выберите F5 сочетания клавиш, чтобы начать отладку и проверьте, правильно ли выходные данные. Choose the F5 keyboard shortcut to start debugging and verify that the output is correct.

Выберите ввод выход из приложения. Choose Enter to exit the application.

Умножение с помощью C++ AMP To multiply by using C++ AMP

В MatrixMultiply.cpp, добавьте следующий код перед main метод. In MatrixMultiply.cpp, add the following code before the main method.

AMP код напоминает код, не AMP. The AMP code resembles the non-AMP code. Вызов parallel_for_each запускает один поток для каждого элемента в product.extent и заменяет for циклы для строк и столбцов. The call to parallel_for_each starts one thread for each element in product.extent , and replaces the for loops for row and column. Значение ячейки в строке и столбце доступен в idx . The value of the cell at the row and column is available in idx . Можно получить доступ к элементы array_view объекта, либо при помощи [] оператор и переменная индекса, или () оператор и переменных строк и столбцов. You can access the elements of an array_view object by using either the [] operator and an index variable, or the () operator and the row and column variables. В этом примере оба метода. The example demonstrates both methods. array_view::synchronize Метод копирует значения product переменной обратно productMatrix переменной. The array_view::synchronize method copies the values of the product variable back to the productMatrix variable.

Добавьте следующий include и using инструкций в верхней части MatrixMultiply.cpp. Add the following include and using statements at the top of MatrixMultiply.cpp.

Изменить main метод для вызова MultiplyWithAMP метод. Modify the main method to call the MultiplyWithAMP method.

Нажмите клавишу Ctrl+F5 сочетания клавиш, чтобы начать отладку и проверьте, правильно ли выходные данные. Press the Ctrl+F5 keyboard shortcut to start debugging and verify that the output is correct.

Нажмите клавишу пробел выход из приложения. Press the Spacebar to exit the application.

Умножение с мозаичное заполнение Multiplication with tiling

Мозаичное заполнение — это метод, в котором секционировать данные на подмножества одинакового размера, которые известны как плитки. Tiling is a technique in which you partition data into equal-sized subsets, which are known as tiles. При использовании мозаичного заполнения, изменить три вещи. Three things change when you use tiling.


Можно создать tile_static переменные. You can create tile_static variables. Доступ к данным в tile_static пространство может быть много раз быстрее, чем доступ к данным в глобальной области. Access to data in tile_static space can be many times faster than access to data in the global space. Экземпляр tile_static переменная создается для каждого элемента мозаики, и все потоки в мозаике имеют доступ к этой переменной. An instance of a tile_static variable is created for each tile, and all threads in the tile have access to the variable. Основное преимущество мозаичного замощения — выигрыш в производительности из-за tile_static доступа. The primary benefit of tiling is the performance gain due to tile_static access.

Можно вызвать tile_barrier::wait метода все потоки в одну плитку в указанной строке кода. You can call the tile_barrier::wait method to stop all of the threads in one tile at a specified line of code. Не гарантирует порядок, в котором будут выполняться потоки, только что все потоки в одну плитку останавливается на вызове tile_barrier::wait продолжения выполнения. You cannot guarantee the order that the threads will run in, only that all of the threads in one tile will stop at the call to tile_barrier::wait before they continue execution.

У вас есть доступ к индексу потока по отношению к всего array_view объекта и индексу относительно плитки. You have access to the index of the thread relative to the entire array_view object and the index relative to the tile. С помощью локального индекса, может сделать ваш код проще читать и отлаживать. By using the local index, you can make your code easier to read and debug.

Чтобы воспользоваться преимуществами мозаичного заполнения в Перемножение матриц, необходимо разделить матрицы плитки алгоритм, а затем скопировать данные плиток в tile_static переменные для более быстрого доступа. To take advantage of tiling in matrix multiplication, the algorithm must partition the matrix into tiles and then copy the tile data into tile_static variables for faster access. В этом примере матрицы разделена на submatrices одинакового размера. In this example, the matrix is partitioned into submatrices of equal size. Продукт находится путем умножения submatrices. The product is found by multiplying the submatrices. Две матрицы и продуктов в этом примере являются: The two matrices and their product in this example are:

Матрицы секционируются в матрицах четыре 2 x 2, которые определяются следующим образом: The matrices are partitioned into four 2×2 matrices, which are defined as follows:

Произведение A и B теперь могут быть записаны и вычисляется следующим образом: The product of A and B can now be written and calculated as follows:

Цукерберг рекомендует:  Отзывы о профессии Системный администратор

Так как матрицы a через h матрицы 2 x 2, все продукты и суммы значений их также матрицы 2 x 2. Because matrices a through h are 2×2 matrices, all of the products and sums of them are also 2×2 matrices. Также следует, что продукт A и B является матрицу 4 x 4 должным образом. It also follows that the product of A and B is a 4×4 matrix, as expected. Чтобы быстро проверить алгоритм, вычисления значения параметра элемент в первой строке и первом столбце в продукте. To quickly check the algorithm, calculate the value of the element in the first row, first column in the product. В примере, который будет иметь значение элемента в первой строке и первом столбце ae + bg . In the example, that would be the value of the element in the first row and first column of ae + bg . Вам только нужно рассчитать первый столбец, первая строка ae и bg каждого термина. You only have to calculate the first column, first row of ae and bg for each term. Это значение для ae является (1 * 1) + (2 * 5) = 11 . That value for ae is (1 * 1) + (2 * 5) = 11 . Значение для bg является (3 * 1) + (4 * 5) = 23 . The value for bg is (3 * 1) + (4 * 5) = 23 . Конечное значение будет 11 + 23 = 34 , которое является верным. The final value is 11 + 23 = 34 , which is correct.

Для реализации этого алгоритма, код: To implement this algorithm, the code:

Использует tiled_extent вместо объекта extent объекта в parallel_for_each вызова. Uses a tiled_extent object instead of an extent object in the parallel_for_each call.

Использует tiled_index вместо объекта index объекта в parallel_for_each вызова. Uses a tiled_index object instead of an index object in the parallel_for_each call.

Создает tile_static переменные для хранения submatrices. Creates tile_static variables to hold the submatrices.

Использует tile_barrier::wait метод потоков для расчета продуктов submatrices. Uses the tile_barrier::wait method to stop the threads for the calculation of the products of the submatrices.

Умножение с помощью AMP и мозаичного заполнения To multiply by using AMP and tiling

В MatrixMultiply.cpp, добавьте следующий код перед main метод. In MatrixMultiply.cpp, add the following code before the main method.

В этом примере значительно отличается от примера без заполнения. This example is significantly different than the example without tiling. В коде используются следующие основные действия: The code uses these conceptual steps:

Копировать элементы плитки [0,0] a в locA . Copy the elements of tile[0,0] of a into locA . Копировать элементы плитки [0,0] b в locB . Copy the elements of tile[0,0] of b into locB . Обратите внимание, что product выполняется мозаичное заполнение, не a и b . Notice that product is tiled, not a and b . Таким образом, использовать глобальный индексы для доступа к a, b , и product . Therefore, you use global indices to access a, b , and product . Вызов tile_barrier::wait важно. The call to tile_barrier::wait is essential. Останавливает все потоки в плитке до оба locA и locB заполняются. It stops all of the threads in the tile until both locA and locB are filled.

Умножьте locA и locB и помещать результаты в product . Multiply locA and locB and put the results in product .

Копировать элементы плитки [0,1] a в locA . Copy the elements of tile[0,1] of a into locA . Копировать элементы плитки [1,0] b в locB . Copy the elements of tile [1,0] of b into locB .

Умножьте locA и locB и добавить их к результатам, которые уже product . Multiply locA and locB and add them to the results that are already in product .

Умножение плитки [0,0] завершена. The multiplication of tile[0,0] is complete.

Повторите для других трех плиток. Repeat for the other four tiles. Имеется индексирование не специально для плитки, а потоки могут выполняться в любом порядке. There is no indexing specifically for the tiles and the threads can execute in any order. Так как каждый поток выполняется, tile_static переменные создаются для каждой плитки соответствующим образом и вызов tile_barrier::wait управляет выполнением программы. As each thread executes, the tile_static variables are created for each tile appropriately and the call to tile_barrier::wait controls the program flow.

Внимательно просмотреть алгоритм, обратите внимание, что каждый submatrix загружается в tile_static памяти дважды. As you examine the algorithm closely, notice that each submatrix is loaded into a tile_static memory twice. Эта передача данных времени. That data transfer does take time. Тем не менее когда данные находятся в tile_static памяти, доступ к данным осуществляется гораздо быстрее. However, once the data is in tile_static memory, access to the data is much faster. Поскольку вычисление продуктов требует повторного доступа к значениям в submatrices, является увеличение общей производительности. Because calculating the products requires repeated access to the values in the submatrices, there is an overall performance gain. Для каждого алгоритма службы «Экспериментирование» необходим для поиска оптимального алгоритма и размер плитки. For each algorithm, experimentation is required to find the optimal algorithm and tile size.

В примерах не AMP и не плитки, каждый элемент A и B выполняется четыре раза из глобальной памяти, для которого требуется вычислить продукта. In the non-AMP and non-tile examples, each element of A and B is accessed four times from the global memory to calculate the product. В примере плитки, каждому элементу осуществляется дважды из глобальной памяти и четыре раза tile_static памяти. In the tile example, each element is accessed twice from the global memory and four times from the tile_static memory. Это не прирост производительности. That is not a significant performance gain. Тем не менее если A и B были 1024 x 1024 матрицы и размер мозаики были 16, отсутствует прирост производительности. However, if the A and B were 1024×1024 matrices and the tile size were 16, there would be a significant performance gain. В этом случае каждый элемент будет необходимо скопировать в tile_static памяти только 16 раз доступ к ним из tile_static памяти раз на 1024. In that case, each element would be copied into tile_static memory only 16 times and accessed from tile_static memory 1024 times.

Измените основной метод для вызова MultiplyWithTiling метод, как показано. Modify the main method to call the MultiplyWithTiling method, as shown.


Нажмите клавишу Ctrl+F5 сочетания клавиш, чтобы начать отладку и проверьте, правильно ли выходные данные. Press the Ctrl+F5 keyboard shortcut to start debugging and verify that the output is correct.

Нажмите клавишу пространства панели, чтобы выйти из приложения. Press the Space bar to exit the application.

Произведение матриц в СИ (C++)

но есть варианты срабатывающие в обоих языках

делаешь массив нужного типа (int, float, double. что там за элементы?)
навроде
int mymatr[ A][ B]; для матрицы из целых

делаешь массив нужного типа
double vect[ B]; для вектора из значений с плавающей точкой

набиваешь их значениями (например и в С и в C++ есть функция scanf() )

а дальше обычным умножением вектора на матрицу.
2 вложенных один в другой цикла
for(i=0;i

как наваяешь свою попытку выложи её тут в подраздел «программирование»
там подскажут что подправлять
———
доплевалась)) прозевала что » Остальные ответы

Матрицы в Си

Матрица это набор объектов, которые хранятся в виде таблицы. У каждой матрицы есть имя, единый тип всех ее объектов.

Обявление матрицы в Си

Также как и переменные матрицу в Си необходимо объявить перед тем как с ней работать, необходимо указать ее тип, ее имя , количество строк -1 и количество столбцов -1. Нумерация столбцов и строк идет с 0.

Цукерберг рекомендует:  Основы UXUI. Базовые знания по созданию интерфейсов

Тип матрицы Имя [количество строк-1][количество столбцов-1];

int A[8][9] ; / /объявляет целочисленную матрицу с именем A , у которой 9 строк и 10 столбцов

После объявления матрицы, с ее элементами можно работать. Чтобы обратитсья к элементу матрицы нужно указать имя матрицы в первых квадратных скобках указать номер строки, во вторых квадратных скобках указать номер столбца.

A[0][1]=10; // элементу матрицы с номер строки 0 и столбца 1 присваивается значение 10

printf(“%d”, A[0][1]);// выводит на экран элемент матрицы с номер строки 0 и столбца 1

Задание матрицы в Си

Чтобы работать с матрицей в Си, необходимо присвоить начальные значения всех ее элементов.

Для работы со всеми элементами матрицы используется вложенные циклы for

В главном цикле “пробегаем” по всем строкам, а во вложенном “пробегаем” по всем столбцам для каждой строки.

// “пробегаемся” по всем строкам. Нумерация строк с 0.

// вложенный цикл, “пробегаемся” по всем столбцам для Нумерация столбцов с 0.


…Имя матрицы [i][j]…// работаем с элементом матрицы с номером строки i и номером столбца j

Пример программы 22. Программа задаёт целочисленную матрицу размером 10 на 10 и заполняет ее случайными числами в диапазоне, который укажет пользователь и выводит ее на экран.

int a[9][9]; // объявление матрицы 10 на 10

int i,j; // счетчики циклов

int range;// диапазон в котором присваиваются значения элементов матрицы

//ввод диапазона случайных чисел

printf(«введите диапазон заполнения\n»);

// пробегаем по всем строкам

// пробегаем по всем столбцам для данной строки i

a[i][j]=rand() % range+1; // прсиваиваем элементу матрицы a с номером строки i и номер столбца j случайного значения в диапазоне от 0 до 9

// пробегаем по всем строкам

// пробегаем по всем столбцам для данной строки i

// переход на следующую строку

При выводе матрицы на экран в Си для каждой строки мы совершаем переход на следующую строку с помощью оператора printf(«\n»);

Ввод матрицы в Си с помощью клавиатуры

Пример программы 23. Задаётся матрица размера 3 на 3 с помощью клавиатуры и ищется ее максимальный элемент. Он выводится на экран. При поиске максимального элемента, мы создаем специальную переменную max и присваиваем ей значение элемента a[0][0]. Пробегаем по всем элементам матрицы с помощью вложенного цикла, сравнивая текущий элемент с максимумом, если текущий элемент больше максимума, то максимуму присваивается значение этого элемента.

int a[2][2]; // объявление матрицы 3 на 3

int i,j; // счетчики циклов

int max; // переменная для хранения максимального элемента матрицы

// пробегаем по всем строкам

// пробегаем по всем столбцам для данной строки i

// ввод текущего элемента матрицы с клавиатуры

printf(«Введите элемент матрицы [%d][%d]», i, j);

// переход на следующую строку

// пробегаем по всем строкам


// пробегаем по всем столбцам для данной строки i

// переход на следующую строку

// пробегаем по всем строкам

// пробегаем по всем столбцам для данной строки i

// сравниваем текущий элемент массива с максимумом

// вывод максимального элемента

printf («Максимальный элемент массива %d», max);

Полезно почитать по теме массивы и матрицы в си
Массивы в си
Игра на си Крестики Нолики

C++ — Помогите найти произведение матриц в с++.

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

Задача 2

Написать программу, которая выводит таблицу перевода расстояний в дюймах в сантиметры для значений от n до m дюймов (1 дюйм = 2,54 см)

Задача 3

Начав тренировки, спортсмен в первый день пробежал М км. Каждый день он увеличивал дневную норму на Р% нормы предыдущего дня. В какой день впервые спортсмен пробежит более K км?

Задача 4

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

Задача 5

Написать программу, которая выводит таблицу умножения числа N в интервале от L до K. Ввод N, L,K выполнять с клавиатуры.

Задача 6

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

Задача 7

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

Задача 8

Клиент оформил вклад на m тысяч рублей в банке под k% годовых. Через сколько лет сумма вклада превысит s тысяч рублей, если за это время клиент не будет брать деньги со счета.


Задача 9

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

Задача 10

Написать программу, которая создает одномерный массив из N целых чисел. Количество чисел в массиве и сами числа вводятся с клавиатуры. Ввести число L. Все элементы массива больше L заменить на число 5. Вывести на экран элементы введенного массива и полученного.

Задача 11

Бизнесмен взял ссуду m тысяч рублей в банке под k% годовых. Рассчитать его долг через N лет , если за это время он не будет отдавать долг?

Задача 12

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

Матрица

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

Инициализация такого массива объявляется строкой

То есть, если у нас есть матрица с 3 строками и 4 столбцами, заполненная целыми числами, то объявить ее можно строкой

После объявления, такой двумерный массив пуст, и чтобы его заполнить, как и в случае с массивом, нужно использовать цикл for.

Теперь каждый элемент матрицы равен сумме строки и столбца. В программе добавляется еще 2 чтобы скомпенсировать то, что отсчет в массиве ведется с 0-ого элемента, а не с 1-ого.

Такого же результата можно достичь с помощью следующего кода:

Так как двумерный массив это, по факту, массив, у которого каждый элемент является массивом, то можно пойти еще дальше и сделать 3-мерный и более массив. Объявление и заполнение такого массива ничем принципиально не отличается, просто с каждым уровнем вложения добавляется еще один параметр размера и один цикл. Например,

Произведение матриц в СИ (C++)

Здесь легко и интересно общаться. Присоединяйся!

раз плюнула, глянув ещё раз плюнула ))
«СИ» — это «С»
а «С++»(оно же «Си-Плюс-плюс», «плюсЫ») — это другое(включает и наследует «С», однако сильно другое).

но есть варианты срабатывающие в обоих языках

делаешь массив нужного типа (int, float, double. что там за элементы?)
навроде
int mymatr[ A][ B]; для матрицы из целых

делаешь массив нужного типа
double vect[ B]; для вектора из значений с плавающей точкой

набиваешь их значениями (например и в С и в C++ есть функция scanf() )

а дальше обычным умножением вектора на матрицу.
2 вложенных один в другой цикла
for(i=0;i

как наваяешь свою попытку выложи её тут в подраздел «программирование»
там подскажут что подправлять
———
доплевалась)) прозевала что «

Понравилась статья? Поделиться с друзьями:
Все языки программирования для начинающих