Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <signal.h>
- using namespace std;
- bool checkString(string s) { // Функция проверки строки на корректность ввода строки s
- if (s.length() > 5) // Проверяем, если строка больше, чем 5 символов в длину
- return false; // Завершаем программу с ложным результатом
- else { // Если удовлетворяет длине строки
- for (int i = 0; i < s.length(); ++i) { // Цикл для поочередного перебора символов строки
- if (!((65<=s[i] && s[i]<=90) || (48<=s[i] && s[i]<=57) || (97<=s[i] && s[i]<=122))) // Проверка, является ли символ латинской буквой либо цифрой десятичной системы счисления
- return false; // Если нет, то завершаем программу с ложным результатом
- }
- }
- return true; // Если программа отработала и до этого не завершилась с ложным результатом - завершаем программу с истинным результатом
- }
- int getMinBase(string s) { // Функция для получения минимальной системы счисления, в которой может быть представлена строка4 s
- int minimum_base = 2; // Инициализируем минимально возможную систему счисления
- for (int i = 0; i < s.length(); ++i) { // Цикл для поочередного перебора символов строки
- char symb = s[i]; // Создаем переменную symb с записаным туда значением символа текущего символа в цикле
- // Переводим каждую цифру в десятичную систему счисления
- if (symb < 65) { // Цифры, с ASCII кодом до 65, а именно 0,1,2,3,4,5,6,7,8,9
- symb = symb - 48; // Придодим символы в целочисленное значение
- }
- else if (symb <= 90) // Латинские символы с ASCII кодом до 90 включительно
- symb -= 55; // Придодим символы в целочисленное значение
- else {
- symb = toupper(symb); // Приводим оставшиеся символы латиницы в верхний регистр
- symb -= 55; // Придодим символы в целочисленное значение
- }
- if (symb + 1 > minimum_base) // проверяем может ли символ symb быть в системе счисления с основанием minimum_base
- minimum_base = symb + 1; // если нет, то обновляем минимально возможную систему счисления
- }
- return minimum_base; // Возвращаем целочисленное значение системы счисления, в которой может быть представлена строка s
- }
- int main()
- {
- system("chcp 1251"); // Позволяет работать с русским языком
- // Выводим текст
- cout << "Введите матрицу размера 4x4, состоящую из строк символов десятичных цифр и латиницы длиной до 5 включительно\n";
- int matrix[4][4]; // Создаем двумерный массив
- string input_string; // Иницализация строки
- for (int i = 0; i < 4; ++i) { // Цикл для поочередного заполнения строк в матрице
- for (int j = 0; j < 4; j++) { // Цикл для поочередного заполнения элементов в строке
- cout << "matrix[" << i << "][" << j << "] = ";
- cin >> input_string; // Пользователь вводит строку
- while (!checkString(input_string)) { // Проверка на корректность ввода
- cout << "Неверный ввод, введите строку состоящую из цифр и букв английского алфавита\nmatrix["<<i<<"]["<<j<<"] = ";
- cin >> input_string; // Пользователь вводит строку
- }
- matrix[i][j] = getMinBase(input_string); // Заполняем ячейку матрицы минимальным
- // основанием системы счисления, в которой может быть исходная строка
- }
- }
- cout << "Новая матрица:\n";
- // Выводим новую матрицу
- for (int i = 0; i < 4; ++i) { // Цикл для поочередного перебора строк
- for (int j = 0; j < 4; j++) { // Цикл для поочередного перебора элементов строки
- cout << matrix[i][j]<<" "; // Выводим на экран элемент марицы
- }
- cout << "\n"; // Переход на новую строку для вывода матрицы
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement