Задача 2.
Условие задачи Алгоритм работы Листинг программы Набор тестов
Условие задачи
В массиве n x n выбрать такую диагональ, параллельную главной, сумма элементов которой была бы максимальной.
Условие задачи Алгоритм работы Листинг программы Набор тестов
Алгоритм работы
Каждой диагонали, параллельной главной, присваивается номер.
Далее у каждой диагонали считается сумма, отыскивается максимальная.
Найдя максимальную сумму, узнаем, под каким номером числится данная диагональ,
и выводим её элементы в строчку.
Условие задачи Алгоритм работы Листинг программы Набор тестов
Листинг программы
-
#include
#include
#include
void main()
{
int n,i,j,k,smax,s,nom,vivod,a[100][100];
cout<<"\n";
cout<<"Введите n:" ;
cin>>n;
if (n==0)
cout<<"Net elementov v massive";
else
{
for(i=0; i<<n; i++)
{
for(j=0; j<<n; j++)
{
a[i][j]=random(51)-25;
}
}
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
cout.width(4); cout<<a[i][j];
}
cout<<"\n";
cout<<"\n";
}
if (n==1) cout<<a[0][0];
else
{
i=0;
j=n-1;
smax=a[i][j];
nom=n-1;
vivod=nom;
j--;
while (i!=j)
{
s=0;
k=j;
while (k!=n)
{
s=s+a[i][k];
i++;
k++;
}
j--;
i=0;
nom--;
if (s>smax)
{
smax=s;
vivod=nom;
}
}
i=n-1;
j=0;
nom=n*2-2;
if (a[i][j]>smax)
{
smax=a[i][j];
vivod=nom;
}
i--;
while (i!=j)
{
s=0;
k=i;
while (k!=n)
{
s=s+a[k][j];
j++;
k++;
}
i--;
j=0;
nom--;
if (s>smax)
{
smax=s;
vivod=nom;
}
}
cout<<"\n";
if (vivod<n)
{
j=vivod;
i=0;
while (j!=n)
{
cout.width(4); cout<<a[i][j];
i++;
j++;
}
}
if (vivod>=n)
{
i=vivod-n+1;
j=0;
while (i!=n)
{
cout.width(4); cout<<a[i][j]; cout<<' ';
i++;
j++;
}
}
cout<<"\n";
}
}
}
|
-
#include
#include
#include
void main()
{
int n,i,j,k,smax,s,nom,vivod,a[100][100];
cout<<"\n";
cout<<"Введите n:" ;
cin>>n;
if (n==0) cout<<"Net elementov v massive";
else
{
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
a[i][j]=random(51)-25;
}
}
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
cout.width(4); cout<<a[i][j];
}
cout<<"\n";
cout<<"\n";
}
if (n==1) cout<<a[0][0];
else
{
i=0;
j=n-1;
smax=a[i][j];
nom=n-1;
vivod=nom;
j--;
while (i!=j)
{
s=0;
k=j;
while (k!=n)
{
s=s+a[i][k];
i++;
k++;
}
j--;
i=0;
nom--;
if (s>smax)
{
smax=s;
vivod=nom;
}
}
i=n-1;
j=0;
nom=n*2-2;
if (a[i][j]>smax)
{
smax=a[i][j];
vivod=nom;
}
i--;
while (i!=j)
{
s=0;
k=i;
while (k!=n)
{
s=s+a[k][j];
j++;
k++;
}
i--;
j=0;
nom--;
if (s>smax)
{
smax=s;
vivod=nom;
}
}
cout<<"\n";
if (vivod=n)
{
i=vivod-n+1;
j=0;
while (i!=n)
{
cout.width(4); cout<<a[i][j]; cout<<' ';
i++;
j++;
}
}
cout<<"\n";
}
}
}
|
Условие задачи Алгоритм работы Листинг программы Набор тестов
Набор тестов к программе
Автор решения: Груздева Илона
группа: 121Ми
год: 2008
Автор задачи: Гладков В.П. Курс лабораторных работ по программированию: Учебное пособие для специальностей электротехнического факультета ПГТУ/ Перм.гос.техн.ун-т.-Пермь,1998.-153с.
|