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