نمونه هایی از حل مسائل با آرایه های دو بعدی، وظایف برای حل مستقل. یک آرایه دو بعدی از اعداد واقعی با توجه به یک آرایه دو بعدی

با توجه به یک آرایه دو بعدی 5x5. ورودی عناصر، خروجی نتیجه را به شکل پنجره سازماندهی کنید. پس از یک مکث، رنگ پنجره هایی را که عناصر تعیین شده مطابق با شرایط در آنها ذخیره شده اند، تغییر دهید.

گزینه های وظیفه:

1.

2.

3.

4.

5.

6.

7.

8.

9.

10.

11. حاصل ضرب عناصری که بالای مورب اصلی قرار دارند را بیابید. همه عناصر فرد را با عدد یافت شده جایگزین کنید.

12. مجموع عناصری که در موقعیت های فرد قرار دارند را بیابید (مجموع شاخص های (i + j) برای Х ij یک عدد فرد است). تمام عناصر منفی را با عدد یافت شده جایگزین کنید.

13. حاصل ضرب تمام عناصری را که روی مورب اصلی قرار دارند پیدا کنید. تمام عناصر سطر پنجم و ستون دوم را با عدد یافت شده جایگزین کنید.

14. میانگین حسابی عناصر را در مورب اصلی و میانگین حسابی را در قطر ضلعی پیدا کنید. عناصر را روی مورب ها عوض کنید.

15. میانگین حسابی عناصر مثبتی را که بالای قطر اصلی قرار دارند، پیدا کنید. تمام عناصر منفی را با عدد یافت شده جایگزین کنید.

16. مجموع عناصر فرد را بیابید. تمام عناصری را که بالای مورب ثانویه هستند با عدد یافت شده جایگزین کنید.

17. حاصل ضرب عناصر ردیف i و ستون j را پیدا کنید (i، j- از صفحه کلید از قبل وارد کنید). همه عناصر زیر مورب ثانویه را با عدد یافت شده جایگزین کنید.

18. حاصل ضرب عناصری را که در موقعیت های زوج هستند بیابید (مجموع شاخص های (i + j) برای Х ij یک عدد فرد است). تمام عناصر موجود در مورب اصلی را با عدد یافت شده جایگزین کنید.

19. میانگین حسابی عناصر فرد را بیابید. تمام عناصر مورب کناری را با عدد یافت شده جایگزین کنید.

20. مجموع تمام عناصر زوجی که بالای قطر ثانویه هستند را بیابید. تمام عناصر خط چهارم را با عدد یافت شده جایگزین کنید.

21. حاصل ضرب عناصری که بالای مورب اصلی قرار دارند را بیابید. همه عناصر فرد را با عدد یافت شده جایگزین کنید.

22. مجموع عناصری که در موقعیت های فرد قرار دارند را بیابید (مجموع شاخص های (i + j) برای Х ij یک عدد فرد است). تمام عناصر منفی را با عدد یافت شده جایگزین کنید.

23. حاصل ضرب تمام عناصری را که روی مورب اصلی قرار دارند پیدا کنید. تمام عناصر سطر پنجم و ستون دوم را با عدد یافت شده جایگزین کنید.

24. میانگین حسابی عناصر را در مورب اصلی و میانگین حسابی را در قطر ضلعی پیدا کنید. عناصر را روی مورب ها عوض کنید.

25. میانگین حسابی عناصر مثبتی را که بالای قطر اصلی قرار دارند، پیدا کنید. تمام عناصر منفی را با عدد یافت شده جایگزین کنید.

به عنوان مثال: میانگین حسابی عناصر را در قطر اصلی پیدا کنید

بعد از مکث:

سوالات تستی

1. حالت متن چیست و چه تفاوتی با حالت معمولی دارد؟

2. پنجره چیست؟

3. چگونه مکان نما را به مختصات پنجره مشخص شده منتقل کنیم؟

4. چگونه می توان فونت / رنگ پس زمینه را تغییر داد؟

مقدمه

نوین دستگاه های فنی، طراحی شده برای کنترل و اتوماسیون، به طور گسترده ای از مدارهای باینری و سیستم دودوییحساب کردن تئوری جبر منطقی برای تجزیه و تحلیل و سنتز مدارهای سوئیچینگ ترکیبی و ترتیبی استفاده می شود.

مطالب سخنرانی در سه فصل ارائه شده است. در فصل اول، مفاهیم اساسی نظریه جبر منطق آورده شده، اشکال مختلف نمایش توابع بولی در نظر گرفته شده است. فصل دوم به مسائل کمینه سازی نمایش توابع بولی اختصاص دارد که اساس سنتز انتزاعی دستگاه های گسسته است. فصل سوم حاوی اطلاعاتی در مورد نحوه اجرای توابع بولی بر اساس مدارهای سوئیچینگ است که اساس سنتز ساختاری دستگاه های گسسته است.

هنگام نوشتن یادداشت های سخنرانی، از ادبیات زیر استفاده شد: برای بخش 1.1 -; برای بخش 1.2 - ; برای بخش 1.3 - ; برای بخش 2.1 - ; برای بخش 2.2 - ; برای بخش های 3.1، 3.2 - .

بخش بعدی وظایف علوم کامپیوتر برای دانش آموزان مدرسه به موقع رسید. این بار کار با آرایه های دو بعدی در C++ را بررسی می کنیم. این وظایف بسیار جالب هستند. و من بیشتر آنها را دوست داشتم.

وظیفه شماره 1

شاخص های اولین رخداد عنصر حداکثر را بیابید.
فرمت داده های ورودی
این برنامه اندازه های آرایه n و m را به عنوان ورودی دریافت می کند، سپس n خط با m عدد هر کدام را دریافت می کند. n و m از 100 تجاوز نمی کند.
فرمت خروجی
دو عدد را چاپ کنید: تعداد سطر و تعداد ستون حاوی بزرگترین عنصر در آرایه دو بعدی. اگر چندین عنصر از این قبیل وجود داشته باشد، یکی با شماره ردیف پایین نمایش داده می شود، و اگر شماره ردیف ها برابر باشد، آنگاه یکی با شماره ستون پایین نمایش داده می شود.

ورودی نمونه: 3 4 0 3 2 4 2 3 5 5 5 1 2 3 خروجی نمونه: 1 2

#عبارتند از با استفاده از namespace std. int main() ( int n, m; cin >> n >> m؛ int a; // خواندن برای (int i = 0; i< n; i++) { for (int j = 0; j < m; j++) { cin >>a[i][j]; ) ) int max = a، max_i = 0، max_j = 0; برای (int i = 0; i< n; i++) { for (int j = 0; j < m; j++) { if (a[i][j] >max) ( max = a[i][j]; max_i = i؛ max_j = j; ) )) cout<< max_i << " " << max_j; return 0; }

وظیفه شماره 2

با توجه به عدد فرد n، نه بزرگتر از 15. یک آرایه دو بعدی از عناصر n×n ایجاد کنید و آن را با "." (هر عنصر آرایه رشته ای از یک کاراکتر است). سپس ردیف وسط آرایه، ستون وسط آرایه، مورب اصلی و مورب ثانویه را با کاراکترهای "*" پر کنید. در نتیجه، "*" در آرایه باید یک تصویر ستاره تشکیل دهد. آرایه به دست آمده را روی صفحه نمایش دهید و عناصر آرایه را با فاصله از هم جدا کنید.

ورودی نمونه: 5 خروجی نمونه: * . * . * . * * * . * * * * * . * * * . * . * . *

#عبارتند از با استفاده از namespace std. int main() ( int n؛ cin >>< n; i++) { for (int j = 0; j < n; j++) { if (i == j || i == n - 1 - j || i == n / 2 || j == n / 2) a[i][j] = 1; else a[i][j] = 0; } } for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { if (a[i][j] == 0) cout << "." << " "; else cout << "*" << " "; } cout << endl; } return 0; }

وظیفه شماره 3

یک عدد n بزرگتر از 100 داده می شود. یک آرایه n×n ایجاد کنید و طبق قانون زیر آن را پر کنید. روی مورب اصلی باید اعداد 0 نوشته شود روی دو مورب مجاور اصلی اعداد 1 روی دو مورب بعدی اعداد 2 و غیره.

ورودی نمونه: 5 خروجی نمونه: 0 1 2 3 4 1 0 1 2 3 2 1 0 1 2 3 2 1 0 1 4 3 2 1 0

#عبارتند از #عبارتند از با استفاده از namespace std. int main() ( int n؛ cin >> n؛ int a؛ // پردازش برای (int i = 0; i< n; i++) { for (int j = 0; j < n; j++) { a[i][j] = (int) abs(i - j); } } for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { cout << a[i][j] << " "; } cout << endl; } return 0; }

وظیفه شماره 4

یک آرایه دو بعدی و دو عدد i و j در نظر گرفته شده است. ستون ها را با اعداد i و j در آرایه عوض کنید.
فرمت داده های ورودی
برنامه اندازه آرایه n و m را که از 100 تجاوز نمی کند، سپس عناصر آرایه و سپس اعداد i و j را به عنوان ورودی دریافت می کند.
فرمت خروجی
خروجی نتیجه.

ورودی نمونه: 0 1 خروجی نمونه: 12 11 13 14 22 21 23 24 32 31 33 34

#عبارتند از #عبارتند از با استفاده از namespace std. int main() ( int n, m, x, y, temp; cin >> n >>< n; i++) { for (int j = 0; j < m; j++) { cin >>a[i][j]; ) cin >> x >> y; // پردازش برای (int i = 0; i< n; i++) { temp = a[i][x]; a[i][x] = a[i][y]; a[i][y] = temp; } // вывод for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { cout << a[i][j] << " "; } cout << endl; } return 0; }

وظیفه شماره 5

به شما یک عدد n بیش از 10 و یک آرایه به اندازه n × n داده می شود. بررسی کنید که آیا این آرایه نسبت به قطر اصلی متقارن است یا خیر. اگر آرایه متقارن است کلمه "YES" و در غیر این صورت کلمه "NO" را چاپ کنید.

ورودی نمونه: 3 0 1 2 1 2 3 2 3 4 خروجی نمونه:آره

#عبارتند از #عبارتند از با استفاده از namespace std. int main() (int n؛ bool متقارن؛ cin >> n؛ int a؛ // پر کردن برای (int i = 0؛ i< n; i++) { for (int j = 0; j < n; j++) { cin >>a[i][j]; ) ) // پردازش متقارن = درست; برای (int i = 0; i< n; i++) { for (int j = 0; j < n; j++) { if (a[i][j] != a[j][i]) symmetric = false; } } // вывод if (symmetric) cout << "YES"; else cout << "NO"; return 0; }

وظیفه شماره 6

یک آرایه دو بعدی مربعی به اندازه n × n و یک عدد k داده می شود. عناصر مورب k ام را در زیر مورب اصلی چاپ کنید (یعنی اگر k = 1 باشد، پس باید عناصر مورب اول را زیر مورب اصلی چاپ کنید، اگر k = 2، سپس مورب دوم و غیره).
مقدار k می تواند منفی باشد، برای مثال، اگر k = -1 باشد، باید مقدار اولین مورب را که بالای مورب اصلی قرار دارد چاپ کنید. اگر k = 0 باشد، باید عناصر مورب اصلی را چاپ کنید.
برنامه یک عدد n که از 10 تجاوز نمی کند، سپس یک آرایه n × n و سپس یک عدد k را به عنوان ورودی می گیرد.

ورودی نمونه 1: 4 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 1 نمونه خروجی 1: 5 1 6 ورودی نمونه 2: 4 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 -2 نمونه خروجی 2: 3 8

#عبارتند از با استفاده از namespace std. int main() (int n, k؛ cin >> n؛ int a[n][n]؛ // پر کردن برای (int i = 0; i< n; i++) { for (int j = 0; j < n; j++) { cin >>a[i][j]; ) cin >> k; // پردازش و خروجی برای (int i = 0; i< n; i++) { for (int j = 0; j < n; j++) { if (i - j - k == 0) cout << a[i][j] << " "; } } return 0; }

وظیفه شماره 7

با توجه به یک آرایه دو بعدی به اندازه n×m (n و m از 1000 تجاوز نمی کنند). آرایه ای که نسبت به قطر اصلی با آن متقارن باشد به آرایه داده شده منتقل می شود. دارای ابعاد m×n است: ردیف‌های آرایه اصلی به ستون‌های تبدیل شده تبدیل می‌شوند، ستون‌های آرایه اصلی به ردیف‌هایی تبدیل می‌شوند.
برای آرایه داده شده، آرایه انتقال یافته را بسازید و آن را روی صفحه نمایش دهید.

ورودی نمونه: 3 4 11 12 13 14 21 22 23 24 31 32 33 34 خروجی نمونه: 11 21 31 12 22 32 13 23 33 14 24 34

#عبارتند از با استفاده از namespace std. int main() ( int n, m, x, y, temp; cin >> n >>< n; i++) { for (int j = 0; j < m; j++) { cin >> < n; i++) { for (int j = 0; j < m; j++) { b[j][i] = a[i][j]; } } // вывод for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { cout << b[i][j] << " "; } cout << endl; } return 0; }

وظیفه شماره 8

سینما دارای n ردیف m صندلی است (n و m از 20 بیشتر نمی شود). آرایه دو بعدی اطلاعات بلیط های فروخته شده را ذخیره می کند، عدد 1 به این معنی است که بلیط این صندلی قبلا فروخته شده است، عدد 0 به معنای رایگان بودن صندلی است. درخواستی مبنی بر فروش k بلیط برای صندلی های همسایه در همان ردیف دریافت شده است. تعیین کنید که آیا چنین درخواستی می تواند برآورده شود یا خیر.
فرمت داده های ورودی
برنامه اعداد n و m را به عنوان ورودی دریافت می کند. سپس n خط حاوی m عدد (0 یا 1) وجود دارد که با فاصله از هم جدا شده اند. سپس عدد k داده می شود.
فرمت خروجی
برنامه باید تعداد ردیفی را که k صندلی خالی متوالی دارد چاپ کند. اگر چندین ردیف وجود دارد، تعداد کوچکترین ردیف مناسب را چاپ کنید. اگر ردیف مناسبی وجود ندارد، عدد 0 را چاپ کنید.

ورودی نمونه: 3 4 0 1 0 1 1 0 0 1 1 1 1 1 2 خروجی نمونه: 2

#عبارتند از با استفاده از namespace std. int main() ( int n, m, k, r = 0; cin >> n >> m؛ int a[n][m]؛ // پر کردن برای (int i = 0; i< n; i++) { for (int j = 0; j < m; j++) { cin >>a[i][j]; ) cin >> k; // پردازش برای (int i = 0; i< n; i++) { int near_free = 0; for (int j = 0; j < m; j++) { if (a[i][j] == 0) { near_free++; if (near_free == k) { r = i + 1; break; } } else near_free = 0; } if (near_free == k) break; } // вывод cout << r; return 0; }

وظیفه شماره 9

یک آرایه مستطیلی به اندازه n×m داده می شود. آن را 90 درجه در جهت عقربه های ساعت بچرخانید و نتیجه را در یک آرایه m×n جدید بنویسید.
فرمت داده های ورودی
دو عدد n و m وارد می شود که از 100 تجاوز نمی کند، سپس یک آرایه به اندازه n×m وارد می شود.
فرمت خروجی
آرایه به دست آمده را خروجی بگیرید. اعداد را با یک فاصله جدا کنید.

ورودی نمونه: 3 4 11 12 13 14 21 22 23 24 31 32 33 34 خروجی نمونه: 31 21 11 32 22 12 33 23 13 34 24 14

#عبارتند از با استفاده از namespace std. int main() (int n, m؛ cin >> n >> m؛ int a[n][m]؛ int b[m][n]؛ // پر کردن برای (int i = 0; i< n; i++) { for (int j = 0; j < m; j++) { cin >>a[i][j]; ) ) // پردازش برای (int i = 0؛ i< n; i++) { for (int j = 0; j < m; j++) { b[j] = a[i][j]; } } // вывод for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { cout << b[i][j] << " "; } cout << endl; } return 0; }

وظیفه شماره 10

با توجه به اعداد n و m، همانطور که در مثال نشان داده شده است، یک آرایه دو بعدی به اندازه n×m را با اعداد 1 تا n×m با یک "مار" پر کنید.
فرمت داده های ورودی
دو عدد n و m وارد می شود که هر کدام از 20 تجاوز نمی کند.
فرمت خروجی

ورودی نمونه: 3 5 خروجی نمونه: 1 2 3 4 5 10 9 8 7 6 11 12 13 14 15

#عبارتند از با استفاده از namespace std. int main() ( int n, m, c = 0; cin >> n >> m؛ int a[n][m]؛ // پردازش برای (int i = 0; i< n; i++) { for (int j = 0; j < m; j++) { c++; if (i%2 == 0) a[i][j] = c; else a[i] = c; } } // вывод for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { if (a[i][j] % 10 == a[i][j]) cout << " "; else if (a[i][j] % 100 == a[i][j]) cout << " "; else if (a[i][j] % 1000 == a[i][j]) cout << " "; cout << a[i][j]; } cout << endl; } return 0; }

وظیفه شماره 11

با توجه به اعداد n و m، همانطور که در مثال نشان داده شده است، یک آرایه دو بعدی n×m را با اعدادی از 1 تا n×m پر کنید.
فرمت داده های ورودی

فرمت خروجی
آرایه به دست آمده را خروجی بگیرید و دقیقاً 4 کاراکتر برای هر عنصر باقی بگذارید.

ورودی نمونه: 3 5 خروجی نمونه: 1 2 4 7 10 3 5 8 11 13 6 9 12 14 15

#عبارتند از با استفاده از namespace std. int main() (int n، m، pos = 0، ردیف = 0؛ cin >> n >> m؛ int a[n][m]؛ // پردازش int start_row = 0؛ int number = 1؛ برای ( int min_row = 0;min_row< n; min_row++) { if (min_row >0) start_row = pos - 1; else start_row = 0; برای (pos = start_row; pos< m; pos++) { row = min_row; for (int col = pos; col >= 0; col--) (اگر (ردیف< n) { a = number; number++; row++; } else break; } } } // вывод for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { if (a[i][j] % 10 == a[i][j]) cout << " "; else if (a[i][j] % 100 == a[i][j]) cout << " "; else if (a[i][j] % 1000 == a[i][j]) cout << " "; cout << a[i][j]; } cout << endl; } return 0; }

وظیفه شماره 12

اعداد n و m داده شده است. یک آرایه n × m را با الگوی شطرنجی پر کنید: سلول های یک رنگ با صفر و سلول های رنگ دیگر با اعداد طبیعی از بالا به پایین و از چپ به راست پر می شوند. در گوشه سمت چپ بالا عدد 1 نوشته شده است.
فرمت داده های ورودی
دو عدد n و m وارد می شود که از 100 تجاوز نمی کند.
فرمت خروجی
آرایه به دست آمده را خروجی بگیرید و دقیقاً 4 کاراکتر برای هر عنصر باقی بگذارید.

ورودی نمونه: 3 5 خروجی نمونه: 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8

#عبارتند از با استفاده از namespace std. int main() (int n، m، sm؛ cin >> n >> m؛ int a[n][m]؛ // پردازش عدد int = 1؛ برای (int i = 0؛ i< n; i++) { for (int j = 0; j < m; j++) { a[i][j] = 0; } } for (int i = 0; i < n; i++) { if (i % 2 == 1) sm = 1; else sm = 0; for (int j = sm; j < m; j++) { a[i][j] = number; number++; j++; } } for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { if (a[i][j] % 10 == a[i][j]) cout << " "; else if (a[i][j] % 100 == a[i][j]) cout << " "; else if (a[i][j] % 1000 == a[i][j]) cout << " "; cout << a[i][j]; } cout << endl; } return 0; }

وظیفه شماره 13

با توجه به اعداد n و m، یک آرایه دو بعدی به اندازه n×m را با اعداد از 1 تا n×m به صورت مارپیچی پر کنید که از گوشه سمت چپ بالا شروع می شود و در جهت عقربه های ساعت می چرخد، همانطور که در مثال نشان داده شده است.
فرمت داده های ورودی
دو عدد n و m وارد می شود که از 100 تجاوز نمی کند.
فرمت خروجی
آرایه به دست آمده را خروجی بگیرید و دقیقاً 4 کاراکتر برای هر عنصر باقی بگذارید.

ورودی نمونه: 4 5 خروجی نمونه: 1 2 3 4 5 14 15 16 17 6 13 20 19 18 7 12 11 10 9 8

#عبارتند از با استفاده از namespace std. int main() (int n, m؛ cin >> n >> m؛ int a؛ برای (int i = 0؛ i<= n + 1; i++) { for (int j = 0; j <= m + 1; j++) { a[i][j] = -1; } } for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { a[i][j] = 0; } } int num = 0, row = 1, col = 0; while (num < n * m) { while (a == 0) { col++; num++; a = num; } while (a == 0) { row++; num++; a = num; } while (a == 0) { col--; num++; a = num; } while (a == 0) { row--; num++; a = num; } } for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { if (a[i][j] % 10 == a[i][j]) cout << " "; else if (a[i][j] % 100 == a[i][j]) cout << " "; else if (a[i][j] % 1000 == a[i][j]) cout << " "; cout << a[i][j]; } cout << endl; } return 0; }

0 0

لطفا جاوا اسکریپت را برای مشاهده فعال کنید

کار آزمایشگاهی برای مدارس و دانشگاه ها در حل مشکلات پردازش آرایه های دو بعدی در C (C). لیست وظایف کار آزمایشگاهی (در صورت وجود روی لینک راهنمایی برای حل مشکل کلیک کنید):

وظایف اضافی:

همه برنامه ها در CodeBlocks 16.01 (MinGW، Windows 10) تست شده اند. شما می توانید راه حل های خود را برای برنامه های حل نشده و پیشنهادات برای بهبود برنامه های موجود در نظرات پایین صفحه ارائه دهید.

دانلود فایل آزمایشگاهی و تمامی سورس کدهای برنامه های موجود در آرشیو:


همچنین می توانید راه حل هایی را برای آزمایشگاه های خود در C++ و بسیاری دیگر سفارش دهید:

شماره 1: یک آرایه دو بعدی داده می شود. حداقل مجموع عناصر یک رشته را پیدا کنید. بدون استفاده از آرایه تک بعدی اضافی مشکل را حل کنید.

#عبارتند از #عبارتند از #عبارتند از int main() (int *arr؛ int x, y, i, j, sum = 0, min = 0, minstr = 0; srand(time(NULL)); x = 2 + rand() % 10؛ y = 2 + rand() % 6؛ arr = (int*)malloc(x*y*sizeof(int))؛ printf("آرایه %d x %d: \n"، x, y)؛ برای (i = 0; من

شماره 2: مختصات عنصر نزدیک به میانگین تمام عناصر آرایه را تعیین کنید.

#عبارتند از #عبارتند از #عبارتند از #عبارتند از int main() (int *arr؛ int x, y, i, j, minx = 0, miny = 0؛ float ssum = 0؛ srand(time(NULL)); x = 1 + rand() % 10; y = 1 + rand() % 7؛ arr = (int*)malloc(x*y*sizeof(int)); printf("آرایه %d x %d: \n"، x, y)؛ برای (i = 0 من

شماره 9: یک آرایه دو بعدی با تعداد زوج زوج داده می شود. ستون های نیمه چپ آرایه را با ستون های نیمه سمت راست عوض کنید.

#عبارتند از #عبارتند از #عبارتند از int main() (int *arr؛ int x, y, i, j, d؛ srand(time(NULL))؛ x = 1 + rand() % 10؛ y = 2 * (1 + rand() % 3 arr = (int*)malloc(x*y*sizeof(int))؛ printf("آرایه %d x %d: \n"، x, y)؛ برای (i = 0; i

شماره 14: برای هر ردیف از یک آرایه دو بعدی، تعداد عناصری که آخرین رقم آنها برابر با a است را دریابید.

#عبارتند از #عبارتند از #عبارتند از int main() (int *arr; int x, y, i, j, a, count; srand(time(NULL))؛ printf("A:")؛ scanf("%d"، &a)؛ x = 1 + rand() % 10؛ y = 1 + rand() % 7؛ arr = (int*)malloc(x*y*sizeof(int)); printf("آرایه %d x %d: \n"، x، y)؛ برای (i = 0؛ i

شماره 21: با توجه به یک آرایه دو بعدی b. با در نظر گرفتن آن به عنوان یک ماتریس، b را جابجا کنید.

#عبارتند از #عبارتند از #عبارتند از int main() (int *arr، *arrT، x، y، i، j؛ srand(time(NULL))؛ x = 1 + rand() % 7؛ y = 1 + rand() % 7؛ arr = (int*)malloc(x*y*sizeof(int)); printf("ماتریس %d x %d: \n"، x، y)؛ برای (i = 0; i

شماره 1 (اضافی): یک آرایه دو بعدی داده شده است. رشته های آن را به ترتیب غیر کاهشی اولین عناصرشان مرتب کنید.

#عبارتند از #عبارتند از #عبارتند از int main() (int *arr، x، y، i، j، k، d، max = 0؛ srand(time(NULL)); x = 1 + rand() % 10; y = 1 + rand() % 7؛ arr = (int*)malloc(x*y*sizeof(int))؛ printf("آرایه %d x %d: \n"، x, y)؛ برای (i = 0; i *(arr + max*y)) max = j؛ برای (k = 0؛ k

شماره 2 (اضافی): تعیین کنید که آیا ماتریس مربع داده شده متعارف است یا خیر. یکی که در آن حاصل ضرب اسکالر هر جفت رشته مجزا 0 و حاصل ضرب اسکالر هر رشته با خودش 1 است.

#عبارتند از #عبارتند از int main() (int *arr; int x, i, j, k, sum = 0; printf("اندازه ماتریس مربع را وارد کنید: "); scanf("%d"، &x)؛ arr = (int *)malloc(x*x*sizeof(int))؛ printf("عنصرهای ماتریس %d x %d: \n"، x، x را وارد کنید؛ برای (i = 0; i

شماره 3 (اضافی): یک آرایه دو بعدی مربعی داده شده است. مجموع عناصر هر یک از مورب های آن را موازی با ثانویه بیابید.

#عبارتند از #عبارتند از #عبارتند از int main() (int *arr؛ int x, y, i, j, sum; srand(time(NULL))؛ x = 2 + rand() % 6؛ arr = (int*)malloc(x*y* sizeof(int)); printf("آرایه %d x %d: \n"، x، x); برای (i = 0; i

مسائل مربوط به آرایه های دو بعدی

1) آرایه دو بعدی از اعداد صحیح داده شده است. یک برنامه بنویسید:

الف) نمایش عنصر واقع در گوشه سمت راست بالای آرایه؛

ب) نمایش عنصر واقع در گوشه سمت چپ پایین آرایه.

ج) نمایش هر عنصر از ردیف دوم آرایه روی صفحه؛

د) نمایش هر عنصر از ستون سوم آرایه.

ه) نمایش هر عنصر آرایه بر روی صفحه نمایش.

2) یک آرایه عدد صحیح دو بعدی داده شده است. مبادله:

الف) عناصر واقع در گوشه سمت راست بالا و پایین سمت چپ؛

ب) عناصر واقع در گوشه پایین سمت راست و بالا سمت چپ؛

3) شماره خط مشخص است که عنصر مورب اصلی یک آرایه دو بعدی از اعداد صحیح روی آن قرار دارد. مقدار این عنصر را نمایش دهید.

4) نمایش (در یک خط):

الف) تمام عناصر مورب اصلی آرایه

ب) تمام عناصر مورب اصلی آرایه، با عنصر واقع در گوشه سمت راست پایین شروع می شود.

5) مقادیر تمام عناصر مورب اصلی یک آرایه عدد صحیح را با صفر جایگزین کنید.

6) مقادیر تمام عناصر مورب ثانویه یک آرایه عدد صحیح را با مقادیر برابر با 100 جایگزین کنید.

7) تعیین کنید:

الف) مجموع عناصر مورب اصلی آرایه؛

ب) مجموع عناصر قطر ثانویه آرایه.

ج) میانگین حسابی عناصر مورب اصلی آرایه؛

د) میانگین حسابی عناصر قطر ثانویه آرایه.

ه) حداقل (حداکثر) عنصر مورب اصلی آرایه.

f) حداکثر (حداقل) عنصر قطر ثانویه یک آرایه واقعی.

g) مختصات اولین عنصر حداکثر قطر اصلی.

h) مختصات اولین عنصر حداقل قطر اصلی.

الف) نمایش تمام عناصر خط پنجم آرایه؛

ب) نمایش تمام عناصر خط سوم آرایه، با شروع از آخرین عنصر این خط.

ج) نمایش تمام عناصر ستون s آرایه.

د) مقادیر تمام عناصر ردیف دوم آرایه را با عدد 5 جایگزین کنید.

ه) مقادیر تمام عناصر ستون پنجم را با عدد 10 جایگزین کنید.

و) تعیین حداکثر (حداقل) عنصر ستون سوم.

9) یک آرایه دو بعدی از اعداد صحیح داده شده است. یک برنامه بنویسید:

الف) محاسبه حاصل ضرب هر دو عنصر از هر رشته آرایه

ب) مجموع تمام عناصر هر رشته آرایه؛

10) یک آرایه دو بعدی از اعداد صحیح داده شده است. تعریف کردن:

الف) الف) در کدام ستون از آرایه مجموع عناصر کمتر است، در اولین یا در آخرین.

ب) ب) حاصل ضرب عناصر در کدام خط بیشتر است، در دوم یا در سوم.

11) یک آرایه عدد صحیح دو بعدی به اندازه 10 x 10 داده می شود. بخشی از آرایه را روی صفحه نمایش دهید:

الف) بالای مورب اصلی قرار دارد.



ب) در زیر مورب اصلی قرار دارد.

ج) در بالای مورب ثانویه قرار دارد.

د) در زیر مورب ثانویه قرار دارد.

12) با توجه به آرایه دو بعدی از اعداد صحیح:

الف) در هر یک از ستون های آن حداکثر (حداقل) عنصر را پیدا کنید.

ب) مختصات عنصر حداکثر (حداقل)؛

ج) مجموع عناصر فرد در هر ستون (ردیف)؛

د) تعداد عناصری که مضرب A یا B هستند.

ه) ردیفی را با حداکثر مجموع عناصر پیدا کنید.

و) ستونی را با حداقل مجموع عناصر پیدا کنید.

  • آموزشی: به شکل گیری ایده ای از یک آرایه دو بعدی و ویژگی های اساسی ماتریس های مربع کمک می کند. اقداماتی را که می توان روی ماتریس ها انجام داد را در نظر بگیرید. معرفی الگوریتم های معمولی برای پردازش ماتریس ها در پاسکال. ایجاد شرایط برای شکل گیری توانایی حل الگوریتم ها با آرایه های دو بعدی.
  • در حال توسعه:
  • ایجاد شرایط برای توسعه مهارت های کار برای مدت زمان محدود، توسعه مهارت های کار مستقل، توسعه مهارت های کار با یادداشت ها.
  • آموزشی:
  • برای ترویج ایجاد آرامش روانی برای کار در درس، آموزش متانت، نگرش مسئولانه به کار و افزایش انگیزه برای فعالیت های آموزشی.

نوع درس: ترکیبی

روش تدریس: سخنرانی، کار مستقل.

اشکال سازمان: کار جبهه ای، کار فردی.

تجهیزات: تکالیف برای کار کلاسی (کارت های فردی، تکالیف در رایانه)، یادداشت های روی تخته.

در طول کلاس ها:

1. لحظه سازمانی.

با درود.
موضوع گزارش شد.
هدف درس و وظایف را تعیین کنید.

2. به فعلیت رساندن دانش کسب شده

نکات اصلی مبحث قبل به صورت شفاهی گفته می شود: "آرایه های یک بعدی". بررسی مینی فرونتال در مورد تعاریف اصلی.

3. تعیین هدف، تنظیم وظایف:

  • مفهوم آرایه دو بعدی را تعریف کنید.
  • نماد یک آرایه دو بعدی را در نظر بگیرید
  • ویژگی های اساسی ماتریس های مربع را در نظر بگیرید.
  • اقداماتی را که می توان روی ماتریس ها انجام داد را در نظر بگیرید.
  • با الگوریتم های معمولی برای پردازش ماتریس ها در پاسکال آشنا شوید.
  • ایجاد شرایط برای شکل گیری توانایی حل الگوریتم ها با آرایه های دو بعدی.
  • 4. سخنرانی

    تعریف.

    آرایه دو بعدی مجموعه ای از داده ها است که هر مقدار آن به دو عدد بستگی دارد که می توان آنها را به عنوان شاخص یک ستون در یک ماتریس در نظر گرفت.

    فرمت ضبط

    <имя>: آرایه[n_index_1..to_index_1، n_index_2 ..to_index_2] از <тип>

    الف: آرایه ای از اعداد صحیح؛

    برای استفاده از یک عنصر از یک آرایه، باید نام آرایه و شاخص عنصر را مشخص کنید. شاخص اول مربوط به شماره ردیف، دومی به شماره ستون است. مثلا:

    برای i:=1 تا n انجام
    برای j:=1 تا n انجام دهید
    a:= تصادفی (100);

    هنگام راه اندازی آرایه های دو بعدی، هر خط در یک جفت پرانتز اضافی محصور می شود:

    const a:mas= ((2,3,1,0)
    (1,9,1,3),
    (3,5,7,0));

    مشابه آرایه های پاسکال در ریاضیات، ماتریس ها هستند. ماتریسی که تعداد سطرهای آن برابر با تعداد ستون ها باشد را ماتریس مربع می گویند. A(n,n) - ماتریس مربع

    ویژگی های اصلی ماتریس های مربع:

    1. ماتریس های مربع دارای قطرهای اصلی و جانبی هستند. به عنوان مثال، برای ماتریس A، عناصر 1.5 و 9 روی قطر اصلی و 3، 5 و 7 روی مورب کناری قرار دارند.

    i=j - عناصر در مورب اصلی قرار دارند.
    i> j - عناصر زیر مورب اصلی قرار دارند.
    من i?j - عناصر در مورب اصلی و زیر قرار دارند.
    i+j= n+1– عناصر روی مورب ثانویه قرار دارند.
    i+j< n+1– элементы расположены над побочной диагональю;
    i+j> n+1 - عناصر در زیر قطر ثانویه قرار دارند.

    2. ماتریس مربعی که در آن همه عناصر به استثنای عناصر مورب اصلی برابر با صفر باشند، نامیده می شود. ماتریس مورب

    3. یک ماتریس مورب که در آن همه عناصر روی قطر اصلی برابر با 1 هستند نامیده می شود ماتریس هویت

    4. اگر در ماتریس A (m, n) ردیف ها و ستون ها با هم عوض شوند، ماتریس A t (m, n) به دست می آید که به آن ماتریس جابجا شده می گویند.

    اقدامات اساسی که می توان روی ماتریس ها انجام داد

    • خلاصه کردن
    • تفاوت را پیدا کنید
    • حاصل ضرب یک ماتریس با مقداری
    • حاصل ضرب دو ماتریس

    الگوریتم‌های پردازش ماتریسی معمولی در پاسکال

    1. خروجی ماتریس به صورت جدول:
    2. برای i:= 1 تا n انجام
      شروع
      برای j:= 1 تا m انجام دهید
      نوشتن (a:4);
      نوشته شده است
      پایان؛

    3. استفاده از مولد اعداد تصادفی:
    4. تصادفی کردن
      برای i:=1 تا m انجام دهید
      شروع
      برای j:=1 تا n انجام دهید
      شروع
      a:= تصادفی (100) -10;
      نوشتن (a:4);
      پایان؛
      نوشتن
      پایان؛

    5. روش دوم برای نمایش ماتریس به شکل جدول:
    6. برای i:= 1 تا n انجام
      برای j:= 1 تا m انجام دهید
      اگر j>m بنویسید (a:4)
      other writeln(a:4);

    7. جمع ماتریس:
    8. برای i:= 1 تا n انجام
      شروع
      برای j:= 1 تا m انجام دهید
      c:=a+b
      پایان؛

    9. جابجایی یک ماتریس یک تصویر آینه ای از عناصر آن با توجه به مورب اصلی است. می توانید این کار را با معرفی یک آرایه جدید انجام دهید:

    برای i:= 1 تا n انجام
    برای j: = 1 تا n انجام دهید
    b=a;

    5. کنترل اولیه

    "نقشه کانتور" 2 گزینه

    1 گزینه

    1. تصحیح اشتباهات در توصیف یک آرایه دو بعدی:
    2. Var
      A= آرایه عدد صحیح.

      … … آرایه های دو بعدی، هر خط در یک جفت پرانتز اضافی محصور شده است:

      const a:mas= ((2,3,1,0)
      (1,9,1,3),
      (3,5,7,0));

    3. درج تعاریف گمشده:
    4. عملیات اساسی قابل انجام بر روی ماتریس ها: جمع، حاصل ضرب دو ماتریس، ….،….

    5. درج تعاریف گمشده:
    6. ماتریسی که تعداد سطرهای آن برابر با تعداد ستون ها باشد ... نامیده می شود. ….. .

    7. یافتن خطاها در الگوریتم:

    برای i:= 1 تا n انجام
    شروع
    برای j:= 1 تا m انجام دهید
    c:=a+a
    پایان؛

    گزینه 2

    1. تصحیح اشتباهات در توضیحات آرایه:

    پایان
    n=4; m=3;
    نوع
    mas:آرایه عدد صحیح;

    1. درج تعاریف گمشده:
    2. …… مجموعه ای از داده ها است که هر مقدار آن به دو عدد بستگی دارد که می توان آن ها را به عنوان شاخص یک ستون در یک ماتریس در نظر گرفت.

    3. درج تعاریف گمشده:
    4. یک ماتریس مورب که در آن تمام عناصر روی قطر اصلی برابر با ... هستند نامیده می شود ماتریس هویت

    5. درج تعاریف گمشده:
    6. ماتریس مربعی که در آن همه عناصر، به استثنای عناصر قطر اصلی، برابر با صفر هستند، نامیده می شود. … … .

    7. یافتن خطاها در الگوریتم:

    تصادفی کردن
    برای i:=1 تا m انجام دهید
    شروع
    برای j:=1 تا n انجام دهید
    شروع
    a:= تصادفی (100) -10;
    پایان؛
    پایان؛

    وظیفه معمولی الگوریتم چیست؟

    الگوریتم ها در پاسکال

    1. برنامه ای بنویسید که برای یک ماتریس اعداد صحیح 3×4، میانگین حسابی عناصر آن و تعداد عناصر مثبت هر سطر را تعیین کند. پیوست 2
    2. برنامه medium_n;
      const m=3;
      n=4;
      var

      i,j,n_pos_el:integer;
      sred:real;
      شروع
      برای i:=1 تا m انجام دهید
      برای j:=1 تا n را بخوانید(a);
      mid:=0;
      برای i:=1 تا m شروع کنید
      n_pos_el:=0;
      برای j:=1 تا n شروع کنید
      sred:=sred+a;
      اگر a>0 سپس inc(n_pos_el);
      پایان؛
      writeln("V",i,"-oi stroke",n_pos_el,"polozitelnix elementov");
      پایان؛
      sred:=sred/m/n;
      writeln("Srednee arithmeticheskoe:",sred:6:2);
      پایان.

    3. برنامه ای بنویسید که با در نظر گرفتن یک ماتریس اعداد صحیح 3x4، تعداد ستون سمت چپی که فقط حاوی عناصر مثبت است را تعیین کند. اگر چنین ستونی وجود نداشته باشد، یک پیام نمایش داده می شود. پیوست 3

    برنامه num_posit;
    const m=3;
    n=4;
    var
    الف: آرایه ای از اعداد صحیح؛
    i,j,num:integer;
    all_posit:boolean;
    شروع
    تصادفی کردن
    برای i:=1 تا m انجام دهید
    شروع
    برای j:=1 تا n انجام دهید
    شروع
    a:= تصادفی (100) -10;
    نوشتن (a:4);
    پایان؛
    نوشتن
    پایان؛
    num:=0;
    برای j:=1 تا n شروع کنید
    all_posit:=true;
    برای i:=1 تا m انجام دهید
    اگر یک< 0 then
    شروع
    all_posit:=false;
    زنگ تفريح؛ پایان؛
    if all_posit سپس شروع کنید
    num:=j; زنگ تفريح؛ پایان؛
    پایان؛
    اگر num = 0 باشد
    writeln ("Takix stolbcov net")
    دیگر
    writeln("ستون شماره:", num);
    پایان.

    دانش آموزان فایل ها را با پاسکال آپلود می کنند، این الگوریتم را تجزیه و تحلیل می کنند، نتایج اجرای برنامه را مشاهده می کنند، به سوالات اضافی پاسخ می دهند:

    1. یک آرایه دو بعدی چگونه سازماندهی می شود؟
    2. رویه inc به چه معناست؟
    3. روش استراحت به چه معناست؟
    4. چگونه از مولد اعداد تصادفی استفاده می شود؟

    6. شکل گیری مهارت های حل مسئله.

    حل مسائل روی کارت های فردی به طور مستقل، در یک محیط الگوریتمی.

    نمونه کارها:

    1. یک ماتریس 5x5 A حاوی عناصر تصادفی داده شده است. مجموع تمام عناصر ماتریس را پیدا کنید.
    2. جدول فیثاغورث را نمایش دهید.
    3. مجموع عناصر مثبت ستون مشخص شده از ماتریس A 5x5 اعداد صحیح را بیابید.

    7. نتایج درس، تنظیم تکالیف.

    خلاصه کردن. ارزیابی سطح جذب.

    چکیده D/Z، وظایف:

    برای همه:

    1. یک آرایه مربع دو بعدی داده می شود. تعداد سطرهایی را بیابید که همه عناصر آنها برابر با صفر هستند.
    2. یک آرایه مربع دو بعدی داده می شود. تعداد خطوطی را بیابید که عناصر هر کدام یکسان هستند.
    3. حداقل عنصر یک آرایه دو بعدی را تعیین کنید. شماره خط حاوی حداکثر تعداد حداقل عناصر را چاپ کنید.
    4. یک آرایه دو بعدی داده شده است. خطی را با بیشترین مجموع عناصر و کوچکترین آنها پیدا کنید. رشته های پیدا شده و مجموع عناصر آنها را نمایش دهید.

    برای دانش آموزانی که ایده ای در مورد آرایه های دو بعدی و نحوه حل آنها دارند:

    به جای یک سخنرانی - حل مشکلات با پیچیدگی افزایش یافته است.

    نمونه کارها:

    1. یک آرایه دو بعدی داده شده است. آن را مطابق قانون زیر تبدیل کنید: سطر با شماره N را ستونی با شماره N و ستون را یک ردیف کنید.
    2. در یک آرایه دو بعدی X، همه اعداد متمایز هستند. در هر ردیف، عنصر حداقل انتخاب شده، سپس حداکثر از بین این اعداد انتخاب می شود. شماره خط آرایه X حاوی عدد انتخاب شده را چاپ کنید.
    3. یک آرایه دو بعدی داده شده است. بزرگترین مقدار عناصر ردیف اول و آخر را پیدا کنید.
    4. برنامه ای بنویسید که یک آرایه دو بعدی را سطر به سطر از صفحه کلید چاپ کند و مجموع عناصر آن را بر اساس ستون محاسبه کند.
    5. برنامه ای بنویسید که مجموع عناصر قطری یک ماتریس مربع را محاسبه کند.