Сложение двух матриц - 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");
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.75 из 5
Похожие ответы