Сложение двух матриц - C (СИ) (72434)
Формулировка задачи:
В общем скажу сразу: обращаюсь я к вам не из-за лени, а из-за недостатка идей и соответсвенно знаний (на данном этапе). Перебробовал "добрую" кучу вариантов решения, но все четно.
Условие задачи: "Реализовать алгоритм нахождения суммы двух прямоугольный матриц размером nхm. Значение n и m определяются пользователем". Использовать можно только то, что имеется в моем варианте кода.
З.Ы. Не ругайте за неграмотность кода, только учусь =)
Листинг программы
- #include <stdio.h>
- #include <stdlib.h>
- #include <math.h>
- /* run this program using the console pauser or add your own getch, system("pause") or input loop */
- int main(int argc, char *argv[]) {
- const int n,m;
- int i,j,i1,j1,i2,j2;
- printf("Enter the size n:");
- scanf("%d",&n);
- printf("n must = m\n");
- printf("Enter 2 number of size m:");
- scanf("%d",&m);
- if(n!=m || n<0 || m<0){
- printf("ERROR");
- return 0;
- }
- int array[n][m];
- for(i=0; i<n; i++){
- for(j=0; j<m; j++){
- array[i][j] = rand()%10;
- printf("%10d",array[i][j]);
- }
- printf("\n");
- }
- printf("\n");
- for(i1=0; i1<n; i1++){
- for(j1=0; j1<m; j1++){
- array[i1][j1] = rand()%10;
- printf("%10d",array[i1][j1]);
- }
- printf("\n");
- }
- for(i2=0; i2<n; i2++){
- for(j2=0; j2<m; j2++){
- array[i2][j2]=array[i][j] + array[i1][j1];
- printf("%10d",array[i2][j2]);
- }
- printf("\n");
- }
- return 0;
- }
Решение задачи: «Сложение двух матриц»
textual
Листинг программы
- #include <iostream>
- /* run this program using the console pauser or add your own getch, system("pause") or input loop */
- #define SIZE_LINE 100
- #define SIZE_CLM 100
- void setRandArray(int*, int, int);
- void showArray(int*,int, int);
- int main(int argc, char *argv[]) {
- int array_1[SIZE_LINE][SIZE_CLM];
- int array_2[SIZE_LINE][SIZE_CLM];
- int array_Res[SIZE_LINE][SIZE_CLM];
- int n, m;
- setlocale(0, "rus");
- printf("Введите количество строк, но не больше %d n:", SIZE_LINE);
- scanf("%d", &n);
- printf("Введите количество столбцов, но не больше %d m:", SIZE_CLM);
- scanf("%d", &m);
- if (n>SIZE_LINE || m>SIZE_CLM||n <= 0 || m <= 0){
- printf("Ошибка,выход за границы");
- return 0;
- }
- setRandArray(&array_1[0][0], n, m);
- setRandArray(&array_2[0][0], n, m);
- showArray(&array_1[0][0], n, m);
- printf("\n");
- showArray(&array_2[0][0], n, m);
- printf("\n");
- for (int i = 0; i<n; i++){
- for (int j = 0; j<m; j++){
- array_Res[i][j] = array_1[i][j] + array_2[i][j];
- }
- }
- showArray(&array_Res[0][0], n, m);
- return 0;
- }
- /************************************************************/
- void setRandArray(int*p, int n, int m){
- for (int i = 0; i < n; i++)
- {
- for (int j = 0; j < m; j++)
- {
- *(p + i*SIZE_CLM + j) = rand() % 10;
- }
- }
- }
- /************************************************************/
- void showArray(int*p, int n, int m){
- for (int i = 0; i < n; i++)
- {
- for (int j= 0; j < m; j++)
- {
- printf("%10d\t", *(p + i*SIZE_CLM + j));
- }
- printf("\n");
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д