Добавил:
nechitay03
Только когда поступишь в технический вуз поймешь на сколько ты гуманитарий
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:ПР-12 ВАРИАНТ 15 (ХВАТАЙ БЕСПЛАТНО) / 15 (2)
.cpp#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;
}