M
Maxxy
Пишу задачу и сразу ответ
Даны 2 квадратные матрицы n-го порядка. Напечатать ту из них, у которой больше сумма элементов в каком-либо столбце!
Заранее простите за кылды мылды в "cout". В общем кому надо скомпилит и посмотрит(там все зашибись)! Спасибо всем за вашу помощь,особенно "Допишите за меня код(модератор)", в смысле тому кто в скобочках. ВОТЬ <_<
КОД:
Даны 2 квадратные матрицы n-го порядка. Напечатать ту из них, у которой больше сумма элементов в каком-либо столбце!
Заранее простите за кылды мылды в "cout". В общем кому надо скомпилит и посмотрит(там все зашибись)! Спасибо всем за вашу помощь,особенно "Допишите за меня код(модератор)", в смысле тому кто в скобочках. ВОТЬ <_<
КОД:
Код:
#include <iostream.h>
void fill(int *p[], int msize, int mnum);
int mcalc (int *lm1[], int *lm2[], int cn,int msize);
void mprint (int *lm[],int mn,int msize);
void main(void)
{
int j, n, cn, nmax, **m1, **m2; // n - количество элементов в массиве, cn - номер столбца, nmax - номер искомой матрицы
n=0;
while (n < 1) { // ввод n. Запрашиваем, пока не введём число больше 0
cout << "\n ўўҐ¤ЁвҐ а §¬Ґа®бвм ¬ ваЁж: "; // строка запроса
cin >> n; // чтение введённого числа
cout << "\n"; // перевод строки
}
m1=new int *[n];
for (j = 0; j < n; j++)
{
m1[j] = new int [n];
} // определяем 1-ю квадратную матрицу nХn
fill (m1,n,1); // вызываем процедуру заполнения 1-й матрицы, куда передаём адрес матрицы, чтобы её можно было менять в теле процедуры, размен матрицы и её номер
m2=new int *[n];
for (j = 0; j < n; j++)
{
m2[j] = new int [n];
} // определяем 1-ю квадратную матрицу nХn
// определяем 2-ю квадратную матрицу nХn
fill (m2,n,2); // вызываем процедуру заполнения 2-й матрицы, куда передаём адрес матрицы, чтобы её можно было менять в теле процедуры, размен матрицы и её номер
cn=0;
while ((cn < 1) && (cn < (n-1))) { // ввод cn. Запрашиваем, пока не введём число больше 0 и не больше размера матрицы
cout << "ўўҐ¤ЁвҐ ®¬Ґа ўлзЁб«пҐ¬®Ј® бв®«Ўж : "; // строка запроса
cin >>cn; // чтение введённого числа
cout << "\n"; // перевод строки
}
if (mcalc (m1, m2, cn, n)==1) // вызываем процедуру вычисления сумм столбцов массивов. передаём адреса массивов, номер стобца и размер массивов
mprint(m1,1,n); // если процедура определила первую матрицу - вызываем процедуру вывода матрицы, передавая в неё матрицу №1, 1 и размер матрицы
else
mprint(m2,2,n); // если процедура определила вторую матрицу - вызываем процедуру вывода матрицы, передавая в неё матрицу №2, 2 и размер матрицы
}
void fill(int *p[], int msize, int mnum) // процедура заполнения массива. получаем адрес массива и его длину
{
cout << "‡ Ї®«ҐЁҐ ¬ ваЁжль" << mnum << "...\n";
for (int ir=0; ir<msize; ir++) { // цикл по строкам
for (int ic=0; ic<msize; ic++) { // цикл по столбцам
cout << "‚ўҐ¤ЁвҐ Ґ«Ґ¬Ґв ¬ ваЁжл " << mnum << " (бва®Є " << ir << ", бв®«ЎҐж " << ic << "): "; // строка запроса
cin >> p[ir][ic]; // чтение введённого числа
cout << "\n"; // перевод строки
}
}
return; // возврат
}
int mcalc (int *lm1[], int *lm2[], int cn,int msize) // процедура вычисления сумм столбцов массивов. получаем адреса массивов, номер стобца и размер массивов
{
int maxm; // номер искомой матрицы
int sum; // разность сумм столбцов 2-х матриц
sum=0;
maxm=1;
for (int ir=0; ir<msize; ir++) { // цикл подсчёта
sum+=lm1[ir][cn-1]-lm2[ir][cn-1]; // складывам разницу элементов столбцов 2- матриц
}
if (sum < 0) maxm = 2; // если разница отрицательная, значит сумма столбца 2-й матрицы (вычитаемой), больше
return maxm; // возврат, возвращаем номер матрицы с большей суммой указанного столбца
}
void mprint (int *lm[],int mn,int msize) // процедура вывода матрицы
{
cout << "‚лў®¤Ё¬ ¬ ваЁжг " << mn << "\n";
for (int ir=0; ir<msize; ir++) { // цикл по строкам
cout << "‘ва®Є ь" << ir << ":"; // вывод номера строки
for (int ic=0; ic<msize; ic++) { // цикл по столбцам
cout << lm[ir][ic] << " "; // вывод элементов строки
}
cout << "\n"; // перевод строки
}
return; // возврат
}