Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <ctime>
- #include <cstdlib>
- using namespace std;
- int get_int(){ // считывает число с защитой от дурака
- int i;
- cin >> i; // пытаемся прочесть
- while (cin.fail() || cin.rdbuf()->in_avail() > 1){
- cout << "ERROR" << endl; // выводит сообщение если пользователь ввел бред
- cin.clear(cin.goodbit); // оживляем поток после ошиюки, если она была
- cin.ignore(cin.rdbuf()->in_avail()); // выкидываем весь мусор, который в нем остался
- cin >> i; // еще раз пытаемся прочесть
- }
- return i;
- }
- // 123sffasf134124
- // afhb3123
- int** create_matrix(int size) { // создание квадратной матрици в отдельной функции
- int** mas = new int*[size]; // создаем массив указателей
- for(int i = 0;i < size;++i)
- mas[i] = new int[size]; // а теперь создаем строки/столбцы
- cout << "Matrix allocated" << endl;
- return mas;
- }
- void fill_matrix(int **mas, int size) { // заполняет квадратный массив рандомыми значениям
- for(int i = 0;i < size;++i)
- for(int j = 0;j < size;++j)
- mas[i][j] = rand()%100 + 1;
- cout << "Matrix filled" << endl;
- }
- void delete_matrix(int **mas, int size) { // динамический массив нужно удалять вот так
- for(int i = 0;i < size;++i) {
- delete[] mas[i];
- }
- delete[] mas;
- cout << "Matrix deleted" << endl;
- }
- void show_matrix(int** mas, int size) { // отдельная функция для печати массива на экран
- for(int i = 0;i < size;++i) {
- for(int j = 0;j < size;++j) {
- cout << mas[i][j] << " ";
- }
- cout << endl;
- }
- }
- int main() {
- srand(time(0)); // делаем магию, чтобы генератор рандомных чисел работал.
- cin.sync_with_stdio(false); // это нужно для защиты от дурака. Выключает синхронизацию со scanf()
- // домашнее задание, выяснить, что будет, если попытаться использовать scanf() и cin()
- // после этой команды поочереди.
- cout << "Enter size: ";
- int size = 0;
- size = get_int();
- while(size < 1) {
- cout << "Bad length" << endl;
- size = get_int();
- }
- int** matrix = create_matrix(size);
- fill_matrix(matrix, size);
- show_matrix(matrix, size);
- delete_matrix(matrix, size);
- }
Add Comment
Please, Sign In to add comment