Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <iomanip>
- #include <ctime>
- using namespace std;
- void wyswietl(int** tab, int rows, int cols){
- for(int i = 0; i < rows; i++)
- {
- for(int j = 0; j < rows; j++)
- {
- cout << setw(4) << tab[i][j] << " ";
- }
- cout << endl;
- }
- cout << endl;
- }
- // potrójny wskaźnik bo przekazujemy adres wskaźnika w którym będziemy tworzyć
- void create(int*** ptr, int rows, int cols){
- (*ptr) = new int*[rows];
- for(int i = 0; i < rows; i++){
- (*ptr)[i] = new int[cols];
- for(int j = 0; j < cols; j++){
- (*ptr)[i][j] = rand() % 100;
- }
- }
- }
- void dispose(int** ptr, int rows){
- for(int i = 0; i < rows; i++){
- delete [] ptr[i];
- }
- delete [] ptr;
- }
- int main(){
- srand((unsigned)time(0));
- int** wsk;
- int r = 10, c = 15;
- create(&wsk, r, c);
- wyswietl(wsk, r, c);
- __asm{
- pushad;
- pushfd;
- mov ecx, r; // wczytujemy sobie liczbę naszych wierszy (czyli żeby wiedzieć kiedy skończyć przechodzić przez tablicę wskaźników)
- _zewnetrzna: ;// pętla po i (po tablicy wskaźników)
- mov esi, wsk; // ptr // wczytujemy adres wskaźnika na tablice wskaźników
- mov esi, dword ptr[esi + 4 * ecx - 4];// ptr[i] // przechodzimy na koniec tablicy wskaźników
- ; // mamy jeden rejest licznikowy, a musimy gdzieś wpisać nasz drugi wymiar
- push ecx ; // czyli odkładamy nasz aktualny iterator (ecx) na stos
- mov ecx, c; // wpisujemy liczbę kolumn do rejestru licznikowego (ecx)
- _wewnetrzna:
- mov dword ptr[esi + 4 * ecx - 4], 0;
- loop _wewnetrzna;
- pop ecx;
- loop _zewnetrzna;
- popfd;
- popad;
- }
- wyswietl(wsk, r, c);
- dispose(wsk, r);
- system("pause");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement