#include <iostream>
#define _USE_MATH_DEFINES
#include <math.h>
#include <iomanip>
#include <algorithm>
using namespace std;
void task7()
{
//7. Заполнить массив из восьми элементов таким образом, чтобы значения элементов при просмотре массива слева направо образовывали:
//а) убывающую последовательность;
//б) возрастающую последовательность
int A[8], buf;//buf - переменная для временного хранения
cout << "Массив из восьми случайных элементов:\n";
for (int i = 0; i < 8; i++)
{
A[i] = rand() % 41;
cout << A[i] << " ";
}
cout << "\n\nУбывающая последовательность:\n";
for (int i = 1; i < 8; i++)
{
for (int j = 1; j < 8 - i + 1; j++)
{
if (A[j - 1] < A[j])
{
buf = A[j - 1];
A[j - 1] = A[j];
A[j] = buf;
}
}
}
for (int i = 0; i < 8; i++)
{
cout << A[i] << " ";
}
cout << "\n\nВозрастающая последовательность:\n";
for (int i = 1; i < 8; i++)
{
for (int j = 1; j < 8 - i + 1; j++)
{
if (A[j - 1] > A[j])
{
buf = A[j - 1];
A[j - 1] = A[j];
A[j] = buf;
}
}
}
for (int i = 0; i < 8; i++)
{
cout << A[i] << " ";
}
}
void task42()
{
//42. Пригодность детали оценивается по размеру В, который должен лежать в интервале (А – δ, А + δ).
//Определить, имеются ли в партии из N деталей бракованные.
//Если да, то подсчитать их количество, в противном случае выдать отрицательный ответ.
int sizea = 0, gamma = 0, list = 0, j = 0;
cout << "введите размер A :" << endl;
while (sizea == 0)
{
if (!(cin >> sizea))
{
cin.clear();
cin.ignore(65535, '\n');
cout << "неправильный ввод" << endl;
}
}
cout << "введите отклонение g за пределами которого значения будут считаться бракованными :" << endl;
while (gamma == 0)
{
if (!(cin >> gamma))
{
cin.clear();
cin.ignore(65535, '\n');
cout << "неправильный ввод" << endl;
}
}
cout << "введите количество деталей в партии" << endl;
while (list == 0)
{
if (!(cin >> list))
{
cin.clear();
cin.ignore(65535, '\n');
cout << "неправильный ввод" << endl;
}
}
int *sizeb = new int[sizea];
for (int i = 0; i < list; i++)
{
sizeb[i] = sizea + rand() % gamma + 5;
if ((sizeb[i] <= (sizea - gamma)) | (sizeb[i] >= (sizea + gamma)))
{
j++;
}
cout << sizeb[i]<< endl;
}
cout << "количество бракованных деталей : " << j << endl;
}
void task77()
{
// 77. Дана непустая последовательность целых чисел, оканчивающаяся числом –1.
//Определить, есть ли в последовательности хотя бы одно число, кратное 7.
//В случае положительного ответа определить порядковый номер первого из таких чисел.
int num[50], i=0, j = 0, o = 1;
for (;i < 49; i++)
{
num[i] = 30 + rand() % 30;
}
num[49] = -1;
for (i = 0; i < 50; i++)
{
cout << num[i] << endl;
}
cout << "Порядковые номера елементов кратные 7 : ";
for (i = 0; i < 50; i++)
{
if (num[i] % 7 == 0)
{
cout << i+1 <<", ";
}
}
cout << endl;
}
void task112()
{
//112. В одномерный массив целых чисел на место минимального элемента вставить максимальный элемент.
const int count = 10;
int arr[count];
for (int i = 0; i < count; i++)
{
arr[i] = rand() % 1000;
cout << arr[i] << " ";
}
cout << endl;
int min = 0, max = 0;
for (int i = 0; i < count; i++)
{
if (arr[i] < arr[min])
min = i;
if (arr[i] > arr[max])
max = i;
}
int tmp = arr[max];
arr[max] = arr[min];
arr[min] = tmp;
for (int i = 0; i < count; i++)
{
cout << arr[i] << " ";
}
cout << endl;
}
void task147()
{
//147.Дан массив целых чисел.Найти в этом массиве минимальный элемент m и максимальный элемент М.
//Получить в порядке возрастания все целые числа из интервала(m; М)
int* arr; // указатель для выделения памяти под массив
int size = 0; // размер массива
// Ввод количества элементов массива
cout << "введите количество элементов масива : ";
while (size <= 0)
{
if (!(cin >> size))
{
cin.clear();
cin.ignore(65535, '\n');
cout << "неправильный ввод" << endl;
}
}
arr = new int[size]; // выделение памяти под массив
// заполнение массива
for (int i = 0; i < size; i++) {
arr[i] = rand() % 10;
cout << "arr[" << i + 1 << "] = "<< arr[i]<<endl;
}
int temp; // временная переменная для обмена элементов местами
// Сортировка массива пузырьком
for (int i = 0; i < size - 1; i++) {
for (int j = 0; j < size - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
// меняем элементы местами
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
// Вывод отсортированного массива на экран
for (int i = 0; i < size; i++) {
cout << arr[i] << " ";
}
cout << endl;
int k = arr[0];
int q = arr[size - 1];
while (k <= q)
{
cout << k<<'\t';
k++;
}
cout << endl;
}
void task182()
{
//182.Задан упорядоченный по возрастанию массив целых чисел.
//Написать программу, позволяющую вставить в этот массив вводимое с клавиатуры число без нарушения упорядоченности.
//Предполагается, что размер заданного массива не увеличивается.
//Поэтому требуется определить, вставлять ли в массив элемент, по величине больший(меньший) всех элементов массива.\
//Это можно сделать, удалив наименьший(наибольший) по величине элемент.
//Затем нужно определиться с направлением сдвига элементов при освобождении места.
//Если исключить вариант вставки таких элементов и сдвигать в сторону большие по величине элементов,
//то останется только определить место вставки, сдвинуть элементы, освобождая место для вставки, и вставить вводимое число.
{
const int N = 10; // array length
const int ENLARGEMENT = 1; // enlargement elements number
int k = 0, value = 0;
int array[N + ENLARGEMENT];
for (int i = 0; i < N; i++)
{
array[i] = i + 1;
cout << array[i] << '\t';
}
// adding 1 element to array
do
{
cout << endl << "Введите позицию элемента: ";
while (k <= 0)
{
if (!(cin >> k))
{
cin.clear();
cin.ignore(65535, '\n');
cout << "неправильный ввод" << endl;
}
}
} while (k < 0 || k > N);
for (int i = N; i > k - 1; i--)
{
array[i] = array[i - 1];
}
cout << endl << "Введите значение: ";
while (value == 0)
{
if (!(cin >> value))
{
cin.clear();
cin.ignore(65535, '\n');
cout << "неправильный ввод" << endl;
}
}
array[k - 1] = value;
cout << endl << "Массив после изменение элемента " << k << endl;
for (int i = 0; i < N + ENLARGEMENT; i++)
{
cout << array[i] << '\t';
}
int temp; // временная переменная для обмена элементов местами
cout << endl;
// Сортировка массива пузырьком
for (int i = 0; i < N - 1; i++) {
for (int j = 0; j < N - i - 1; j++) {
if (array[j] > array[j + 1]) {
// меняем элементы местами
temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
for (int i = 0; i < N; i++)
{
cout << array[i] << '\t';
}
}
}
int main()
{
setlocale(LC_ALL, "Russian");
cout << "Задание № 7 : " << endl;
task7();
cout << "\nЗадание № 42 :" << endl;
task42();
cout << "Задание № 77 : " << endl;
task77();
cout << "Задание № 112 : " << endl;
task112();
cout << "Задание № 147 : " << endl;
task147();
cout << "Задание № 182 : " << endl;
task182();
return 0;
}