for (i=0; i<10; i++)
{if (M_PI*A[i][1]*A[i][1]/4-M_PI*A[i][0]*A[i][0]/4>a*b) {d=A[i][1];
cout<<"d="<<d<<'\n';
s=s+1;
}
}
cout<<"\ns="<<s; return 0;
system ("pause");
}
2.5.2 Обработка массивов переменной длины.
Дана матрица, состоящая из n строк и n столбцов или одномерные массивы из n элементов каждый. Составить программу для получения и вывода указанных в условии результатов и самих массивов, если изменялись какие-либо их элементы. Алгоритм любой задачи может быть составлен с использованием единственного двукратного цикла.
Заменить в матрице на 1 каждый положительный элемент, на 0 - каждый отрицательный. Для каждого столбца найти среднее арифметическое исходных значений элементов.
#include <iostream> using namespace std; int main ()
{
float A[50][50]; float sum,srednee; int i,j,n;
cout<<"Vvedite n\n";
cin>>n;
cout<<"\nVvedite n*n elementov matricy A\n"; for (i=0; i<n; i++)
for (j=0; j<n; j++) cin>>A[i][j];
for (j=0; j<n; j++)
{
sum=0;
for (i=0; i<n; i++)
{
sum=sum+A[i][j]; if (A[i][j]>0) A[i][j]=1;
else
if (A[i][j]<0) A[i][j]=0;
}
srednee=sum/n;
cout<<"srednee stolbca="<<srednee<<'\n';
}
for (i=0; i<n; i++)
6
{
for (j=0; j<n; j++) cout<<A[i][j]<<" "; cout<<'\n';
}
system ("pause");
}
2.5.3 Разработка алгоритмов и программ нисходящим способом.
Разработать программу нисходящим способом, предполагая заданной матрицу A из 5 строк и 5 столбцов или одномерные массивы указанной длины.
Кроме матрицы A, даны элементы C1,C2,...,C5. Если значения всех этих элементов заключены между заданными значениями P и T, получить значения элементов X1,X2,..., X5 по формуле:
#include <iostream> using namespace std; int main ()
{
float A[5][5],C[5],X[5]; float P,T;
int istina,i,k;
cout<<"Vvedite posledovatelnost C\n"; for (i=0; i<5; i++)
cin>>C[i]; cout<<"Vvedite P,T\n"; cin>>P>>T;
cout<<"\nVvedite 5*5 elementov matricy A\n"; for (i=0; i<5; i++)
for (k=0; k<5; k++) cin>>A[i][k]; istina=0;
for (i=0; i<5; i++) if (P<C[i])
if (C[i]<T) istina=istina+1; if (istina==5)
for (i=0; i<5; i++)
{
X[i]=0;
for (k=0; k<5; k++) X[i]=X[i]+A[i][k]; cout<<"X["<<i<<"]="<<X[i]<<'\n';
7
}
return 0;
system ("pause");
}
4.2.3 Использование имени массива как параметра функции.
Для получения результата составить функцию, входными параметрами которой являются два массива X1,X2, ...,Xn и Y1,Y2,...,Yn с заданным числом n элементов (или один из них) или матрица А из n строк и n столбцов. Кроме этого, разработать основную программу для отладки составленной функции.
Общее количество нулей в i-й и последней строке, i-м и последнем столбце матрицы A.
#include <iostream> using namespace std;
float FunctionNuli(float A[10][10], int i, int n)
{
int j,strokai,stolbeci,strokan,stolbecn,summa; strokai=0;
for (j=0; j<n; j++) if (A[i][j]==0) strokai++; stolbeci=0;
for (j=0; j<n; j++) if (A[j][i]==0) stolbeci++; strokan=0;
for (j=0; j<n; j++) if (A[n-1][j]==0) strokan++; stolbecn=0;
for (j=0; j<n; j++) if (A[j][n-1]==0) stolbecn++;
summa=strokai+stolbeci+strokan+stolbecn; if (A[i][i]==0)
summa--;
if (A[n-1][n-1]==0) summa--;
if (A[i][n-1]==0) summa--;
if (A[n-1][i]==0) summa--; return summa;
}
int main ()
{
float X[10][10],Y[10][10];
int x,y,i,j,summaX,summaY,g1,g2; cout<<"Vvedite nomer stroki g1\n"; cin>>g1;
cout<<"Vvedite x\n"; cin>>x;
cout<<"\nVvedite x*x elementov matricy X\n"; for (i=0; i<x; i++)
for (j=0; j<x; j++) cin>>X[i][j];
cout<<"Vvedite nomer stroki g2\n"; cin>>g2;
cout<<"Vvedite y\n"; cin>>y;
cout<<"\nVvedite y*y elementov matricy X\n"; for (i=0; i<y; i++)
8
for (j=0; j<y; j++) cin>>Y[i][j];
summaX=FunctionNuli(X,g1,x);
summaY=FunctionNuli(Y,g2,y);
cout<<"summaX="<<summaX<<'\n';
cout<<"summaY="<<summaY<<'\n'; system ("pause");
}
4.2.4 Использование формальных массивов в процедурах.
Составить процедуру, входными параметрами которой является матрица А из n строк и n столбцов, либо два массива B1,B2,...,Вn; C1,C2,...,Cm, либо один из них. Для проверки составленной процедуры разработать основную программу.
Значения наименьших элементов строк матрицы A. #include <iostream>
using namespace std;
void Naim(float A[10][10], int n, float Naim[10])
{float Q; int i,j;
for (i=1;i<n;i++)
{Q=A[i][0];
for (j=1;j<n;j++) if (A[i][j]<Q) Q=A[i][j]; Naim[i]=Q;
}
}
int main ()
{ float B[10][10],C[10][10],Q1[10],Q2[10]; int b,c,i,j;
cout<<"Vvedite b\n"; cin>>b;
cout<<"\nVvedite b*b elementov matricy B\n"; for (i=0; i<b; i++)
for (j=0; j<b; j++) cin>>B[i][j]; cout<<"Vvedite c\n"; cin>>c;
cout<<"\nVvedite c*c elementov matricy C\n"; for (i=0;i<c;i++)
for (j=0; j<c; j++) cin>>C[i][j]; Naim(B,b,Q1); cout<<"Q1"<<'\n'; for (i=0; i<b; i++) cout<<Q1[i]<<'\n';
9
Naim(C,c,Q2);
cout<<"Q2"<<'\n'; for (i=0; i<c; i++) cout<<Q2[i]<<'\n'; system ("pause");
}
4.2.5 Разработка подпрограммы с дальнейшим использованием ее по заданию.
Разработайте программу, создав предварительно подпрограмму (функцию или процедуру) с учетом условия задачи. Приведенные числа используйте для задания типов элементов и размеров массивов. Составить подпрограмму для определения минимального элемента матрицы. Используя данную подпрограмму, определить значение минимального элемента заданной матрицы Q и, если оно отлично от нуля, увеличить каждый элемент главной диагонали матрицы на модуль этого значения. В противном случае вывести сообщение “Элемент не равен нулю”.
#include <iostream> #include <cmath> using namespace std;
float Naim(float A[15][15], int n) { float naim;
int i,j; naim=A[0][0]; for (i=0;i<n;i++) for (j=0;j<n;j++) if (A[i][j]<naim) naim=A[i][j]; return naim;
}
int main ()
{
float Q[15][15]; float naim;
int x,i,j; cout<<"Vvedite x\n"; cin>>x;
cout<<"\nVvedite x*x elementov matricy Q\n"; for (i=0; i<x; i++)
for (j=0; j<x; j++) cin>>Q[i][j]; naim=Naim(Q,x); cout<<"naim="<<naim<<'\n'; if (naim==0)
10