Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // seminar.cpp : Этот файл содержит функцию "main". Здесь начинается и заканчивается выполнение программы.
- //
- #include <iostream>
- #include <fstream>
- #include <conio.h>
- #include "clocale"
- #include "stdlib.h"
- #include "ctime"
- using namespace std;
- void input(float* a, int n); // Ввод массива
- void inputr(float* a, int n); // Ввод рандомного массива
- void output(float* a, int n); // Вывод массива
- void inMAT(int** a, int m, int n); // Ввод двумерного массива
- void inMATr(int** a, int m, int n); // Рандомный двумерный массив
- void outMAT(int** a, int m, int n); // Вывод двумерного массива
- bool ScanMIN(int** a, int v, int k, int b); // Сканирование строк
- bool ScanMAX(int** a, int v, int k, int b); // Сканирование столбцов
- void num3(int n);
- void num4(int m, int n);
- void num5();
- int main()
- {
- setlocale(LC_ALL, "rus");
- srand(time(0));
- int k1;
- cout << "1. В массиве найти мин. эл-т. Найти сумму между первым и последним положительными эл-тами. Отсортировать массив, чтобы нули шли вначале" << endl;
- cout << "2. В матрице найти сумму строк где есть хотя-бы 1 отрицательный эл-т, номера строк и столбцов седловых точек матрицы" << endl;
- cout << "3. Считать текст из файла и вывести предложения, не содержащие запятых" << endl;
- cout << "Введите номер задания: ";
- cin >> k1;
- if (k1 == 1)
- {
- int n;
- cout << "Введите размерность массива" << endl;
- cin >> n;
- num3(n);
- }
- if (k1 == 2)
- {
- int m, n;
- cout << "Введите число строк матрицы" << endl;
- cin >> m;
- cout << "Введите число столбцов матрицы" << endl;
- cin >> n;
- num4(m, n);
- }
- if (k1 == 3)
- {
- num5();
- }
- }
- void input(float* a, int n)
- {
- cout << "Введите массив:" << endl;
- for (int i = 0; i < n; i++)
- cin >> a[i];
- }
- void inputr(float* a, int n)
- {
- for (int i = 0; i < n; i++)
- a[i] = rand() % 20 - 10;
- }
- void output(float* a, int n)
- {
- for (int i = 0; i < n; i++)
- cout << a[i] << " ";
- cout << endl;
- }
- void inMAT(int** a, int m, int n)
- {
- cout << "Введите двумерный массив" << endl;
- for (int i = 0; i < m; i++)
- {
- for (int j = 0; j < n; j++)
- {
- cout << "a[" << i << "][" << j << "]" << " = ";
- cin >> a[i][j];
- }
- }
- }
- void inMATr(int** a, int m, int n)
- {
- for (int i = 0; i < m; i++)
- {
- for (int j = 0; j < n; j++)
- {
- a[i][j] = rand() % 20 - 10;
- }
- }
- }
- void outMAT(int** a, int m, int n)
- {
- cout << "Двумерный массив:" << endl;
- for (int i = 0; i < m; i++)
- {
- for (int j = 0; j < n; j++)
- {
- printf("%4d", a[i][j]);
- }
- cout << endl;
- }
- }
- bool ScanMIN(int** a, int v, int k, int b)
- {
- int min = a[v][k];
- for (int i = 0; i < b; i++)
- if (min > a[v][i])
- return false;
- return true;
- }
- bool ScanMAX(int** a, int v, int k, int b)
- {
- int max = a[v][k];
- for (int i = 0; i < b; i++)
- if (max < a[i][k])
- return false;
- return true;
- }
- void num3(int n)
- {
- float* a = new float[n], t, t1, f = 0, s = 0, t2, scan;
- cout << "Какой массив вы хотите использовать?" << endl;
- cout << "1. Ввести с клавиатуры" << endl;
- cout << "2. Случайный" << endl;
- cin >> scan;
- if (scan == 1)
- input(a, n);
- if (scan == 2)
- inputr(a, n);
- output(a, n);
- float min = a[0];
- int j = 0;
- for (int i = 1; i < n; i++) // Поиск минимального значения в массиве
- {
- if (a[i] < min)
- min = a[i];
- }
- cout << "Минимальное значение массива: " << min << endl;
- for (int i = 0; i < n; i++) // Поиск первого положительного эл-та
- {
- if (a[i] > 0)
- {
- f++;
- cout << "Первый положительный элемент: " << a[i] << endl;
- t = a[i];
- t1 = i;
- break;
- }
- }
- if (f == 0) // Проверка на наличие положительных эл-тов
- {
- cout << "В массиве нет положительных эл-тов. Невозможно посчитать сумму" << endl;
- return;
- }
- int k = t, k1 = t1;
- for (int i = t + 1; i < n; i++) // Поиск последнего положительного эл-та
- {
- if (a[i] > 0)
- {
- k = a[i];
- k1 = i;
- }
- }
- cout << "Последний положительный элемент: " << k << endl;
- for (int i = t1 + 1; i < k1; i++) // Сумма эл-тов между первым и последним положительным эл-том
- {
- s += a[i];
- }
- cout << "Сумма элементов между первым и последними положительными эл-тами: " << s << endl;
- for (int i = 0; i < n; i++)
- {
- if (a[i] == 0)
- {
- t2 = a[i];
- a[i] = a[j];
- a[j] = t2;
- j++;
- }
- }
- cout << "Отсортированный массив, с нулями в начале:" << endl;
- output(a, n);
- }
- void num4(int m, int n)
- {
- int** a, s = 0, t, f = 0, c = 0, scan;
- a = new int* [m];
- for (int i = 0; i < m; i++)
- a[i] = new int[n];
- cout << "Какой массив вы хотите использовать?" << endl;
- cout << "1. Ввести с клавиатуры" << endl;
- cout << "2. Случайный" << endl;
- cin >> scan;
- if (scan == 1)
- inMAT(a, m, n);
- if (scan == 2)
- inMATr(a, m, n);
- outMAT(a, m, n);
- for (int i = 0; i < m; i++)
- {
- for (int j = 0; j < n; j++)
- {
- if (a[i][j] < 0)
- {
- f = 1;
- t = i;
- cout << "Отрицательный эл-т " << a[i][j] << " в строке " << t << endl;
- for (int j = 0; j < n; j++)
- {
- s += a[t][j];
- }
- cout << "Сумма эл-тов в строке " << t << ": " << s << endl;
- s = 0;
- break;
- }
- }
- }
- if (f == 0)
- cout << "В массиве нет отрицательных эл-тов" << endl;
- for (int i = 0; i < m; i++)
- {
- for (int j = 0; j < n; j++)
- {
- if (ScanMIN(a, i, j, n) && ScanMAX(a, i, j, m))
- {
- c++;
- cout << "Найдена седловая точка с координатами (" << i << " " << j << ")" << endl;
- }
- }
- }
- if (c == 0)
- cout << "Седловых точек нет" << endl;
- }
- void num5()
- {
- ifstream file("read.txt");
- char ch;
- string str;
- if (!file)
- {
- cout << "Файл не найден" << endl;
- return;
- }
- else
- {
- while (file.get(ch))
- {
- str.push_back(ch);
- if (ch == '.')
- {
- if (str.find(',') == str.npos)
- cout << str << endl;
- str.clear();
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment