diff --git a/lab13-14.cpp b/lab13-14.cpp new file mode 100644 index 0000000..2e46eb9 --- /dev/null +++ b/lab13-14.cpp @@ -0,0 +1,327 @@ +#include +#include + +#define NUM_ELEMENTS 10 + +int arr[NUM_ELEMENTS]; +int n = 0; + +void printElements(); +void keyboardInput(); +void oddsX10(); +int findMin(); +int countElements(); +int findLastEven(); +int findIndexMin(); +int findIndexMax(); +void chetnaminus(); +int findmenshe4(); +int variant4(); +void deleteElement(); +void insertElement(); +void delMin(); +void insert0(); +void delnechetElement(int delIndex); +int Findnechet(); + +void main() { + SetConsoleCP(1251); + SetConsoleOutputCP(1251); + int item; + do { + printf("\n"); + printf("------------------------------\n"); + printf("Содержимое массива:"); + printElements(); + printf("Выберите нужную вам операцию:\n"); + printf("1: Ввести с клавиатуры массив\n"); + printf("2: x10 для всех нечетных элементов\n"); + printf("3: Найти минимальный элемент\n"); + printf("4: Сколько элементов > 10\n"); + printf("5: x2 для последнего четного\n"); + printf("6: Сколько четных левее минимального\n"); + printf("7: х10 для нечетных правее минимального\n"); + printf("8: переставить местами min и max\n"); + printf("9: все четные элементы массива умножить -1\n"); + printf("10: все элементы массива имеющие значения меньше 4 заменить на 4\n"); + printf("11: все эелементы, стоящие перед четными, заменить на 9\n"); + printf("12: удалить заданный элемент\n"); + printf("13: вставить новый элемент в заданное место\n"); + printf("14: удалить минимальный элемент\n"); + printf("15: перед минимальным элементом вставить 0\n"); + printf("16: удалить первый из нечётных элементов\n"); + + printf("\n"); + printf("0: Выйти из программы\n"); + printf("Выбранная операция >>>>>> "); + + scanf_s("%d", &item); + + switch (item) { + case 1: + keyboardInput(); + break; + + case 2: + oddsX10(); + break; + + case 3: + { + int min = findMin(); + printf("min = %d\n", min); + } + break; + case 4: + { + int cnt = countElements(); + printf(" %d элементов > 10\n", cnt); + + } + break; + case 5: + { + int index = findLastEven(); + if (index >= 0) { + arr[index] *= 2; + } + } + break; + case 6: + { + int index = findIndexMin(); + printf("Индекс минимального элемента = %d\n", index); + + int cnt = 0; + for (int i = 0; i < index; i++) { + if (arr[i] % 2 == 0) { + cnt++; + } + } + printf("Левее минимального %d четных элементов\n", cnt); + } + break; + case 7: + { + int index = findIndexMin(); + printf("Индекс минимального элемента = %d\n", index); + + int cnt = 0; + for (int i = index + 1; i < n; i++) { + if (arr[i] % 2 == 1) { + arr[i] *= 10; + } + } + + } + break; + case 8: + { + int indexMin = findIndexMin(); + printf("Индекс минимального элемента = %d\n", indexMin); + int indexMax = findIndexMax(); + printf("Индекс максимального элемента = %d\n", indexMax); + + int tmp = arr[indexMin]; + arr[indexMin] = arr[indexMax]; + arr[indexMax] = tmp; + + } + break; + case 9: + chetnaminus(); + break; + case 10: + findmenshe4(); + break; + case 11: + variant4(); + break; + case 12: + deleteElement(); + break; + case 13: + insertElement(); + break; + case 14: + delMin(); + break; + case 15: + insert0(); + break; + case 16: { + int nechet = Findnechet(); + + delnechetElement(nechet); + } + + } + } while (item != 0); +} + +void keyboardInput() { + printf("n = "); + scanf_s("%d", &n); + + printf("input %d values: ", n); + for (int i = 0; i < n; i++) { + scanf_s("%d", &arr[i]); + } +} + +void oddsX10() { + for (int i = 0; i < n; i++) { + if (arr[i] % 2 == 1) { + arr[i] = arr[i] * 10; + } + } +} + +void printElements() { + printf("< "); + for (int i = 0; i < n; i++) { + printf("%d ", arr[i]); + } + printf(">\n"); +} + + +int findMin() { + int min = arr[0]; + for (int i = 1; i < n;i++) { + if (arr[i] < min) { + min = arr[i]; + } + } + return min; +} + +int countElements() { + int cnt = 0; + for (int i = 0; i < n; i++) { + if (arr[i] > 10) { + cnt++; + } + } + return cnt; +} + +int findLastEven() { + for (int i = n - 1; i < n; i--) { + if (arr[i] % 2 == 0) { + return i; + } + } + return -1; +} + +int findIndexMin() { + int min = arr[0]; + int indexMin = 0; + for (int i = 1; i < n; i++) { + if (arr[i] < min) { + min = arr[i]; + indexMin = i; + } + } + return indexMin; +} + +int findIndexMax() { + int max = arr[0]; + int indexMax = 0; + for (int i = 1; i < n; i++) { + if (arr[i] > max) { + max = arr[i]; + indexMax = i; + } + } + return indexMax; +} +void chetnaminus() { + for (int i = 0; i < n; i++) { + if (arr[i] % 2 == 0) { + arr[i] = arr[i] * -1; + } + } +} +int findmenshe4() { + for (int i = 0; i < n; i++) { + if (arr[i] < 4 ) { + arr[i] = 4; + } + } + return 4; +} +int variant4() { + for (int i = 0; i < n; i++) { + if (arr[i] % 2!=0) { + arr[i] = 9; + } + } + return 4; +} +void deleteElement() { + int index; + printf("Индекс удаляемого элемента = "); + scanf_s("%d", &index); + for (int i = index; i < (n - 1); i++) { + arr[i] = arr[i + 1]; + } + n--; + for (int i = 0; i < n; i++) { + printf("%d ", arr[i]); + } +} +void insertElement() { + int index; + printf("Индекс перед которым надо вставить новый = "); + scanf_s("%d", &index); + + int value; + printf("Значение, которое нужно вставить = "); + scanf_s("%d", &value); + + for (int i = n; i > index; i--) { + arr[i] = arr[i - 1]; + } + n++; + arr[index] = value; + printf("%d", value); +} +void delMin() { + int min = findIndexMin(); + for (int i = min; i < (n - 1); i++) { + arr[i] = arr[i + 1]; + } + n--; + for (int i = 0; i < n; i++) { + printf("%d ", arr[i]); + } + +} +void insert0() { + int min = findIndexMin(); + for (int i = n; i > min; i--) { + arr[i] = arr[i - 1]; + } + n++; + arr[min] = 0; + printf("%d", 0); +} + +int Findnechet() { + for (int i = 0; i < n; i++) { + if (arr[i] % 2 == 1) { + return i; + } + } + return -1; +} + +void delnechetElement(int delIndex) { + for (int i = delIndex; i < (n - 1); i++) { + arr[i] = arr[i + 1]; + } + n--; +} \ No newline at end of file