Решение задач на языке С++

Автор публикации:

Дата публикации:

Краткое описание: ...


Вариант 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<