Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <ctime>
- #define My_VAl1 "Hello world!"
- #define My_VAl2 "Hello world!"
- #define My_VAl3 {1, 2, 4, 5} // это плохая практика
- using namespace std;
- inline int get_rand(int min, int max) { // inline - для вставки команд функции в место вызова
- if (min > max)
- swap(min, max);
- return min + rand() % (max - min + 1);
- }
- void create(int** &matr1, int size1, int size2) {
- matr1 = new int* [size1];
- for (int k = 0; k < size1; ++k) {
- matr1[k] = new int[size2];
- }
- for (int k = 0; k < size1; ++k) {
- for (int n = 0; n < size2; ++n)
- // matr1[k][n] = -10 + rand()%21 ; // так нормально
- matr1[k][n] = get_rand(0, 9); // так лучше
- }
- }
- void show(int**& matr1) {
- int size1 = _msize(matr1) / sizeof(matr1[0]);
- int size2 = _msize(matr1[0]) / sizeof(matr1[0][0]);
- for (int k = 0; k < size1; ++k) {
- for (int n = 0; n < size2; ++n)
- cout << matr1[k][n] << "\t";
- cout << endl;
- }
- cout << endl;
- }
- void transpose(int**& matr1) {
- int size1 = _msize(matr1) / sizeof(matr1[0]);
- int size2 = _msize(matr1[0]) / sizeof(matr1[0][0]);
- int** buff;
- create(buff, size2, size1);
- for (int k = 0; k < size1; ++k) {
- for (int n = 0; n < size2; ++n)
- buff[n][k] = matr1[k][n];
- }
- free(matr1);
- matr1 = buff;
- }
- // только квадратные матрицы
- int** mult(int** matr1, int** matr2) {
- int size1 = _msize(matr1) / sizeof(matr1[0]);
- int size2 = _msize(matr1[0]) / sizeof(matr1[0][0]);
- int** res;
- create(res, size1, size2);
- // правильлное суммирование
- for(int k = 0; k < size1; ++k){
- for (int n = 0; n < size2; ++n) {
- res[k][n] = 0;
- for (int m = 0; m < size1; ++m) {
- res[k][n] += matr1[k][m] * matr2[m][n];
- }
- }
- }
- return res;
- }
- void free(int** &matr1) {
- int size1 = _msize(matr1) / sizeof(matr1[0]);
- for (int k = 0; k < size1; ++k) {
- delete[] matr1[k];
- }
- delete[] matr1;
- }
- void matrix_calculation() {
- srand(time(NULL));
- int** arr;
- int** arr1;
- /*
- cout << My_VAl1 << endl;
- int arr2[]My_VAl3;
- */
- create(arr, 3, 3);
- create(arr1, 3, 3);
- show(arr);
- show(arr1);
- int** multarr = mult(arr, arr1);
- show(multarr);
- free(multarr);
- /*
- show(arr);
- transpose(arr);
- transpose(arr);
- show(arr);
- */
- free(arr);
- free(arr1);
- }
- void show(int* arr) {
- int size1 = _msize(arr) / sizeof(arr[0]);
- for (int k = 0; k < size1; k++) {
- cout << arr[k] << " ";
- }
- cout << endl;
- }
- void add(int* &arr, int val) {
- int size1 = _msize(arr) / sizeof(arr[0]);
- int* buff = new int[size1 + 1];
- for (int k = 0; k < size1; k++) {
- buff[k] = arr[k];
- }
- buff[size1] = val;
- delete[] arr;
- arr = buff;
- }
- void add(int*& arr, int val, int id) {
- int size1 = _msize(arr) / sizeof(arr[0]);
- if ((id > 0) && (id < size1)) {
- int* buff = new int[size1 + 1];
- for (int k = 0; k < id; ++k) {
- buff[k] = arr[k];
- }
- buff[id] = val;
- for (int k = id; k < size1; ++k) {
- buff[k + 1] = arr[k];
- }
- delete[] arr;
- arr = buff;
- }
- }
- void remove(int*& arr, int id) {
- int size1 = _msize(arr) / sizeof(arr[0]);
- if ((id > 0) && (id < size1)) {
- int* buff = new int[size1 - 1];
- for (int k = 0; k < id; ++k)
- buff[k] = arr[k];
- for (int k = id + 1; k < size1; ++k)
- buff[k - 1] = arr[k];
- delete[] arr;
- arr = buff;
- }
- }
- void main() {
- int* arr = new int[0] {};
- show(arr);
- //arr[5] = 7;
- add(arr, 1);
- add(arr, 2);
- add(arr, 3);
- add(arr, 4);
- add(arr, 5);
- show(arr);
- add(arr, 77, 2);
- show(arr);
- remove(arr, 0);
- remove(arr, 0);
- show(arr);
- delete[] arr;
- }
Advertisement
Add Comment
Please, Sign In to add comment