Вы находитесь на странице: 1из 6

1.

Написать программу, которая заполняет двумерный массив случайными числами, выводит


массив на экран и сортирует его по убыванию/возрастанию. По выбору пользователя
находит минимальный/максимальный элемент строки/столбца и сумму его элементов
#include <iostream>
#include <cstring>
#include <string>
#include <stdio.h>
#include <Windows.h>
#include <time.h>
#include <iomanip>
#pragma warning(disable : 4996) // отключает ошибку 4996
using namespace std;
//указатель на функцию как параметр

float sum(int a, int b)


{
return a + b;
}

float different(int a, int b)


{
return a - b;
}

float multiply(int a, int b)


{
return a * b;
}

float Devision(int a, int b)


{
return (float)a / b;
}

float operation(float (*action)(int, int), int a, int b)


{
return action(a, b);
}

int main()
{
srand(time(NULL));
int a;
int b;
float result;
int choice;
cout << "Enter a\n"; cin >> a;
cout << "Enter b\n"; cin >> b;
cout << "Enter choice\n1 - Sum\n2 - Different\n2 - Multiply\n4 - Devision\n";
cin >> choice;
switch (choice)
{
case 1:
result = operation(sum, a, b);
cout << "Sum = " << result << "\n";
break;
case 2:
result = operation(different, a, b);
cout << "Different = " << result << "\n";
break;
case 3:
result = operation(multiply, a, b);
cout << "Multiply = " << result << "\n";
break;
case 4:
result = operation(Devision, a, b);
cout << "Devision = " << result << "\n";
break;
default:
cout << "Wrong choice\n";
break;
}

//функция принимает условие

#include <iostream>
#include <cstring>
#include <string>
#include <stdio.h>
#include <Windows.h>
#include <time.h>
#include <iomanip>
#pragma warning(disable : 4996) // отключает ошибку 4996
using namespace std;
//функция принимает условие

int IsEven(int x)
{
return x % 2 == 0;
}
int IsPositive(int x)
{
return x > 0;
}

int krat(int x)
{
if (x > 0 && x % 3 == 0)
{
return x;
}
else
{
return 0;
}
}
void action(int(*condition)(int), int* mass, int n)
{
for (int i = 0; i < n; i++)
{
if (condition(mass[i]) != 0)
{
cout << mass[i] << " ";
}
}
}
int main()
{
srand(time(NULL));
int mass[] = { -5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9 };
int n = sizeof(mass) / sizeof(mass[0]); // теперь n - размерность массива
cout << "Event elements\n";
action(IsEven, mass, n);
cout << "\nPositive elemants\n";
action(IsPositive, mass, n);
cout << "\nElements >0 and kratnoe 3\n";
action(krat, mass, n);

//

#include <iostream>
#include <cstring>
#include <string>
#include <stdio.h>
#include <Windows.h>
#include <time.h>
#include <iomanip>
#pragma warning(disable : 4996) // отключает ошибку 4996
using namespace std;
//функция принимает условие

int big(int x)
{
return x > 5;
}

int Nechet(int x)
{
return x % 2 != 0;
}

void Action1(int(*condition)(int), int* mass, int size)


{
for (int i = 0; i < size; i++)
{
if (condition(mass[i]) != 0)
{
cout << mass[i] * 2 << " ";
}
}
}

void Action2(int(*condition)(int), int* mass, int size)


{
for (int i = 0; i < size; i++)
{
if (condition(mass[i]) != 0)
{
cout << mass[i] * 3 << " ";
}
}
}

int main()
{
srand(time(NULL));
int mass[] = { -5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9 };
int n = sizeof(mass) / sizeof(mass[0]); // теперь n - размерность массива
Action1(big, mass, n);
cout << "\n";
Action2(Nechet, mass, n);

}
/*программа проверяет массив и ищет элементы больше 5 и умножает на 2 и нечетные элементы,
которые умножает на 3*/

//указатель на функцию в качестве возвращаемого параметра

#include <iostream>
#include <cstring>
#include <string>
#include <stdio.h>
#include <Windows.h>
#include <time.h>
#include <iomanip>
#pragma warning(disable : 4996) // отключает ошибку 4996
using namespace std;
//указатель на функцию как возвращаемое значение

int Action1(void)
{
cout << "Action 1\n";
return 1;
}

int Action2(void)
{
cout << "Action 2\n";
return 2;
}

int Action3(void)
{
cout << "Action 3\n";
return 3;
}

int (*select(void))(void) //функция возвращает указатель на функцию


{
int choice;//выбор пользователя
int (*action[])() = { Action1, Action2, Action3 };//массив указателей
cout << "Enter action (1 ,2, 3)\n";//запрос у пользователя выбора
cin >> choice;
if (choice >= 1 && choice < 4)//если запрос правильный
{
return action[choice - 1];//возвращаем указатель на функцию из массива указателей -
1
}
else
{
return 0;//иначе возвращаем 0
}
}

int main()
{
srand(time(NULL));
int (*action)(void);//указатель на функцию
int ActionNumber;//проверочный номемр
while (true)//вечный цикл
{
action = select();//указатель получает адрес функции select
if (action == 0)//если функция select вернула 0
{
break;//работа прекращается
}
else//иначе
{
ActionNumber = action();//проверный номер получает значение, возвращаемое
функцией
cout << "Select point " << ActionNumber << "\n";//и выводим это не экран
}
}
}

//функция возвращает указатель

#include <iostream>
#include <cstring>
#include <string>
#include <stdio.h>
#include <Windows.h>
#include <time.h>
#include <iomanip>
#pragma warning(disable : 4996) // отключает ошибку 4996
using namespace std;
//указатель на функцию как возвращаемое значение

int* big(int* mass1, int* mass2, int size)//функция возвращает указатель


{
int sum1 = 0;//сумма элементов первого массива
int sum2 = 0;//сумма элементов второго массива
for (int i = 0; i < size; i++)
{
sum1 = sum1 + mass1[i];//подсчитываем суммы элементов первого
sum2 = sum2 + mass2[i];//и второго массива
}
if (sum1 > sum2)//и сравниваем. Если сумма элементов первого больше
{
return mass1;//возвращаем указатель на первый массив
}
else
{
return mass2;//иначе на второй
}
}

int most(int* mass, int size)//функция находит максимальное значение в массиве


{
int max = mass[0];
for (int i = 0; i < size; i++)
{
if (max < mass[i])
{
max = mass[i];
}
}
return max;//возвращает максимальное значение
}

int main()
{
srand(time(NULL));
int const size = 5;
int mass1[size] = { 1, 2, 3, 4, 5 };
int mass2[size] = { 2, 3, 4, 5, 6 };
int* max;//указатель на массив с максимальным кол-вом элементов
max = big(mass1, mass2,size);//записывали в max указатель на массив
cout << "Max = " << most(max, size);//передали массив в функцию поиска максимального
значения
}