Quick actions

cmd+k|ctrl+k

Navigation

Languages

lab 6

Snippet info

Language

Cpp

Visibility

public

Author

skezze

Created

2019-11-11T14:54:28Z

Updated

2019-11-11T14:54:28Z

#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;
}
INFO