Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <locale.h>
- #include <windows.h>
- #include <conio.h>
- #include <iostream>
- #include <stdlib.h>
- #include <iomanip>
- using namespace std;
- char ch;
- int i2, j, k1, k2;
- const int MAX_SIZE = 100;
- int n, m;
- double arr[MAX_SIZE];
- int top;
- int menu_main()
- {
- HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
- char key = 0;
- int code;
- do {
- system("cls");
- printf(" *********************************************\n");
- printf(" * Лабораторная работа №2 *\n");
- printf(" * Одномерные и *\n");
- printf(" * двумерные массивы *\n");
- printf(" * Вариант №20 *\n");
- printf(" * Группа KM-63 Вовченко И.В. *\n");
- printf(" *********************************************\n");
- printf("\n");
- key = (key + 7) % 7;
- SetConsoleTextAttribute(hStdOut, (WORD)((0 << 4) | 8));
- printf("ИНСТРУКЦИЯ!!! ДЛЯ НАВИГАЦИИ ПО МЕНЮ ИСПОЛЬЗУЙТЕ СТРЕЛКИ ВВЕРХ, ВНИЗ И КЛАВИШУ ENTER\n");
- printf("1. Дано одномерный массив A, состоящий из n элементов. \n");
- printf(" Определить сколько значений в масиве \n");
- printf(" встречается по 3 раза.\n");
- SetConsoleTextAttribute(hStdOut, (WORD)((0 << 4) | 15));
- if (key == 0) cout << " -> Ввод с клавиатуры. " << endl;
- else cout << " Ввод с клавиатуры." << endl;
- if (key == 1) cout << " -> Заполнение массива с помощью генератора случайных чисел.\n" << endl;
- else cout << " Заполнение массива с помощью генератора случайных чисел.\n" << endl;
- SetConsoleTextAttribute(hStdOut, (WORD)((0 << 4) | 8));
- printf("2. Сортировать массив методом линейной вставки \n");
- SetConsoleTextAttribute(hStdOut, (WORD)((0 << 4) | 15));
- if (key == 2) cout << " -> Ввод с клавиатуры." << endl;
- else cout << " Ввод с клавиатуры." << endl;
- if (key == 3) cout << " -> Заполнение массива с помощью генератора случайных чисел.\n" << endl;
- else cout << " Заполнение массива с помощью генератора случайных чисел.\n" << endl;
- SetConsoleTextAttribute(hStdOut, (WORD)((0 << 4) | 8));
- printf("3. Для матрицы из действительных чисел.\n");
- printf(" Найти максимальный и минимальный элемент и\n");
- printf(" суму элементов между ними.\n");
- SetConsoleTextAttribute(hStdOut, (WORD)((0 << 4) | 15));
- if (key == 4) cout << " -> Ввод с клавиатуры." << endl;
- else cout << " Ввод с клавиатуры." << endl;
- if (key == 5) cout << " -> Заполнение массива с помощью генератора случайных чисел.\n\n" << endl;
- else cout << " Заполнение массива с помощью генератора случайных чисел.\n\n" << endl;
- if (key == 6) cout << " -> Выход." << endl;
- else cout << " Выход." << endl;
- code = _getch();
- if (code == 224)
- {
- code = _getch();
- if (code == 80) key++;
- if (code == 72) key--;
- }
- } while (code != 13);
- system("cls");
- return key;
- }
- void task_1(int i)
- {
- double max = 0;
- do
- {
- system("cls");
- cout << "Введите размерность массива(максимум - 100) : ";
- rewind(stdin);
- scanf("%d", &n);
- cout << "\n";
- } while (n<1 || n>100);
- cout << "Вводите числовые значения!\n";
- if (i == 1)
- for (int i = 0; i < n; i++)
- {
- cout << "arr[" << i << "] = ";
- cin >> arr[i];
- }
- if (i == 2)
- {
- cout << "Введите максимальный и минимальный предел функции random :";
- rewind(stdin);
- scanf("%d", &top);
- for (int i = 0; i < n; i++)
- {
- arr[i] = ((rand() % (20 * top + 1)) - top * 10) / 10.0;
- cout << "arr[" << i << "] = " << arr[i] << endl;
- }
- }
- cout << "\nПолученный массив :\n";
- for (int i = 0; i < n; i++)
- {
- cout << arr[i] << " ";
- }
- cout << "\n\n";
- /*
- int imax = 0;
- for (int i = 0; i < n; i++)
- if (arr[i] > arr[imax])
- {
- imax = i;
- }
- cout << "Индекс максимального элемента = " << imax;
- cout << "\n";
- //return 0;
- for (int i = 0; i < n; i++)
- if (fabs(arr[i]) > max)
- {
- max = fabs(arr[i]);
- }
- cout << "Максимальный элемент массива по модулю = " << max;
- cout << "\n";
- system("pause");*/
- int count = 0;
- int temp = 0;
- for (int i = 0; i<n; i++) {
- temp = 0;
- for (int j = 0; j<n; j++) {
- if (arr[i] == arr[j]) {
- temp++;
- }
- }
- if (temp == 3) {
- count++;
- }
- }
- cout << count / 3;
- printf("\n\n");
- system("pause");
- //return count / 3;
- }
- void Sort(double* mass, int n) {
- for (int i = 1; i<n; i++) {
- for (int j = i; j>0 && mass[j - 1]>mass[j]; j--) {
- int tmp = mass[j - 1];
- mass[j - 1] = mass[j];
- mass[j] = tmp;
- }
- }
- }
- void task_2(int i)
- {
- do
- {
- system("cls");
- cout << "Введите размерность массива(максимум - 100) : ";
- rewind(stdin);
- scanf("%d", &n);
- cout << "\n";
- } while (n<1 || n>100);
- cout << "Вводите числовые значения!\n";
- if (i == 1)
- for (int i = 0; i < n; i++)
- {
- cout << "arr[" << i << "] = ";
- cin >> arr[i];
- }
- if (i == 2)
- {
- cout << "Введите максимальный и минимальный предел функции random :";
- rewind(stdin);
- scanf("%d", &top);
- for (int i = 0; i < n; i++)
- {
- arr[i] = ((rand() % (20 * top + 1)) - top * 10) / 10.0;
- cout << "arr[" << i << "] = " << arr[i] << endl;
- }
- }
- cout << "\nПолученный массив :\n";
- for (int i = 0; i < n; i++)
- {
- cout << arr[i] << " ";
- }
- Sort(arr, n);
- cout << "\nОтсортированный массив :\n";
- for (int i = 0; i < n; i++)
- {
- cout << arr[i] << " ";
- }
- cout << endl;
- system("pause");
- }
- void task_3(int i)
- {
- double arr[100][100];
- int imax = 0;
- int jmax = 0;
- int imin = 0;
- int jmin = 0;
- int max_value = arr[0][0];
- int min_value = arr[0][0];
- double sum = 0;
- system("cls");
- printf("массив с 3 столбиками и 10 строками\n\n");
- cout << "Вводите числовые значения!\n";
- cout << "Matrix size(NxM)\n";
- cout << "N= ";
- cin >> n;
- cout << "M= ";
- cin >> m;
- if (i == 1)
- for (int i = 0; i < n; i++)
- for (int j = 0; j < m; j++)
- {
- cout << "arr[" << i << "]" << " " << "[" << j << "]" << " = ";
- cin >> arr[i][j];
- }
- if (i == 2)
- {
- cout << "Введите максимальный и минимальный предел функции random :";
- rewind(stdin);
- scanf("%d", &top);
- for (int i = 0; i < n; i++)
- for (int j = 0; j < m; j++)
- {
- arr[i][j] = ((rand() % (20 * top + 1)) - top * 10) / 10.0;
- //cout << "arr[" << i << "]"<<"["<<j<<"]"<<" = " << arr[i][j] << endl;
- }
- }
- cout << "\nПолученный массив : \n";
- for (int i = 0; i < n; i++)
- {
- for (int j = 0; j < m; j++)
- {
- cout << setw(10) << arr[i][j];
- }
- cout << "\n";
- }
- for (int i = 0; i<n; i++)
- {
- for (int j = 0; j<m; j++)
- {
- if (arr[i][j] < min_value)
- {
- min_value = arr[i][j];
- imin = i;
- jmin = j;
- }
- if (arr[i][j] > max_value)
- {
- max_value = arr[i][j];
- imax = i;
- jmax = j;
- }
- }
- }
- bool need_break = false;
- if (imin > imax)
- {
- if (jmin > jmax)
- {
- for (int i = imax; i < n; i++)
- {
- for (int j = jmax; j < m; j++)
- {
- if (i == imin && j == jmin)
- {
- need_break = true;
- break;
- }
- else
- {
- sum = sum + arr[i][j];
- }
- }
- if (need_break == true)
- {
- break;
- }
- }
- sum = sum - arr[imax][jmax];
- }
- else
- {
- for (int i = imax; i < n; i++)
- {
- for (int j = jmin; j < m; j++)
- {
- if (i == imin && j == jmax)
- {
- need_break = true;
- break;
- }
- else
- {
- sum = sum + arr[i][j];
- }
- }
- if (need_break == true)
- {
- break;
- }
- }
- sum = sum - arr[imax][jmin];
- }
- }
- else
- {
- if (jmin > jmax)
- {
- for (int i = imin; i < n; i++)
- {
- for (int j = jmax; j < m; j++)
- {
- if (i == imax && j == jmin)
- {
- need_break = true;
- break;
- }
- else
- {
- sum = sum + arr[i][j];
- }
- }
- if (need_break == true)
- {
- break;
- }
- }
- sum = sum - arr[imin][jmax];
- }
- else
- {
- for (int i = imin; i < n; i++)
- {
- for (int j = jmin; j < m; j++)
- {
- if (i == imax && j == jmax)
- {
- need_break = true;
- break;
- }
- else
- {
- sum = sum + arr[i][j];
- }
- }
- if (need_break == true)
- {
- break;
- }
- }
- sum = sum - arr[imin][jmin];
- //cout << sum;
- }
- }
- cout <<"suma: " <<sum << endl;
- system("pause");
- }
- int main()
- {
- while (1)
- {
- setlocale(LC_ALL, "RUS");
- int i1 = menu_main() + 1;
- switch (i1)
- {
- case 1: {task_1(1); break; }
- case 2: {task_1(2); break; }
- case 3: {task_2(1); break; }
- case 4: {task_2(2); break; }
- case 5: {task_3(1); break; }
- case 6: {task_3(2); break; }
- case 7: {return 0; }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement