Добавил:
Только когда поступишь в технический вуз поймешь на сколько ты гуманитарий Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
0
Добавлен:
19.01.2024
Размер:
4.13 Кб
Скачать
#include <iostream> // подключаем библиотеку потоков ввода и вывода
#include <time.h> // подключаем библиотеку "time.h"
#include <vector> // подключаем библиотеку "vector"
#include <algorithm> // подключаем библиотеку "algorithm" для сортировки
#include <conio.h> // подключаем библиотеку "conio.h" для getch
#include <string>
using namespace std;
int main(){
	setlocale(LC_CTYPE, "RUS");
	srand(time(0));
	int size;
	cout << "Введите размер матрицы (целое число от 2х до 5ти включительно)\n";
	while (true){ //Пытаемся их получить
		int key = getch(); //Считываем код нажатой клавиши
		if (!(key >= 50 && key <= 53)){ //Если он не принадлежит цифрам от 0 до 1
			continue; // игнорируем этот прогон
		}
		size = (key - '0');
		cout << size;
		break;
	}
	string **arr = new string *[size];
	for (int i = 0; i < size; i++)
		arr[i] = new string[size];
	
	cout << "\nЕсли Вы хотите ввести строки с клавиатуры, то нажмите 1\n"
		<< "Если Вы хотите сгенерировать случайный набор, нажмите 0\n";
	bool choice = false;
	while (true){ //Пытаемся их получить
			int key = getch(); //Считываем код нажатой клавиши
			if (key != 48 && key != 49){ //Если он не принадлежит цифрам от 0 до 1
				cout << endl << "Символ введен некорректно, попробуйте еще раз \n";
				continue; //Выводим сообщение об ошибке, игнорируем этот прогон
			}
			choice = (bool) (key - '0');
			cout << choice;
			break;
	}
	
	if (choice){
		for (int i = 0; i < size; i++){
			for (int j = 0; j < size; j++){
				system("cls");
				cout << "Далее необходимо заполнить матрицу. Вводятся английские буквы\n";
				cout << "\nВведите элемент матрицы arr[" << i <<"][" << j << "]: ";
				
				string str = "";
			
				while (true){ //Пытаемся их получить
					int key = getch(); //Считываем код нажатой клавиши
					if (key == 8){
						if (str.size() == 0)
							continue;
						str.erase(str.end() - 1);
						system("cls");
						cout << "Далее необходимо заполнить матрицу. Вводятся английские буквы\n";
						cout << "\nВведите элемент матрицы arr[" << i <<"][" << j << "]: ";
						cout << str;
						continue;
					}
					if (key == 13 && str.length() == 4){
						break;
					} else if (str.length() == 4){
						continue;
					}
					if (!(key >= 65 && key <= 90) && !(key >= 97 && key <= 122)){ //Если он не принадлежит английским буквам
						continue; // игнорируем этот прогон
					}
					cout << (char) key;
					str += key;
						
				}
					
				arr[i][j] = str; //записываем ввдеенное число в матрицу	
			}
		}
	} else {
		for (int i = 0; i < size; i++){//заполняем матрицу случайными символами
			for (int j = 0; j < size; j++){
				arr[i][j] = "";
				arr[i][j] += rand() % 26 + 'A';
				arr[i][j] += rand() % 26 + 'A';
				arr[i][j] += rand() % 26 + 'A';
				arr[i][j] += rand() % 26 + 'A';
			}
		}
	}
	cout << "\nМатрица выглядит так:\n";
	for (int i = 0; i < size; i++){
		for (int j = 0; j < size; j++){
			cout << arr[i][j] << " ";
		}
		cout << endl;
	}
	
	vector <int> sizeVect;
	string vowel = "AaEeIiUuYyOo";
	for (int i = 0; i < size; i++){
		for (int j = 0; j < size; j++){
			for (int k = 0; k < arr[i][j].length(); k++){
				bool flag = false;//удаление гласных
				for (int l = 0; l < vowel.length(); l++){
					if (arr[i][j][k] == vowel[l]){
						arr[i][j].erase(k, 1);
						flag = true;
						break;
					}
				}
				if (flag){
					k--;
				}
			}
			sizeVect.push_back(arr[i][j].length());
		}
	}
	cout << "\nМатрица выглядит так:\n";
	for (int i = 0; i < size; i++){//вывод матрицы
		for (int j = 0; j < size; j++){//после удаления гласных
			cout << arr[i][j] 
				<< string(4 - arr[i][j].length(), ' ') << " ";
		}
		cout << endl;
	}
	sort(sizeVect.begin(), sizeVect.end(),
		[](int val1, int val2){//сортировка длин
			if (val1 > val2)//по убыванию
				return 1;
			else return 0;	
		}
	);

	for (int i = 0; i < sizeVect.size(); i++)
		cout << sizeVect[i] << " "; //вывод отсортированного массива длин

	for (int i = 0; i < size; i++)
		delete[] arr[i];//очищаем память
	
	delete[] arr;
}
Соседние файлы в папке ПР-12 ВАРИАНТ 15 (ХВАТАЙ БЕСПЛАТНО)
  • #
    19.01.20244.13 Кб015 (2).cpp
  • #
    19.01.202438.65 Кб0блок-схема.json
  • #
    19.01.20242.23 Mб0исполяемый файл pass 1234.exe.crypted
  • #
    19.01.2024572.08 Кб2ПР-12.pdf