İki boyutlu dizilerle problem çözme örnekleri, bağımsız çözüm için görevler. İki boyutlu bir reel sayı dizisi verildiğinde İki boyutlu bir dizi verildiğinde

İki boyutlu bir dizi 5x5 verildi. Öğelerin girişini, sonucun çıkışını pencereler şeklinde düzenleyin. Bir duraklamadan sonra, duruma göre belirtilen öğelerin saklandığı pencerelerin rengini değiştirin.

Görev seçenekleri:

1.

2.

3.

4.

5.

6.

7.

8.

9.

10.

11. Ana köşegenin üzerindeki elemanların çarpımını bulun. Tüm tek öğeleri bulunan sayı ile değiştirin.

12. Tek konumlardaki öğelerin toplamını bulun (Х ij için (i + j) indislerinin toplamı tek bir sayıdır). Tüm negatif öğeleri bulunan sayıyla değiştirin.

13. Ana köşegen üzerindeki tüm elemanların çarpımını bulun. Beşinci satır ve ikinci sütunun tüm öğelerini bulunan sayıyla değiştirin.

14. Ana köşegendeki elemanların aritmetik ortalamasını ve yan köşegendeki aritmetik ortalamayı bulun. Öğeleri köşegenler üzerinde değiştirin.

15. Ana köşegenin üzerindeki pozitif elemanların aritmetik ortalamasını bulun. Tüm negatif öğeleri bulunan sayıyla değiştirin.

16. Tek öğelerin toplamını bulun. İkincil köşegenin üzerindeki tüm öğeleri bulunan sayı ile değiştirin.

17. i-satırı ve j-sütununun elemanlarının ürününü bulun (i, j- klavyeden önceden girin). İkincil köşegenin altındaki tüm öğeleri bulunan sayı ile değiştirin.

18. Çift konumlu elemanların çarpımını bulun (Х ij için (i + j) indislerinin toplamı tek bir sayıdır). Ana köşegendeki tüm elemanları bulunan sayı ile değiştirin.

19. Tek elemanların aritmetik ortalamasını bulun. Yan köşegenin tüm elemanlarını bulunan sayı ile değiştirin.

20. İkincil köşegenin üzerindeki tüm çift öğelerin toplamını bulun. Dördüncü satırın tüm öğelerini bulunan sayıyla değiştirin.

21. Ana köşegenin üzerindeki elemanların çarpımını bulun. Tüm tek öğeleri bulunan sayı ile değiştirin.

22. Tek konumlardaki öğelerin toplamını bulun (Х ij için (i + j) indislerinin toplamı tek bir sayıdır). Tüm negatif öğeleri bulunan sayıyla değiştirin.

23. Ana köşegen üzerindeki tüm elemanların çarpımını bulun. Beşinci satır ve ikinci sütunun tüm öğelerini bulunan sayıyla değiştirin.

24. Ana köşegendeki elemanların aritmetik ortalamasını ve yan köşegendeki aritmetik ortalamayı bulun. Öğeleri köşegenler üzerinde değiştirin.

25. Ana köşegenin üzerindeki pozitif elemanların aritmetik ortalamasını bulun. Tüm negatif öğeleri bulunan sayıyla değiştirin.

Örneğin: Ana köşegen üzerindeki elemanların aritmetik ortalamasını bulun.

Bir duraklamadan sonra:

sınav soruları

1. Metin modu nedir ve normal moddan farkı nedir?

2. Pencere nedir?

3. İmleç belirtilen pencere koordinatlarına nasıl taşınır?

4. Yazı tipi/arka plan rengi nasıl değiştirilir?

giriiş

Modern teknik cihazlar kontrol ve otomasyon için tasarlanmış, yaygın olarak ikili devreler ve İkili sistem hesaplaşma. Mantık cebiri teorisi, kombinasyonel ve sıralı anahtarlama devrelerinin analizi ve sentezi için kullanılır.

Ders materyali üç bölümde sunulmaktadır. Birinci bölümde, mantık cebiri teorisinin temel kavramları verilmiş, Boole fonksiyonlarının çeşitli temsil biçimleri ele alınmıştır. İkinci bölüm, ayrık cihazların soyut sentezinin temeli olan Boole fonksiyonlarının temsillerini en aza indirme konularına ayrılmıştır. Üçüncü bölüm, ayrık cihazların yapısal sentezinin temeli olan anahtarlama devrelerine dayalı Boole fonksiyonlarının nasıl uygulanacağı hakkında bilgi içerir.

Ders notları yazılırken aşağıdaki literatür kullanılmıştır: bölüm 1.1 için -; bölüm 1.2 için - ; bölüm 1.3 için - ; bölüm 2.1 için - ; bölüm 2.2 için - ; 3.1, 3.2 bölümleri için - .

Okul çocukları için bilgisayar bilimi görevlerinin bir sonraki kısmı zamanında geldi. Bu sefer, C++'da iki boyutlu dizilerle çalışmaya bakalım. Bu görevler oldukça ilginç. Ve çoğunu beğendim.

Görev 1

Maksimum elemanın ilk oluşumunun indekslerini bulun.
Giriş veri formatı
Program girdi olarak n ve m dizi boyutlarını, ardından her biri m numaralı n satırını alır. n ve m 100'ü geçmez.
Çıkış formatı
İki sayı yazdırın: satırın numarası ve içindeki en büyük öğeyi içeren sütunun numarası iki boyutlu dizi. Bu tür birkaç öğe varsa, alt satır numarasına sahip olan görüntülenir ve satır sayıları eşitse, alt sütun numarasına sahip olan görüntülenir.

örnek giriş: 3 4 0 3 2 4 2 3 5 5 5 1 2 3 örnek çıktı: 1 2

#Dahil etmek ad alanı std kullanarak; int main() ( int n, m; cin >> n >> m; int a; // için okuma (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; for (int ben = 0; ben< 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. Görev

15'ten büyük olmayan tek bir n sayısı verildi. İki boyutlu bir n×n eleman dizisi oluşturun ve onu "." ile doldurun. (dizinin her elemanı bir karakterden oluşan bir dizgedir). Ardından dizinin orta sırasını, dizinin orta sütununu, ana köşegeni ve ikincil köşegeni "*" karakterleriyle doldurun. Sonuç olarak, dizideki "*" bir yıldız işareti görüntüsü oluşturmalıdır. Ortaya çıkan diziyi, dizinin öğelerini boşluklarla ayırarak ekranda görüntüleyin.

örnek giriş: 5 örnek çıktı: * . * . * . * * * . * * * * * . * * * . * . * . *

#Dahil etmek ad alanı std kullanarak; int ana() ( 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; }

Görev #3

100'den büyük olmayan bir n sayısı verilir. Bir n×n dizisi oluşturun ve aşağıdaki kurala göre doldurun. Ana diyagonalin üzerine 0 sayıları yazılmalıdır.Ana komşu iki diyagonalin üzerine 1 sayıları, Sonraki iki diyagonalde 2 sayıları vb.

örnek giriş: 5 örnek çıktı: 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

#Dahil etmek #Dahil etmek ad alanı std kullanarak; int main() ( int n; cin >> n; int a; // için işleniyor (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; }

Görev #4

İki boyutlu bir dizi ve iki sayı verildi: i ve j. Dizideki sütunları i ve j sayılarıyla değiştirin.
Giriş veri formatı
Program girdi olarak 100'ü geçmeyen n ve m dizi boyutlarını, ardından dizinin öğelerini, ardından i ve j sayılarını alır.
Çıkış formatı
Sonuç çıktısı alın.

örnek giriş: 0 1 örnek çıktı: 12 11 13 14 22 21 23 24 32 31 33 34

#Dahil etmek #Dahil etmek ad alanı std kullanarak; 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; // için işleniyor (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; }

Görev #5

Size 10'u aşmayan bir n sayısı ve n × n boyutunda bir dizi verilir. Bu dizinin ana köşegen etrafında simetrik olup olmadığını kontrol edin. Dizi simetrikse "EVET" kelimesini, aksi halde "HAYIR" kelimesini yazdırın.

örnek giriş: 3 0 1 2 1 2 3 2 3 4 örnek çıktı: EVET

#Dahil etmek #Dahil etmek ad alanı std kullanarak; int main() ( int n; bool simetrik; cin >> n; int a; // için doldurma (int i = 0; i< n; i++) { for (int j = 0; j < n; j++) { cin >> a[i][j]; ) ) // simetrik işleniyor = doğru; for (int ben = 0; ben< 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; }

Görev #6

n × n boyutunda iki boyutlu kare bir dizi ve k sayısı verildi. Kth köşegenin öğelerini ana köşegenin altına yazdırın (yani, k = 1 ise, o zaman ilk köşegenin öğelerini ana köşegenin altına yazdırmanız gerekir, k = 2 ise, ikinci köşegen vb.).
k'nin değeri negatif olabilir, örneğin, k = -1 ise, ana köşenin üzerinde bulunan ilk köşegenin değerini yazdırmanız gerekir. k = 0 ise, ana köşegenin elemanlarını yazdırmanız gerekir.
Program, girdi olarak 10'u aşmayan bir n sayısı, ardından bir n × n dizisi, ardından bir k sayısı alır.

Örnek Giriş 1: 4 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 1 Örnek Çıktı 1: 5 1 6 Örnek Giriş 2: 4 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 -2 Örnek Çıktı 2: 3 8

#Dahil etmek ad alanı std kullanarak; int main() ( int n, k; cin >> n; int a[n][n]; // için doldurma (int i = 0; i< n; i++) { for (int j = 0; j < n; j++) { cin >> a[i][j]; ) cin >> k; // (int i = 0; i için işleniyor ve çıktı alınıyor)< n; i++) { for (int j = 0; j < n; j++) { if (i - j - k == 0) cout << a[i][j] << " "; } } return 0; }

Görev #7

n×m boyutunda iki boyutlu bir dizi verildiğinde (n ve m 1000'i geçmez). Ana köşegene göre kendisine simetrik olan bir diziye verilen diziye transpoze denir. m×n boyutlarına sahiptir: orijinal dizinin satırları, dönüştürülmüş olanın sütunları olur, orijinal dizinin sütunları, dönüştürülmüş olanın satırları olur.
Verilen dizi için, transpoze edilmiş diziyi oluşturun ve ekranda görüntüleyin.

örnek giriş: 3 4 11 12 13 14 21 22 23 24 31 32 33 34 örnek çıktı: 11 21 31 12 22 32 13 23 33 14 24 34

#Dahil etmek ad alanı std kullanarak; 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; }

Görev #8

Sinemada n sıra m koltuk vardır (n ve m 20'yi geçmez). İki boyutlu dizi, satılan biletler hakkında bilgi depolar, 1 sayısı bu koltuk için biletin zaten satıldığı, 0 sayısı koltuğun boş olduğu anlamına gelir. Aynı sıradaki komşu koltuklar için k adet bilet satışı talebi alındı. Böyle bir isteğin yerine getirilip getirilemeyeceğini belirleyin.
Giriş veri formatı
Program n ve m sayılarını girdi olarak alır. Ardından, boşluklarla ayrılmış m sayı (0 veya 1) içeren n satır vardır. Daha sonra k sayısı verilir.
Çıkış formatı
Program, arka arkaya k boş koltuk bulunan bir sıranın numarasını vermelidir. Bu tür birkaç satır varsa, en küçük uygun satırın numarasını yazdırın. Uygun satır yoksa, 0 sayısını yazdırın.

örnek giriş: 3 4 0 1 0 1 1 0 0 1 1 1 1 1 2 örnek çıktı: 2

#Dahil etmek ad alanı std kullanarak; int main() ( int n, m, k, r = 0; cin >> n >> m; int a[n][m]; // için doldurma (int i = 0; i< n; i++) { for (int j = 0; j < m; j++) { cin >> a[i][j]; ) cin >> k; // için işleniyor (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; }

Görev #9

n×m boyutunda dikdörtgen bir dizi verildi. Sonucu yeni bir m×n dizisine yazarak saat yönünde 90 derece döndürün.
Giriş veri formatı
100'ü geçmeyen iki n ve m sayısı, ardından n×m boyutunda bir dizi girilir.
Çıkış formatı
Ortaya çıkan diziyi çıktılayın. Sayıları tek bir boşlukla ayırın.

örnek giriş: 3 4 11 12 13 14 21 22 23 24 31 32 33 34 örnek çıktı: 31 21 11 32 22 12 33 23 13 34 24 14

#Dahil etmek ad alanı std kullanarak; int main() ( int n, m; cin >> n >> m; int a[n][m]; int b[m][n]; // için doldurma (int i = 0; i< n; i++) { for (int j = 0; j < m; j++) { cin >> a[i][j]; ) ) // için işleniyor (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; }

Görev #10

n ve m sayıları verildiğinde, n×m boyutunda iki boyutlu bir diziyi 1'den n×m'ye kadar sayılarla örnekte gösterildiği gibi bir "yılan" ile doldurun.
Giriş veri formatı
Her biri 20'yi geçmeyen iki sayı n ve m girilir.
Çıkış formatı

örnek giriş: 3 5 örnek çıktı: 1 2 3 4 5 10 9 8 7 6 11 12 13 14 15

#Dahil etmek ad alanı std kullanarak; int main() ( int n, m, c = 0; cin >> n >> m; int a[n][m]; // için işleniyor (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; }

Görev #11

n ve m sayıları verildiğinde, örnekte gösterildiği gibi n×m iki boyutlu bir diziyi 1'den n×m'ye kadar "köşegenler" ile doldurun.
Giriş veri formatı

Çıkış formatı
Her bir eleman için tam olarak 4 karakter bırakarak ortaya çıkan diziyi çıktılayın.

örnek giriş: 3 5 örnek çıktı: 1 2 4 7 10 3 5 8 11 13 6 9 12 14 15

#Dahil etmek ad alanı std kullanarak; int main() ( int n, m, konum = 0, satır = 0; cin >> n >> m; int a[n][m]; // int start_row = 0 işleniyor; int sayı = 1; için ( int min_row = 0;min_row< n; min_row++) { if (min_row >0) start_row = konum - 1; başka start_row = 0; for (konum = start_row; konum< m; pos++) { row = min_row; for (int col = pos; col >= 0; col--) ( if (satır< 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; }

Görev #12

n ve m sayıları verilmiştir. Dama tahtası deseninde bir n × m dizisini doldurun: bir rengin hücreleri sıfırlarla, diğer rengin hücreleri ise soldan sağa, yukarıdan aşağıya doğal sayılarla doldurulur. 1 rakamı sol üst köşede yazılıdır.
Giriş veri formatı
100'ü geçmeyen iki sayı n ve m girilir.
Çıkış formatı
Her bir eleman için tam olarak 4 karakter bırakarak ortaya çıkan diziyi çıktılayın.

örnek giriş: 3 5 örnek çıktı: 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8

#Dahil etmek ad alanı std kullanarak; int main() ( int n, m, sm; cin >> n >> m; int a[n][m]; // int sayı = 1 işleniyor; for (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; }

Görev #13

n ve m sayıları verildiğinde, örnekte gösterildiği gibi, n×m boyutunda iki boyutlu bir diziyi 1'den n×m'ye kadar sayılarla bir spiral içinde sol üst köşeden başlayarak ve saat yönünde çevirerek doldurun.
Giriş veri formatı
100'ü geçmeyen iki sayı n ve m girilir.
Çıkış formatı
Her bir eleman için tam olarak 4 karakter bırakarak ortaya çıkan diziyi çıktılayın.

örnek giriş: 4 5 örnek çıktı: 1 2 3 4 5 14 15 16 17 6 13 20 19 18 7 12 11 10 9 8

#Dahil etmek ad alanı std kullanarak; int main() ( int n, m; cin >> n >> m; int a; for (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

görüntülemek için lütfen JavaScript'i etkinleştirin.

C(C)'de iki boyutlu dizileri işleme problemlerinin çözümü için okullar ve üniversiteler için laboratuvar çalışması. Laboratuvar çalışmasının görev listesi (varsa, sorunun çözümüne yönlendiren bağlantıya tıklayın):

Ekstra görevler:

Tüm programlar CodeBlocks 16.01'de (MinGW, Windows 10) test edilmiştir. Çözümlenmemiş programlara çözümlerinizi ve mevcut programların iyileştirilmesine yönelik önerilerinizi sayfanın alt kısmındaki yorumlarda belirtebilirsiniz.

Arşivdeki programların laboratuvar dosyasını ve tüm kaynak kodlarını indirin:


Ayrıca laboratuvarlarınız için C++ ve diğer birçok dilde çözümler sipariş edebilirsiniz:

#1: İki boyutlu bir dizi verildi. Bir dizenin öğelerinin minimum toplamını bulun. Ek bir tek boyutlu dizi kullanmadan sorunu çözün.

#Dahil etmek #Dahil etmek #Dahil etmek int ana() ( int *dizi; int x, y, i, j, toplam = 0, min = 0, minstr = 0; srand(time(NULL)); x = 2 + Rand() % 10; y = 2 + rand() % 6; dizi = (int*)malloc(x*y*sizeof(int)); printf("Dizi %d x %d: \n", x, y); for (i = 0; i

#2: Dizinin tüm elemanlarının ortalama değerine en yakın elemanın koordinatlarını belirleyin.

#Dahil etmek #Dahil etmek #Dahil etmek #Dahil etmek int ana() ( int *dizi; 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("Array %d x %d: \n", x, y); for (i = 0 i

#9: Çift sayıda sütun içeren iki boyutlu bir dizi verildi. Dizinin sol yarısının sütunlarını sağ yarısının sütunlarıyla değiştirin.

#Dahil etmek #Dahil etmek #Dahil etmek int ana() ( int *dizi; int x, y, i, j, d; srand(zaman(NULL)); x = 1 + Rand() % 10; y = 2 * (1 + Rand() % 3 ); arr = (int*)malloc(x*y*sizeof(int)); printf("Dizi %d x %d: \n", x, y); for (i = 0; i

#14: İki boyutlu bir dizinin her satırı için, son basamağı a'ya eşit olan öğelerin sayısını bulun.

#Dahil etmek #Dahil etmek #Dahil etmek int main() ( int *dizi; int x, y, i, j, a, say; srand(zaman(NULL)); printf("Bir a girin: "); scanf("%d", &a); x = 1 + Rand() % 10; y = 1 + Rand() % 7; dizi = (int*)malloc(x*y*sizeof(int)); printf("Dizi %d x %d: \n", x, y); için (i = 0; i

#21: İki boyutlu bir dizi verildiğinde b. Bunu bir matris olarak düşünürsek, b'yi devrik.

#Dahil etmek #Dahil etmek #Dahil etmek int main() ( int *dizi, *dizi, x, y, i, j; srand(zaman(NULL)); x = 1 + Rand() % 7; y = 1 + Rand() % 7; dizi = (int*)malloc(x*y*sizeof(int)); printf("Matris %d x %d: \n", x, y); for (i = 0; i

No. 1 (Ek): İki boyutlu bir dizi verilmiştir. Dizelerini, ilk öğelerinin azalmayan düzeninde sıralayın.

#Dahil etmek #Dahil etmek #Dahil etmek int ana() ( int *dizi, x, y, i, j, k, d, maks = 0; srand(zaman(NULL)); x = 1 + Rand() % 10; y = 1 + Rand() % 7; arr = (int*)malloc(x*y*sizeof(int)); printf("Dizi %d x %d: \n", x, y); for (i = 0; i *(dizi + maks*y)) maks = j; için (k = 0; k

#2 (Ek): Verilen kare matrisin ortonormal olup olmadığını belirleyin, yani. her bir farklı dizi çiftinin skaler çarpımının 0 olduğu ve her dizinin kendisiyle skaler çarpımının 1 olduğu bir.

#Dahil etmek #Dahil etmek int main() ( int *dizi; int x, i, j, k, toplam = 0; printf("Kare matrisin boyutunu girin: "); scanf("%d", &x); dizi = (int *)malloc(x*x*sizeof(int)); printf("%d x %d matrisinin elemanlarını girin: \n", x, x); for (i = 0; i

No. 3 (Ek): İki boyutlu kare bir dizi verilmiştir. İkinciye paralel köşegenlerinin her birinin elemanlarının toplamını bulun.

#Dahil etmek #Dahil etmek #Dahil etmek int ana() ( int *dizi; int x, y, i, j, toplam; srand(zaman(NULL)); x = 2 + rand() % 6; dizi = (int*)malloc(x*y* sizeof(int)); printf("Array %d x %d: \n", x, x); for (i = 0; i

İki boyutlu dizilerdeki problemler

1) İki boyutlu bir tamsayı dizisi verilmiştir. Bir program oluşturun:

a) dizinin sağ üst köşesinde bulunan elemanın görüntülenmesi;

b) dizinin sol alt köşesinde bulunan elemanın görüntülenmesi;

c) dizinin ikinci satırındaki herhangi bir elemanın ekranda gösterilmesi;

d) dizinin üçüncü sütununun herhangi bir öğesinin görüntülenmesi;

e) dizinin herhangi bir öğesini ekranda görüntülemek.

2) İki boyutlu bir tamsayı dizisi verilmiştir. Takas:

a) sağ üst ve sol alt köşelerde bulunan elemanlar;

b) sağ alt ve sol üst köşelerde bulunan elemanlar;

3) İki boyutlu bir tamsayı dizisinin ana köşegeninin öğesinin bulunduğu satır numarası bilinmektedir. Bu öğenin değerini görüntüleyin.

4) Ekran (tek satırda):

a) dizinin ana köşegeninin tüm elemanları

b) sağ alt köşede bulunan elemandan başlayarak dizinin ana köşegeninin tüm elemanları.

5) Bir tamsayı dizisinin ana köşegeninin tüm öğelerinin değerlerini sıfırla değiştirin.

6) Bir tamsayı dizisinin ikincil köşegeninin tüm öğelerinin değerlerini 100'e eşit değerlerle değiştirin.

7) Belirleyin:

a) dizinin ana köşegeninin elemanlarının toplamı;

b) dizinin ikincil köşegeninin elemanlarının toplamı;

c) dizinin ana köşegeninin elemanlarının aritmetik ortalaması;

d) dizinin ikincil köşegeninin elemanlarının aritmetik ortalaması;

e) dizinin ana köşegeninin minimum (maksimum) elemanı;

f) gerçek bir dizinin ikincil köşegeninin maksimum (minimum) elemanı;

g) ana köşegenin ilk maksimum elemanının koordinatları;

h) ana köşegenin ilk minimum elemanının koordinatları.

a) dizinin beşinci satırının tüm öğelerini göster;

b) bu ​​satırın son elemanından başlayarak dizinin üçüncü satırının tüm elemanlarını göster;

c) dizinin s-inci sütununun tüm elemanlarını göster;

d) dizinin ikinci satırındaki tüm öğelerin değerlerini 5 sayısıyla değiştirin;

e) beşinci sütunun tüm öğelerinin değerlerini 10 sayısıyla değiştirin.

f) üçüncü sütunun maksimum (minimum) öğesini belirleyin;

9) İki boyutlu bir tamsayı dizisi verilmiştir. Bir program oluşturun:

a) herhangi bir dizi dizesinin herhangi iki elemanının çarpımını hesaplamak

b) herhangi bir dizi dizesinin tüm öğelerinin toplamı;

10) İki boyutlu bir tamsayı dizisi verilmiştir. Tanımlamak:

a) a) dizinin hangi sütununda, ilk veya sondaki öğelerin toplamının daha az olduğu;

b) b) hangi satırda elemanların çarpımı daha büyük, ikinci veya üçüncü sırada.

11) 10 x 10 boyutunda iki boyutlu bir tamsayı dizisi verildi. Dizinin bir kısmını ekranda görüntüleyin:

a) ana köşegenin üzerinde bulunur;



b) ana köşegenin altında bulunur;

c) ikincil köşegenin üzerinde bulunur;

d) ikincil köşegenin altında bulunur;

12) İki boyutlu bir tamsayı dizisi verildiğinde:

a) sütunlarının her birinde maksimum (minimum) öğeyi bulun;

b) maksimum (minimum) elemanın koordinatları;

c) her sütundaki (satırdaki) tek öğelerin toplamı;

d) A veya B'nin katları olan eleman sayısı.

e) elemanların maksimum toplamı olan satırı bulun;

f) Minimum eleman toplamını içeren sütunu bulun.

  • eğitim: iki boyutlu bir dizi fikrinin oluşumuna ve kare matrislerin temel özelliklerine katkıda bulunmak; matrisler üzerinde gerçekleştirilebilecek eylemleri düşünün; Pascal'da matrisleri işlemek için tipik algoritmaları tanıtmak; iki boyutlu dizilerle algoritma çözme yeteneğinin oluşumu için koşullar yaratmak;
  • gelişmekte:
  • sınırlı bir süre için çalışma becerilerinin geliştirilmesi, bağımsız çalışma becerilerinin geliştirilmesi, notlarla çalışma becerilerinin geliştirilmesi için koşullar yaratın.
  • eğitici:
  • derste çalışmak için psikolojik rahatlığın yaratılmasını, soğukkanlılığın eğitimini, kişinin işine karşı sorumlu bir tutumu ve eğitim faaliyetleri için motivasyonun artmasını teşvik etmek.

Ders türü: birleşik.

Öğretim yöntemleri: ders anlatımı, bağımsız çalışma.

Organizasyon biçimleri: ön çalışma, bireysel çalışma.

ekipman: sınıf çalışması için ödevler (bireysel kartlar, bilgisayarda ödev), tahtadaki notlar.

Dersler sırasında:

1. Organizasyonel an.

Selamlar.
Konu bildirildi.
Dersin ve görevlerin amacını belirleyin.

2. Edinilen bilginin gerçekleştirilmesi

Bir önceki konunun ana noktaları sözlü olarak konuşulur: “Tek boyutlu diziler”. Ana tanımlar üzerine önden mini anket.

3. Hedef belirleme, görev belirleme:

  • iki boyutlu dizi kavramını tanımlar;
  • iki boyutlu bir dizinin gösterimini düşünün
  • kare matrislerin temel özelliklerini göz önünde bulundurun;
  • matrisler üzerinde gerçekleştirilebilecek eylemleri düşünün;
  • Pascal'da matrisleri işlemek için tipik algoritmalarla tanışın;
  • iki boyutlu dizilerle algoritma çözme yeteneğinin oluşumu için koşullar yaratmak;
  • 4. Ders

    Tanım.

    İki boyutlu bir dizi, her değeri iki sayıya bağlı olan ve bir matristeki bir sütunun indeksi olarak kabul edilebilecek bir veri topluluğudur.

    kayıt formatı

    <имя>: dizi[n_index_1..to_index_1, n_index_2 ..to_index_2] nın-nin <тип>

    A: tamsayı dizisi;

    Bir dizinin elemanını kullanmak için dizinin adını ve elemanın indeksini belirtmelisiniz. İlk dizin satır numarasına, ikincisi sütun numarasına karşılık gelir. Örneğin:

    i için:=1 için n yapmak
    j:=1 için n yapmak için
    a:=rastgele(100);

    İki boyutlu dizileri başlatırken, her satır ek bir parantez çifti içine alınır:

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

    Matematikteki Pascal dizilerinin bir analogu matrislerdir. Satır sayısı sütun sayısına eşit olan matrise kare matris denir. A(n,n) – kare matris

    Kare matrislerin temel özellikleri:

    1. Kare matrislerin ana ve yan köşegenleri vardır. Örneğin, A matrisi için, 1.5 ve 9 elemanları ana köşegen üzerinde ve 3, 5 ve 7 yan köşegen üzerinde yer alır.

    i=j – elemanlar ana köşegen üzerinde bulunur;
    i> j - elemanlar ana köşegenin altında bulunur;
    i i?j - elemanlar ana köşegen üzerinde ve altında bulunur;
    i+j= n+1– elemanlar ikincil köşegen üzerinde yer alır;
    ben+j< n+1– элементы расположены над побочной диагональю;
    i+j> n+1 – elemanlar ikincil köşegenin altında bulunur;

    2. Ana köşegenin elemanları hariç tüm elemanlarının sıfıra eşit olduğu kare matrise denir. Diyagonal matris

    3. Ana köşegen üzerindeki tüm elemanların 1'e eşit olduğu bir köşegen matrise denir. kimlik matrisi

    4. Eğer A (m, n) matrisinde satırlar ve sütunlar yer değiştirirse, transpoze matris olarak adlandırılan A t (m, n) matrisi elde edilir.

    Matrisler üzerinde gerçekleştirilebilecek temel işlemler

    • özetlemek;
    • farkı Bul
    • bir matrisin bir sayı ile çarpımı;
    • iki matrisin çarpımı.

    Pascal'da Tipik Matris İşleme Algoritmaları

    1. Bir tablo şeklinde matrisin çıktısı:
    2. i için:= 1'den n'ye
      başlamak
      j için:= 1'den m'ye kadar
      yaz(a:4);
      yazmak
      son;

    3. Rastgele sayı üreteci kullanarak:
    4. rastgele;
      i için:=1'den m'ye
      başlamak
      j:=1 için n yapmak için
      başlamak
      a:=rastgele(100)-10;
      yaz(a:4);
      son;
      writeln;
      son;

    5. Matrisi tablo şeklinde göstermenin 2. yolu:
    6. i için:= 1'den n'ye
      j için:= 1'den m'ye kadar
      j>m ise (a:4) yazın
      başka writeln(a:4);

    7. Matris toplamı:
    8. i için:= 1'den n'ye
      başlamak
      j için:= 1'den m'ye kadar
      c:=a+b
      son;

    9. Bir matrisin transpozisyonu, elemanlarının ana köşegene göre ayna görüntüsüdür. Bunu yeni bir dizi tanıtarak yapabilirsiniz:

    i için:= 1'den n'ye
    j için:= 1'den n'ye
    b=a;

    5. Birincil kontrol

    “Kontur haritası” 2 seçenek

    1 seçenek

    1. İki boyutlu bir dizinin açıklamasındaki hataları düzeltin:
    2. Var
      A= tamsayı dizisi;

      ... ... iki boyutlu diziler, her satır ek bir parantez çifti içine alınır:

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

    3. Eksik tanımları ekleyin:
    4. Matrisler üzerinde yapılabilecek temel işlemler: toplama, iki matrisin çarpımı,….,….

    5. Eksik tanımları ekleyin:
    6. Satır sayısı sütun sayısına eşit olan matrise .................... denir. ….. .

    7. Algoritmadaki hataları bulun:

    i için:= 1'den n'ye
    başlamak
    j için:= 1'den m'ye kadar
    c:=a+a
    son;

    seçenek 2

    1. Dizi açıklamasındaki hataları düzeltin:

    const
    n=4; m=3;
    tip
    mas:tamsayı dizisi;

    1. Eksik tanımları ekleyin:
    2. ……, her değeri iki sayıya bağlı olan ve bir matristeki bir sütunun indeksi olarak kabul edilebilecek bir veri kümesidir.

    3. Eksik tanımları ekleyin:
    4. Ana köşegen üzerindeki tüm elemanların eşit olduğu bir köşegen matrise ... denir. kimlik matrisi

    5. Eksik tanımları ekleyin:
    6. Ana köşegenin elemanları hariç tüm elemanlarının sıfıra eşit olduğu kare matrise denir. … … .

    7. Algoritmadaki hataları bulun:

    rastgele;
    i için:=1'den m'ye
    başlamak
    j:=1 için n yapmak için
    başlamak
    a:=rastgele(100)-10;
    son;
    son;

    Algoritmanın tipik görevi nedir?

    Pascal'da Algoritmalar

    1. 3x4 tamsayılı bir matris için elemanlarının aritmetik ortalamasını ve her satırdaki pozitif elemanların sayısını belirleyen bir program yazın. Ek 2
    2. program orta_n;
      sabit m=3;
      n=4;
      var

      i,j,n_pos_el:tamsayı;
      sred:gerçek;
      başlamak
      i için:=1'den m'ye
      j:=1 için n için read(a);
      orta:=0;
      i için:=1'den m'ye kadar başla
      n_pos_el:=0;
      j:=1 için n başlasın
      sred:=sred+a;
      a>0 ise inc(n_pos_el);
      son;
      writeln("V",i,"-oi vuruş",n_pos_el,"polozitelnix elementov");
      son;
      sred:=sred/m/n;
      writeln("Srednee aritmetik:",sred:6:2);
      son.

    3. Dikdörtgen bir 3x4 tamsayı matrisi verildiğinde, yalnızca pozitif öğeleri içeren en soldaki sütunun sayısını belirleyen bir program yazın. Böyle bir sütun yoksa, bir mesaj görüntülenir. Ek 3

    program num_posit;
    sabit m=3;
    n=4;
    var
    a: tamsayı dizisi;
    i,j,sayı:tamsayı;
    all_posit:boolean;
    başlamak
    rastgele;
    i için:=1'den m'ye
    başlamak
    j:=1 için n yapmak için
    başlamak
    a:=rastgele(100)-10;
    yaz(a:4);
    son;
    writeln;
    son;
    sayı:=0;
    j:=1 için n başlasın
    all_posit:=true;
    i için:=1'den m'ye
    Eğer bir< 0 then
    başlamak
    all_posit:=yanlış;
    kırmak; son;
    all_posit ise başlar
    sayı:=j; kırmak; son;
    son;
    sayı = 0 ise
    writeln("Takix stolbcov net")
    başka
    writeln("Sayı sütunu:",sayı);
    son.

    Öğrenciler Pascal'a dosya yükler, bu algoritmayı analiz eder, program yürütme sonuçlarını görüntüler, ek soruları yanıtlar:

    1. İki boyutlu bir dizi nasıl düzenlenir?
    2. inc prosedürü ne anlama geliyor?
    3. Mola prosedürü ne anlama geliyor?
    4. Rastgele sayı üreteci nasıl kullanılır?

    6. Problem çözme becerilerinin oluşumu.

    Algoritmik bir ortamda, bağımsız kartlardaki sorunları bağımsız olarak çözme.

    Görev örnekleri:

    1. Rastgele öğeler içeren 5x5'lik bir A matrisi verildi. Tüm matris elemanlarının toplamını bulun.
    2. Pisagor tablosunu görüntüleyin.
    3. A 5x5 tamsayı matrisinin belirtilen sütununun pozitif elemanlarının toplamını bulun.

    7. Dersin sonuçları, ödev belirleme.

    Özetleme. Asimilasyon düzeyinin değerlendirilmesi.

    D / Z özeti, görevler:

    Hepsi için:

    1. İki boyutlu bir kare dizi verildi. Tüm öğeleri sıfıra eşit olan satır sayısını bulun.
    2. İki boyutlu bir kare dizi verildi. Elemanları aynı olan doğruların sayısını bulunuz.
    3. İki boyutlu bir dizinin minimum elemanını belirleyin. Varsa, maksimum minimum öğe sayısını içeren satır numarasını yazdırın.
    4. İki boyutlu bir dizi verildi. Elemanları toplamı en büyük ve en küçüğü olan doğruyu bulun. Bulunan dizeleri ve öğelerinin toplamlarını görüntüleyin.

    İki boyutlu diziler ve nasıl çözüleceği hakkında fikir sahibi olan öğrenciler için:

    Bir ders yerine - artan karmaşıklık problemlerini çözme.

    Görev örnekleri:

    1. İki boyutlu bir dizi verildi. Aşağıdaki kurala göre dönüştürün: N numaralı satırı N numaralı sütun ve sütunu satır yapın.
    2. İki boyutlu bir X dizisinde tüm sayılar farklıdır. Her satırda minimum eleman seçilir, daha sonra bu sayılar arasından maksimum seçilir. Seçilen sayıyı içeren X dizisinin satır numarasını yazdırın.
    3. İki boyutlu bir dizi verildi. İlk ve son satırdaki elemanların değerlerinden en büyüğünü bulun.
    4. İki boyutlu bir diziyi klavyeden satır satır yazdıran ve elemanlarının sütunlar halinde toplamını hesaplayan bir program yazın.
    5. Bir kare matrisin köşegen elemanlarının toplamını hesaplayan bir program yazın.