Вариант 6
--- Задача 1 ---
С одномерным массивом, состоящим из n вещественных элементов, произвести следующие операции:
1) найти минимальный элемент массива;
2) вычислить сумму элементов массива, расположенных между первым и последним положительными элементами;
3) преобразовать массив таким образом, чтобы сначала располагались все элементы, равные нулю, а потом – все остальные.
Примечание: Размеры массивов задаются именованными константами. Все операции над массивами выполняются отдельными процедурами и функциями в том порядке, в котором они описаны в задании. Элементы массивов задаются одним из двух способов: генерация случайным образом или ввод с клавиатуры. Способ заполнения массива выбирается пользователем. Реальную размерность массива программа должна
спрашивать у пользователя (в диапазоне от единицы до значения, определяемое константой).
#include
#include
using std::cin;
using std::cout;
using std::endl;
const int n=20;
void MassiveRandom(float a[],int size)
{
srand(time(0));
for(int i=0;i
a[i]=rand()%18-10;
}
void MassiveKeyboard(float a[], int size)
{
for(int i=0;i
cin>>a[i];
}
void PrintMassive(float a[], int size)
{
for(int i=0;i
cout<
}
float findmin(float a[], int size)
{
float min = a[0];
for(int i=1;i
if (min>a[i]) min=a[i];
return min;
}
float sum(float a[], int size)
{
float s=0;
int i=0;
while(a[i]<0) i++;
while(a[i]>=0)
{
s+=a[i];
i++;
}
return s;
}
void sort(float a[], int size)
{
float buf;
int flag=0;
for(int i=0;i
if (a[i]==0)
{
buf=a[flag];
a[flag]=0;
a[i]=buf;
flag++;
}
}
int main()
{
bool exit=true;
while(exit)
{
int size=n+10;
cout<<"size massive"<
while(size>n)
cin>>size;
float a[n];
cout<<"way to fill an array"<
cout<<"1.Random"<
cout<<"2.Keyboard"<
int flag=0;
//while((flag!=1)||(flag!=2))
cin>>flag;
if (flag==1) MassiveRandom(a,size);
if (flag==2) MassiveKeyboard(a,size);
PrintMassive(a,size);
float min=findmin(a,size);
cout<
float s=sum(a,size);
cout<<"Sum = "<
sort(a,size);
PrintMassive(a,size);
cout<
int x;
cin>>x;
exit=(x!=1);
}
system("pause");
return 0;
}
[pic]
--- Задача 2 ---
Дана целочисленная прямоугольная матрица. Определить сумму элементов тех строк, которые содержат хотя бы один отрицательный элемент.
Примечание: Размеры массивов задаются именованными константами. Значения элементов массивов вводятся с клавиатуры, генерируются случайным образом или инициализируются в программе (значения по умолчанию). Способ задания элементов массива выбирается пользователем. Все операции над массивами выполняются отдельными функциями.
#include
using std::cin;
using std::cout;
using std::endl;
const int n=5,m=5;
int sum(int a[], int k, int l)
{
int s=0;
for(int i=0;i
for(int j=0;j
if (a[i+j]<0)
{
for(int j=0;j
s+=a[i+j];
break;
}
return s;
}
int main()
{
bool exit=true;
while(exit)
{
int size1=n+10, size2=m+10;
cout<<"n"<
while(size1>n)
cin>>size1;
cout<<"m"<
while(size2>m)
cin>>size2;
int a[n][m];
cout<<"way to fill an array"<
cout<<"1.Random"<
cout<<"2.Keyboard"<
int flag=0;
//while((flag!=1)||(flag!=2))
cin>>flag;
if (flag==1)
{
for(int i=0;i
for(int j=0;j
a[i][j]=rand()%18-10;
}
if (flag==2)
{
for(int i=0;i
for(int j=0;j
cin>>a[i][j];
}
for(int i=0;i
{ cout<
for(int j=0;j
cout<