|
Задача 4.
Условие задачи Алгоритм работы Листинг программы Набор тестов
Условие задачи
Напишите программу для заполнения трех двумерных массивов и последующего их вывода.
Первый массив, размером m×n, заполняется данными, вводимыми с клавиатуры,
так что заполнение ведется по столбцам от последнего столбца, а внутри столбца от последней строки.
Второй массив, размером n×n, заполняется случайными числами из интервала [-20; 200]
так, что на побочной диагонали двузначные числа.
Третий массив, размером n×n, заполняется для произвольного n так же, как для n = 5.
1 2 1 4 1
1 2 3 2 4
3 2 3 3 1
1 4 2 2 2
5 1 3 1 1
Условие задачи Алгоритм работы Листинг программы Набор тестов
Алгоритм работы
- Для ввода первого массива используем цикл:
For (j=n-1;j>0;j--)
{
For (i=n-1;i>0;i--)
{
...
}
...
}
- Второй массив заполняется случайными числами из интервала [-20; 200].
Элементы побочной диагонали определяются следующим образом: (i + j) = (n + 1)
- Третий массив заполняем, начиная с побочной диагонали, сверху вниз:
Затем, заполняем диагональ параллельную побочной снизу вверх:
Организуем эту процедуру в цикл. Заполним матрицу элементами выше побочной диагонали.
Аналогично заполняем элементы ниже побочной диагонали.
Условие задачи Алгоритм работы Листинг программы Набор тестов
Листинг программы
-
#include
#include
#include
void main ()
{
int a[100][100];
int b[100][100];
int e[100][100];
int n,m,i,j,q;
cout <<"\n n=";
cin>>n;
cout <<"\n m=";
cin>>m;
//1
cout<<"\n 1" <=0;j--)
{
for (i=n-1;i>=0;i--)
{
cout <<" a[i,j]=";
cin>>a[i][j];
}
}
for (i=0;i<n;i++)
{
for (j=0;j<m;j++)
{
cout.width(5); cout <<a[i][j] <<" ";
}
cout<<endl;
}
//obnulili
for (i=0;i<n;i++)
{
for (j=0;j<m;j++)
{
a[i][j]=0;
}
}
//2
cout <<"\n 2" <<endl;
int c,d;
randomize();
for (i=0;i<n;i++)
{
for (j=0;j<n;j++)
{
b[i][j]=-20+random(221);
if( (i+j)==(n-1))
{
q=b[i][j];
while ((abs(q)<10)||(q>100))
{
q=-20+random(221);
}
b[i][j]=q;
}
}
}
//vivod 2
for (i=0;i<n;i++)
{
for (j=0;j<n;j++)
{
cout.width(5); cout <<b[i][j] <<" ";
}
cout<<endl;
}
//3
cout <<3;cout<<endl;
int k,per;
k=n-1;
i=0;
j=k;
while ((i+j)!=0 && k>0)
{
i=0;
j=k;
per=1;
while(j>=0 && i!=(k+1))
{
e[i][j]=per;
per=per+1;
i=i+1;
j=j-1;
}
i=i-2;
j=j+1;
per=1;
k=k-1;
while(i>=0 && j!=(k+1))
{
e[i][j]=per;
i=i-1;
j=j+1;
per=per+1;
}
k=k-1;
}
e[0][0]=1;
k=0;
i=k;
j=n-1;
while (i+j!=2*n && k<n)
{
i=k;
j=n-1;
per=1;
while(j>=k && i!=n)
{
e[i][j]=per;
per++;
i++;
j--;
}
i--;
j=j+2;
per=1;
k++;
while(i>=k && j!=n)
{
e[i][j]=per;
i--;
j++;
per++;
}
k++;
}
e[n-1][n-1]=1;
for(i=0;i<n;i++)
{
for (j=0;j<n;j++)
{
cout<<e[i][j]<<" ";}
cout<<endl; }
}
|
-
#include
#include
#include
void proc1(int i, int n, int m, int a[100][100])
{
int j;
if (i<n)
{
for (j=0;j<m;j++)
{
cout.width(5); cout <<a[i][j] <<" ";
}
cout<<endl;
i++;
proc1(i,n,m,a);
}
}
void proc2(int i, int n, int a[100][100],int b[100][100])
{
int j;
int q;
if (i<n)
{
for (j=0;j<n;j++)
{
b[i][j]=-20+random(221);
if( (i+j)==(n-1))
{
q=b[i][j];
while ((abs(q)<10)||(q>100))
{
q=-20+random(221);
}
b[i][j]=q;
}
}
i++;
proc2(i,n,a,b);
}
}
void proc3(int j,int i, int k, int per, int e[100][100])
{
if ((i+j)!=0 && k>0)
{
per=1;
while(j>=0 && i!=(k+1))
{
e[i][j]=per;
per=per+1;
i=i+1;
j=j-1;
}
i=i-2;
j=j+1;
per=1;
k=k-1;
while(i>=0 && j!=(k+1))
{
e[i][j]=per;
i=i-1;
j=j+1;
per=per+1;
}
k=k-1;
proc3(k,0,k,per,e);
}
}
void main ()
{
int a[100][100];
int b[100][100];
int e[100][100];
int n,m,i,j,q;
cout <<"\n n=";
cin>>n;
cout <<"\n m=";
cin>>m;
//1
cout<<"\n 1" <=0;j--)
{
for (i=n-1;i>=0;i--)
{
cout <<" a[i,j]=";
cin>>a[i][j];
}
}
i=0;
proc1(i,n,m,a);
for (i=0;i<n;i++)
{
for (j=0;j<m;j++)
{
a[i][j]=0;
}
}
//2
cout <<"\n 2" <<endl;
int c,d;
randomize();
i=0;
proc2(i,n,a,b);
for (i=0;i<n;i++)
{
for (j=0;j<n;j++)
{
cout.width(5); cout <<b[i][j] <<" ";
}
cout<<endl;
}
//3
for (i=0;i<n;i++)
{
for (j=0;j<n;j++)
{
e[i][j]=0;
}
}
cout <<3;cout<<endl;
int k,per;
k=n-1;
i=0;
j=k;
per=1;
proc3(j,i,k,per,e);
e[0][0]=1;
k=0;
i=k;
j=n-1;
while (i+j!=2*n && k<n)
{
i=k;
j=n-1;
per=1;
while(j>=k && i!=n)
{
e[i][j]=per;
per++;
i++;
j--;
}
i--;
j=j+2;
per=1;
k++;
while(i>=k && j!=n)
{
e[i][j]=per;
i--;
j++;
per++;
}
k++;
}
e[n-1][n-1]=1;
for(i=0;i<n;i++)
{
for (j=0;j<n;j++)
{
cout<<e[i][j]<<" ";
}
cout<<endl;
}
}
|
Условие задачи Алгоритм работы Листинг программы Набор тестов
Набор тестов к программе
-
n=4
m=3
a[i,j]=1
a[i,j]=2
a[i,j]=3
a[i,j]=4
a[i,j]=5
a[i,j]=6
a[i,j]=7
a[i,j]=8
a[i,j]=9
a[i,j]=1
a[i,j]=2
a[i,j]=3
1
3 8 4
2 7 3
1 6 2
9 5 1
2
54 24 160 69
31 31 46 20
164 11 170 182
34 180 189 180
3
1 1 3 1
2 2 2 3
1 3 2 1
4 1 2 1
-
n=6
m=3
a[i,j]=1
a[i,j]=2
a[i,j]=3
a[i,j]=4
a[i,j]=5
a[i,j]=6
a[i,j]=7
a[i,j]=8
a[i,j]=9
1
9 3 6
8 2 5
7 1 4
6 9 3
5 8 2
4 7 1
2
108 19 87 141 29 83
76 141 147 113 48 157
165 69 198 58 1 167
164 8 85 37 164 122
182 14 28 125 44 198
47 189 43 141 11 172
3
1 1 3 1 5 1
2 2 2 4 2 5
1 3 3 3 4 1
4 2 4 3 2 3
1 5 2 3 2 1
6 1 4 1 2 1
Автор решения: Фёдорова Татьяна
группа: 121Ми
год: 2008
Автор задачи: Гладков В.П. Курс лабораторных работ по программированию: Учебное пособие для специальностей электротехнического факультета ПГТУ/ Перм.гос.техн.ун-т.-Пермь,1998.-153с.
|