Kiri3L

matrix

Nov 26th, 2019
152
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.80 KB | None | 0 0
  1. #include <iostream>
  2. #include <ctime>
  3. #include <cstdlib>
  4.  
  5.  
  6. using namespace std;
  7.  
  8. int get_int(){ // считывает число с защитой от дурака
  9. int i;
  10.  
  11. cin >> i; // пытаемся прочесть
  12. while (cin.fail() || cin.rdbuf()->in_avail() > 1){
  13. cout << "ERROR" << endl; // выводит сообщение если пользователь ввел бред
  14. cin.clear(cin.goodbit); // оживляем поток после ошиюки, если она была
  15. cin.ignore(cin.rdbuf()->in_avail()); // выкидываем весь мусор, который в нем остался
  16. cin >> i; // еще раз пытаемся прочесть
  17. }
  18. return i;
  19. }
  20.  
  21.  
  22.  
  23. // 123sffasf134124
  24. // afhb3123
  25.  
  26. int** create_matrix(int size) { // создание квадратной матрици в отдельной функции
  27. int** mas = new int*[size]; // создаем массив указателей
  28. for(int i = 0;i < size;++i)
  29. mas[i] = new int[size]; // а теперь создаем строки/столбцы
  30. cout << "Matrix allocated" << endl;
  31. return mas;
  32. }
  33.  
  34. void fill_matrix(int **mas, int size) { // заполняет квадратный массив рандомыми значениям
  35. for(int i = 0;i < size;++i)
  36. for(int j = 0;j < size;++j)
  37. mas[i][j] = rand()%100 + 1;
  38. cout << "Matrix filled" << endl;
  39. }
  40.  
  41. void delete_matrix(int **mas, int size) { // динамический массив нужно удалять вот так
  42. for(int i = 0;i < size;++i) {
  43. delete[] mas[i];
  44. }
  45. delete[] mas;
  46. cout << "Matrix deleted" << endl;
  47. }
  48.  
  49. void show_matrix(int** mas, int size) { // отдельная функция для печати массива на экран
  50. for(int i = 0;i < size;++i) {
  51. for(int j = 0;j < size;++j) {
  52. cout << mas[i][j] << " ";
  53. }
  54. cout << endl;
  55. }
  56. }
  57.  
  58. int main() {
  59. srand(time(0)); // делаем магию, чтобы генератор рандомных чисел работал.
  60.  
  61. cin.sync_with_stdio(false); // это нужно для защиты от дурака. Выключает синхронизацию со scanf()
  62. // домашнее задание, выяснить, что будет, если попытаться использовать scanf() и cin()
  63. // после этой команды поочереди.
  64. cout << "Enter size: ";
  65. int size = 0;
  66. size = get_int();
  67. while(size < 1) {
  68. cout << "Bad length" << endl;
  69. size = get_int();
  70. }
  71.  
  72. int** matrix = create_matrix(size);
  73. fill_matrix(matrix, size);
  74. show_matrix(matrix, size);
  75. delete_matrix(matrix, size);
  76. }
Add Comment
Please, Sign In to add comment