Advertisement
Guest User

Untitled

a guest
Dec 15th, 2019
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.63 KB | None | 0 0
  1. #include <iostream>
  2. #include <iomanip>
  3. #include <ctime>
  4.  
  5. using namespace std;
  6.  
  7. void wyswietl(int** tab, int rows, int cols){
  8.     for(int i = 0; i < rows; i++)
  9.     {
  10.         for(int j = 0; j < rows; j++)
  11.         {
  12.             cout << setw(4) << tab[i][j] << " ";
  13.         }
  14.         cout << endl;
  15.     }
  16.     cout << endl;
  17. }
  18.  
  19. // potrójny wskaźnik bo przekazujemy adres wskaźnika w którym będziemy tworzyć
  20. void create(int*** ptr, int rows, int cols){
  21.     (*ptr) = new int*[rows];
  22.     for(int i = 0; i < rows; i++){
  23.         (*ptr)[i] = new int[cols];
  24.         for(int j = 0; j < cols; j++){
  25.             (*ptr)[i][j] = rand() % 100;
  26.         }
  27.     }
  28. }
  29.  
  30. void dispose(int** ptr, int rows){
  31.     for(int i = 0; i < rows; i++){
  32.         delete [] ptr[i];
  33.     }
  34.     delete [] ptr;
  35. }
  36.  
  37. int main(){
  38.     srand((unsigned)time(0));
  39.  
  40.     int** wsk;
  41.     int r = 10, c = 15;
  42.     create(&wsk, r, c);
  43.     wyswietl(wsk, r, c);
  44.  
  45.     __asm{
  46.         pushad;
  47.         pushfd;
  48.  
  49.         mov ecx, r; // wczytujemy sobie liczbę naszych wierszy (czyli żeby wiedzieć kiedy skończyć przechodzić przez tablicę wskaźników)
  50. _zewnetrzna: ;// pętla po i (po tablicy wskaźników)
  51.         mov esi, wsk; // ptr // wczytujemy adres wskaźnika na tablice wskaźników
  52.         mov esi, dword ptr[esi + 4 * ecx - 4];// ptr[i] // przechodzimy na koniec tablicy wskaźników
  53.         ; // mamy jeden rejest licznikowy, a musimy gdzieś wpisać nasz drugi wymiar
  54.         push ecx ; // czyli odkładamy nasz aktualny iterator (ecx) na stos
  55.         mov ecx, c; // wpisujemy liczbę kolumn do rejestru licznikowego (ecx)
  56. _wewnetrzna:
  57.         mov dword ptr[esi + 4 * ecx - 4], 0;
  58.         loop _wewnetrzna;
  59.         pop ecx;
  60.         loop _zewnetrzna;
  61.  
  62.         popfd;
  63.         popad;
  64.     }
  65.  
  66.     wyswietl(wsk, r, c);
  67.     dispose(wsk, r);
  68.  
  69.     system("pause");
  70. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement