Exempel på problemlösning med tvådimensionella arrayer, uppgifter för självständig lösning. Givet en tvådimensionell matris av reella tal Givet en tvådimensionell matris

Givet en tvådimensionell array 5x5. Organisera inmatningen av element, resultatet av resultatet i form av fönster. Efter en paus ändrar du färgen på fönstren där de element som specificeras enligt villkoret lagras.

Uppgiftsalternativ:

1.

2.

3.

4.

5.

6.

7.

8.

9.

10.

11. Hitta produkten av element som är ovanför huvuddiagonalen. Ersätt alla udda element med det hittade numret.

12. Hitta summan av element som är i udda positioner (summan av index (i + j) för Х ij är ett udda tal). Ersätt alla negativa element med det hittade numret.

13. Hitta produkten av alla element som finns på huvuddiagonalen. Ersätt alla element i den femte raden och den andra kolumnen med det hittade numret.

14. Hitta det aritmetiska medelvärdet av elementen på huvuddiagonalen och det aritmetiska medelvärdet på sidodiagonalen. Byt element på diagonalerna.

15. Hitta det aritmetiska medelvärdet av de positiva element som är ovanför huvuddiagonalen. Ersätt alla negativa element med det hittade numret.

16. Hitta summan av udda element. Ersätt med det hittade numret alla element som är ovanför den sekundära diagonalen.

17. Hitta produkten av elementen i i-raden och j-kolumnen (i, j-pre-enter från tangentbordet). Ersätt med det hittade numret alla element under den sekundära diagonalen.

18. Hitta produkten av element som är i jämna positioner (summan av index (i + j) för Х ij är ett udda tal). Ersätt alla element på huvuddiagonalen med det hittade numret.

19. Hitta det aritmetiska medelvärdet av udda element. Byt ut alla delar av sidodiagonalen med det hittade numret.

20. Hitta summan av alla jämna element som ligger ovanför sekundärdiagonalen. Ersätt alla element på den fjärde raden med det hittade numret.

21. Hitta produkten av element som är ovanför huvuddiagonalen. Ersätt alla udda element med det hittade numret.

22. Hitta summan av element som är i udda positioner (summan av index (i + j) för Х ij är ett udda tal). Ersätt alla negativa element med det hittade numret.

23. Hitta produkten av alla element som finns på huvuddiagonalen. Ersätt alla element i den femte raden och den andra kolumnen med det hittade numret.

24. Hitta det aritmetiska medelvärdet av elementen på huvuddiagonalen och det aritmetiska medelvärdet på sidodiagonalen. Byt element på diagonalerna.

25. Hitta det aritmetiska medelvärdet av de positiva element som är ovanför huvuddiagonalen. Ersätt alla negativa element med det hittade numret.

Till exempel: Hitta det aritmetiska medelvärdet av elementen på huvuddiagonalen

Efter en paus:

testfrågor

1. Vad är textläge och hur skiljer det sig från vanligt läge?

2. Vad är ett fönster?

3. Hur flyttar man markören till de angivna fönsterkoordinaterna?

4. Hur ändrar man typsnitt/bakgrundsfärg?

Introduktion

Modern tekniska anordningar, designad för styrning och automation, använder i stor utsträckning binära kretsar och binärt system beräkning. Teorin för logisk algebra används för analys och syntes av kombinations- och sekventiella kopplingskretsar.

Föreläsningsmaterialet presenteras i tre kapitel. I det första kapitlet ges de grundläggande begreppen i teorin om logikens algebra, olika former av representation av booleska funktioner beaktas. Det andra kapitlet ägnas åt frågorna om att minimera representationerna av booleska funktioner, vilket är grunden för den abstrakta syntesen av diskreta enheter. Det tredje kapitlet innehåller information om hur man implementerar booleska funktioner baserade på omkopplingskretsar, vilket är grunden för den strukturella syntesen av diskreta enheter.

Vid skrivandet av föreläsningsanteckningarna användes följande litteratur: för avsnitt 1.1 -; för avsnitt 1.2 - ; för avsnitt 1.3 - ; för avsnitt 2.1 - ; för avsnitt 2.2 - ; för avsnitt 3.1, 3.2 - .

Nästa del av datavetenskapliga uppgifter för skolbarn kom i tid. Den här gången ska vi titta på att arbeta med tvådimensionella arrayer i C++. Dessa uppgifter är ganska intressanta. Och jag gillade de flesta av dem.

Uppgift 1

Hitta indexen för den första förekomsten av det maximala elementet.
Indataformat
Programmet tar emot arraystorlekarna n och m som indata, sedan n rader med m nummer vardera. n och m överstiger inte 100.
Utmatningsformat
Skriv ut två siffror: radens nummer och numret på kolumnen som innehåller det största elementet tvådimensionell array. Om det finns flera sådana element visas den med det lägre radnumret, och om radnumren är lika, då den med det lägre kolumnnumret.

exempelinmatning: 3 4 0 3 2 4 2 3 5 5 5 1 2 3 exempelutdata: 1 2

#omfatta använder namnutrymme std; int main() ( int n, m; cin >> n >> m; int a; // läsning för (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; för (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; }

Uppgift #2

Givet ett udda tal n, inte större än 15. Skapa en tvådimensionell matris med n×n element, fyll den med "." (varje element i arrayen är en sträng med ett tecken). Fyll sedan med "*"-tecken i mittraden i arrayen, mittkolumnen i arrayen, huvuddiagonalen och sekundärdiagonalen. Som ett resultat bör "*" i arrayen bilda en asteriskbild. Visa den resulterande arrayen på skärmen, separera elementen i arrayen med mellanslag.

exempelinmatning: 5 exempelutdata: * . * . * . * * * . * * * * * . * * * . * . * . *

#omfatta använder namnutrymme 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; }

Uppgift #3

Givet ett tal n som inte är större än 100. Skapa en n×n-matris och fyll den enligt följande regel. På huvuddiagonalen ska siffrorna 0 skrivas. På de två diagonalerna intill huvuddiagonalerna siffrorna 1. På de två följande diagonalerna siffrorna 2 osv.

exempelinmatning: 5 exempelutdata: 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

#omfatta #omfatta använder namnutrymme std; int main() ( int n; cin >> n; int a; // bearbetning för (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; }

Uppgift #4

Givet en tvådimensionell matris och två tal: i och j. Byt ut kolumnerna med siffrorna i och j i arrayen.
Indataformat
Programmet tar emot som indata arraystorlekarna n och m, som inte överstiger 100, sedan elementen i arrayen, sedan siffrorna i och j.
Utmatningsformat
Skriv ut resultatet.

exempelinmatning: 0 1 exempelutdata: 12 11 13 14 22 21 23 24 32 31 33 34

#omfatta #omfatta använder namnutrymme 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; // bearbetning för (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; }

Uppgift #5

Du får ett nummer n som inte överstiger 10 och en matris med storleken n × n. Kontrollera om denna matris är symmetrisk kring huvuddiagonalen. Skriv ut ordet "JA" om arrayen är symmetrisk, och ordet "NEJ" annars.

exempelinmatning: 3 0 1 2 1 2 3 2 3 4 exempelutdata: JA

#omfatta #omfatta använder namnutrymme std; int main() ( int n; bool symmetrisk; cin >> n; int a; // fyllning för (int i = 0; i< n; i++) { for (int j = 0; j < n; j++) { cin >> a[i][j]; ) ) // processing symmetric = true; för (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; }

Uppgift #6

Givet en kvadratisk tvådimensionell matris med storleken n × n och ett tal k. Skriv ut elementen i den k:te diagonalen under huvuddiagonalen (dvs. om k = 1, måste du skriva ut elementen i den första diagonalen under huvuddiagonalen, om k = 2, sedan den andra diagonalen, etc.).
Värdet på k kan vara negativt, till exempel om k = −1, måste du skriva ut värdet på den första diagonalen som ligger ovanför den huvudsakliga. Om k = 0, måste du skriva ut elementen i huvuddiagonalen.
Programmet tar som indata ett tal n som inte överstiger 10, sedan en n × n array, sedan ett tal k.

Exempelinmatning 1: 4 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 1 Exempelutgång 1: 5 1 6 Exempelingång 2: 4 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 -2 Exempelutgång 2: 3 8

#omfatta använder namnutrymme std; int main() ( int n, k; cin >> n; int a[n][n]; // fyller i (int i = 0; i< n; i++) { for (int j = 0; j < n; j++) { cin >> a[i][j]; ) cin >> k; // bearbetning och utdata för (int i = 0; i< n; i++) { for (int j = 0; j < n; j++) { if (i - j - k == 0) cout << a[i][j] << " "; } } return 0; }

Uppgift #7

Givet en tvådimensionell matris med storleken n×m (n och m överstiger inte 1000). En array som är symmetrisk med den med avseende på huvuddiagonalen kallas transponerad till den givna. Den har dimensioner m×n: raderna i den ursprungliga arrayen blir kolumnerna i den transponerade, kolumnerna i den ursprungliga arrayen blir raderna i den transponerade.
För den givna arrayen, konstruera den transponerade arrayen och visa den på skärmen.

exempelinmatning: 3 4 11 12 13 14 21 22 23 24 31 32 33 34 exempelutdata: 11 21 31 12 22 32 13 23 33 14 24 34

#omfatta använder namnutrymme 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; }

Uppgift #8

Biografen har n rader med m sittplatser vardera (n och m överstiger inte 20). Den tvådimensionella arrayen lagrar information om sålda biljetter, siffran 1 betyder att biljetten för denna plats redan är såld, siffran 0 betyder att plats är ledig. En förfrågan har inkommit om att sälja k biljetter till närliggande platser i samma rad. Avgöra om en sådan begäran kan uppfyllas.
Indataformat
Programmet tar emot nummer n och m som inmatning. Sedan finns det n rader som innehåller m tal (0 eller 1) åtskilda med mellanslag. Då ges talet k.
Utmatningsformat
Programmet ska mata ut numret på en rad som har k på varandra följande tomma platser. Om det finns flera sådana rader, skriv ut numret på den minsta lämpliga raden. Om det inte finns någon lämplig rad, skriv ut siffran 0.

exempelinmatning: 3 4 0 1 0 1 1 0 0 1 1 1 1 1 2 exempelutdata: 2

#omfatta använder namnutrymme std; int main() ( int n, m, k, r = 0; cin >> n >> m; int a[n][m]; // fyller i (int i = 0; i< n; i++) { for (int j = 0; j < m; j++) { cin >> a[i][j]; ) cin >> k; // bearbetning för (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; }

Uppgift #9

Givet en rektangulär matris med storleken n×m. Rotera den 90 grader medurs och skriv resultatet till en ny m×n-array.
Indataformat
Två siffror n och m anges, inte överstigande 100, sedan en matris med storleken n×m.
Utmatningsformat
Mata ut den resulterande arrayen. Separera nummer med ett enda mellanslag.

exempelinmatning: 3 4 11 12 13 14 21 22 23 24 31 32 33 34 exempelutdata: 31 21 11 32 22 12 33 23 13 34 24 14

#omfatta använder namnutrymme std; int main() ( int n, m; cin >> n >> m; int a[n][m]; int b[m][n]; // fyller för (int i = 0; i< n; i++) { for (int j = 0; j < m; j++) { cin >> a[i][j]; ) ) // bearbetning för (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; }

Uppgift #10

Med tanke på siffrorna n och m, fyll en tvådimensionell matris av storleken n×m med siffror från 1 till n×m med en "orm", som visas i exemplet.
Indataformat
Två siffror n och m anges, var och en av dem inte överstiger 20.
Utmatningsformat

exempelinmatning: 3 5 exempelutdata: 1 2 3 4 5 10 9 8 7 6 11 12 13 14 15

#omfatta använder namnutrymme std; int main() ( int n, m, c = 0; cin >> n >> m; int a[n][m]; // bearbetning för (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; }

Uppgift #11

Givet talen n och m, fyll en n×m tvådimensionell matris med tal från 1 till n×m "diagonaler" som visas i exemplet.
Indataformat

Utmatningsformat
Mata ut den resulterande arrayen och lämna exakt 4 tecken för varje element.

exempelinmatning: 3 5 exempelutdata: 1 2 4 7 10 3 5 8 11 13 6 9 12 14 15

#omfatta använder namnutrymme std; int main() ( int n, m, pos = 0, rad = 0; cin >> n >> m; int a[n][m]; // processing int start_row = 0; int number = 1; for ( int min_rad = 0;min_rad< n; min_row++) { if (min_row >0) start_rad = pos - 1; annars start_rad = 0; för (pos = start_rad; pos< m; pos++) { row = min_row; for (int col = pos; col >= 0; col--) ( if (rad< 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; }

Uppgift #12

Siffrorna n och m ges. Fyll i en n × m-matris i ett rutmönster: celler i en färg fylls med nollor och celler i den andra färgen fylls med naturliga tal uppifrån och ned, från vänster till höger. Siffran 1 är skriven i det övre vänstra hörnet.
Indataformat
Två siffror n och m anges, inte överstigande 100.
Utmatningsformat
Mata ut den resulterande arrayen och lämna exakt 4 tecken för varje element.

exempelinmatning: 3 5 exempelutdata: 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8

#omfatta använder namnutrymme std; int main() ( int n, m, sm; cin >> n >> m; int a[n][m]; // processing int number = 1; 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; }

Uppgift #13

Med tanke på siffrorna n och m, fyll en tvådimensionell matris av storleken n×m med siffror från 1 till n×m i en spiral som börjar från det övre vänstra hörnet och vrider medurs, som visas i exemplet.
Indataformat
Två siffror n och m anges, inte överstigande 100.
Utmatningsformat
Mata ut den resulterande arrayen och lämna exakt 4 tecken för varje element.

exempelinmatning: 4 5 exempelutdata: 1 2 3 4 5 14 15 16 17 6 13 20 19 18 7 12 11 10 9 8

#omfatta använder namnutrymme std; int main() ( int n, m; cin >> n >> m; int a; för (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

Vänligen aktivera JavaScript för att se

Laborationer för skolor och universitet om att lösa problem med att bearbeta tvådimensionella arrayer i C (C). Lista över laboratoriearbetets uppgifter (klicka på länken leder till lösningen av problemet, om det finns):

Ytterligare uppgifter:

Alla program har testats i CodeBlocks 16.01 (MinGW, Windows 10). Du kan ge dina lösningar på olösta program och förslag för att förbättra befintliga i kommentarerna längst ner på sidan.

Ladda ner laboratoriefilen och alla källkoder för programmen i arkivet:


Du kan också beställa lösningar för dina labb i C++ och många andra:

#1: Givet en tvådimensionell array. Hitta den lägsta summan av elementen i en sträng. Lös problemet utan att använda en extra endimensionell array.

#omfatta #omfatta #omfatta int main() ( int *arr; int x, y, i, j, summa = 0, min = 0, minstr = 0; srand(tid(NULL)); x = 2 + rand() % 10; y = 2 + rand() % 6; arr = (int*)malloc(x*y*storlek(int)); printf("Array %d x %d: \n", x, y); för (i = 0; i

#2: Bestäm koordinaterna för elementet närmast medelvärdet för alla element i arrayen.

#omfatta #omfatta #omfatta #omfatta int main() ( int *arr; int x, y, i, j, minx = 0, miny = 0; float ssum = 0; srand(tid(NULL)); x = 1 + rand() % 10; y = 1 + rand() % 7; arr = (int*)malloc(x*y*storlek(int)); printf("Array %d x %d: \n", x, y); för (i = 0 i

#9: Givet en tvådimensionell array med ett jämnt antal kolumner. Byt ut kolumnerna i den vänstra halvan av arrayen med kolumnerna i den högra halvan.

#omfatta #omfatta #omfatta int main() ( int *arr; int x, y, i, j, d; srand(tid(NULL)); x = 1 + rand() % 10; y = 2 * (1 + rand() % 3 ); arr = (int*)malloc(x*y*sizeof(int)); printf("Array %d x %d: \n", x, y); för (i = 0; i

#14: För varje rad i en tvådimensionell matris, ta reda på antalet element vars sista siffra är lika med a.

#omfatta #omfatta #omfatta int main() ( int *arr; int x, y, i, j, a, count; srand(tid(NULL)); printf("Ange a: "); scanf("%d", &a); x = 1 + rand() % 10; y = 1 + rand() % 7; arr = (int*)malloc(x*y*storlek på(int)); printf("Array %d x %d: \n", x, y); för (i = 0; i

#21: Givet en tvådimensionell array b. Om du betraktar det som en matris, transponera b.

#omfatta #omfatta #omfatta int main() ( int *arr, *arrT, x, y, i, j; srand(tid(NULL)); x = 1 + rand() % 7; y = 1 + rand() % 7; arr = (int*)malloc(x*y*sizeof(int)); printf("Matrix %d x %d: \n", x, y); för (i = 0; i

Nr 1 (Extra): En tvådimensionell array ges. Sortera dess strängar i icke-minskande ordning efter deras första element.

#omfatta #omfatta #omfatta int main() ( int *arr, x, y, i, j, k, d, max = 0; srand(tid(NULL)); x = 1 + rand() % 10; y = 1 + rand() % 7; arr = (int*)malloc(x*y*sizeof(int)); printf("Array %d x %d: \n", x, y); för (i = 0; i *(arr + max*y)) max = j; för (k = 0; k

#2 (Ytterligare): Bestäm om den givna kvadratiska matrisen är ortonormal, dvs. en där skalärprodukten för varje par av distinkta strängar är 0, och skalärprodukten för varje sträng med sig själv är 1.

#omfatta #omfatta int main() ( int *arr; int x, i, j, k, summa = 0; printf("Ange storleken på kvadratmatrisen: "); scanf("%d", &x); arr = (int *)malloc(x*x*sizeof(int)); printf("Ange elementen i matrisen %d x %d: \n", x, x); för (i = 0; i

Nr 3 (Extra): En kvadratisk tvådimensionell matris ges. Hitta summan av elementen i var och en av dess diagonaler parallella med sekundären.

#omfatta #omfatta #omfatta int main() ( int *arr; int x, y, i, j, summa; srand(tid(NULL)); x = 2 + rand() % 6; arr = (int*)malloc(x*y* sizeof(int)); printf("Array %d x %d: \n", x, x); för (i = 0; i

Problem med tvådimensionella arrayer

1) En tvådimensionell matris av heltal ges. Skriv ett program:

a) visa elementet i det övre högra hörnet av arrayen;

b) visning av elementet i det nedre vänstra hörnet av arrayen;

c) visning av vilket element som helst i den andra raden i arrayen på skärmen;

d) att visa vilket element som helst i den tredje kolumnen i arrayen;

e) visa valfritt element i arrayen på skärmen.

2) En tvådimensionell heltalsmatris ges. Byta:

a) element placerade i det övre högra och nedre vänstra hörnet;

b) element placerade i det nedre högra och övre vänstra hörnet;

3) Linjenumret är känt, på vilket elementet i huvuddiagonalen i en tvådimensionell matris av heltal finns. Visa värdet på detta element.

4) Display (på en rad):

a) alla element i arrayens huvuddiagonal

b) alla element i arrayens huvuddiagonal, med början med elementet i det nedre högra hörnet.

5) Ersätt värdena för alla element i huvuddiagonalen i en heltalsmatris med noll.

6) Ersätt värdena för alla element i den sekundära diagonalen i en heltalsmatris med värden lika med 100.

7) Bestäm:

a) summan av elementen i arrayens huvuddiagonal;

b) summan av elementen i den sekundära diagonalen i matrisen;

c) det aritmetiska medelvärdet av elementen i arrayens huvuddiagonal;

d) det aritmetiska medelvärdet av elementen i den sekundära diagonalen av arrayen;

e) det minsta (maximala) elementet i arrayens huvuddiagonal;

f) det maximala (minsta) elementet för sekundärdiagonalen för en reell matris;

g) koordinater för det första maximala elementet i huvuddiagonalen;

h) koordinater för det första minimielementet i huvuddiagonalen.

a) visa alla element i den femte raden i arrayen;

b) visa alla element i den tredje raden i arrayen, med början från det sista elementet i denna rad;

c) visa alla element i den s:te kolumnen i arrayen;

d) ersätt värdena för alla element i den andra raden i arrayen med siffran 5;

e) ersätt värdena för alla element i den femte kolumnen med siffran 10.

f) bestämma det maximala (minsta) elementet i den tredje kolumnen;

9) En tvådimensionell matris av heltal ges. Skriv ett program:

a) beräkna produkten av två valfria element i valfri matrissträng

b) summan av alla element i någon matrissträng;

10) En tvådimensionell matris av heltal ges. Definiera:

a) a) i vilken kolumn i matrisen summan av elementen är mindre, i den första eller i den sista;

b) b) i vilken linje produkten av element är större, i den andra eller i den tredje.

11) Givet en tvådimensionell heltalsmatris med storleken 10 x 10. Visa en del av matrisen på skärmen:

a) belägen ovanför huvuddiagonalen;



b) ligger under huvuddiagonalen;

c) belägen ovanför den sekundära diagonalen;

d) belägen under den sekundära diagonalen;

12) Givet en tvådimensionell matris av heltal:

a) i var och en av dess kolumner hitta det maximala (minsta) elementet;

b) koordinater för det maximala (minsta) elementet;

c) summan av udda element i varje kolumn (rad);

d) antalet element som är multiplar av A eller B.

e) hitta raden med den maximala summan av element;

f) hitta kolumnen med minsta summan av element.

  • utbildning: att bidra till bildandet av en idé om en tvådimensionell matris och de grundläggande egenskaperna hos kvadratiska matriser; överväga åtgärder som kan utföras på matriser; introducera typiska algoritmer för bearbetning av matriser i Pascal; skapa förutsättningar för bildandet av förmågan att lösa algoritmer med tvådimensionella arrayer;
  • utvecklande:
  • skapa förutsättningar för kompetensutveckling för att arbeta under en begränsad tid, utveckling av självständig arbetsförmåga, utveckling av färdigheter i att arbeta med anteckningar.
  • pedagogisk:
  • att främja skapandet av psykologisk komfort för arbetet i lektionen, utbildning av lugn, en ansvarsfull inställning till sitt arbete och en ökning av motivationen för pedagogisk verksamhet.

Lektionstyp: kombinerad.

Arbetsformer: föreläsning, självständigt arbete.

Organisationsformer: frontarbete, individuellt arbete.

Utrustning: uppgifter för klassarbete (enskilda kort, uppgift på dator), anteckningar på tavlan.

Under lektionerna:

1. Organisatoriskt ögonblick.

Hälsningar.
Ämnet redovisat.
Bestäm syftet med lektionen och uppgifterna.

2. Aktualisering av förvärvad kunskap

Huvudpunkterna i det föregående ämnet talas muntligt: ​​"Endimensionella arrayer". Frontal miniundersökning om huvuddefinitionerna.

3. Målinställning, uppgiftsinställning:

  • definiera konceptet för en tvådimensionell array;
  • överväg beteckningen för en tvådimensionell array
  • överväga de grundläggande egenskaperna hos kvadratiska matriser;
  • överväga åtgärder som kan utföras på matriser;
  • bekanta dig med typiska algoritmer för bearbetning av matriser i Pascal;
  • skapa förutsättningar för bildandet av förmågan att lösa algoritmer med tvådimensionella arrayer;
  • 4. Föreläsning

    Definition.

    En tvådimensionell array är en samling data, vars värde beror på två tal, som kan betraktas som ett index för en kolumn i en matris.

    Inspelningsformat

    <имя>: array[n_index_1..to_index_1, n_index_2 ..to_index_2] av <тип>

    A: matris av heltal;

    För att använda ett element i en array måste du ange namnet på arrayen och indexet för elementet. Det första indexet motsvarar radnumret, det andra till kolumnnumret. Till exempel:

    för i:=1 till n gör
    för j:=1 till n do
    a:=slumpmässig(100);

    Vid initialisering av tvådimensionella arrayer är varje rad innesluten i ytterligare ett par parenteser:

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

    En analog till Pascal-matriser i matematik är matriser. En matris där antalet rader är lika med antalet kolumner kallas en kvadratisk matris. A(n,n) – kvadratisk matris

    Huvudegenskaper hos kvadratmatriser:

    1. Kvadratiska matriser har huvud- och sidodiagonaler. Till exempel, för matris A, ligger elementen 1,5 och 9 på huvuddiagonalen och 3, 5 och 7 ligger på sidodiagonalen.

    i=j – element är placerade på huvuddiagonalen;
    i> j - element är belägna under huvuddiagonalen;
    i i?j - element är belägna på huvuddiagonalen och nedanför;
    i+j= n+1– element är placerade på den sekundära diagonalen;
    i+j< n+1– элементы расположены над побочной диагональю;
    i+j> n+1 – element är placerade under den sekundära diagonalen;

    2. En kvadratisk matris där alla element, exklusive huvuddiagonalens element, är lika med noll, kallas diagonal matris

    3. En diagonalmatris där alla element på huvuddiagonalen är lika med 1 kallas identitetsmatris

    4. Om raderna och kolumnerna i matrisen A (m, n) byts om, så erhålls matrisen A t (m, n), som kallas den transponerade matrisen.

    Grundläggande åtgärder som kan utföras på matriser

    • sammanfatta;
    • hitta skillnaden
    • produkten av en matris med något tal;
    • produkt av två matriser.

    Typiska matrisbearbetningsalgoritmer i Pascal

    1. Matrisens utdata i form av en tabell:
    2. för i:= 1 till n do
      Börja
      för j:= 1 till m do
      skriv(a:4);
      skrivln
      slutet;

    3. Använda en slumptalsgenerator:
    4. randomisera;
      för i:=1 till m gör
      Börja
      för j:=1 till n do
      Börja
      a:=slumpmässig(100)-10;
      skriv(a:4);
      slutet;
      skrivln;
      slutet;

    5. 2:a sättet att visa matrisen i form av en tabell:
    6. för i:= 1 till n do
      för j:= 1 till m do
      om j>m skriv då (a:4)
      else writeln(a:4);

    7. Matris summering:
    8. för i:= 1 till n do
      Börja
      för j:= 1 till m do
      c:=a+b
      slutet;

    9. Transponeringen av en matris är en spegelbild av dess element i förhållande till huvuddiagonalen. Du kan göra detta genom att introducera en ny array:

    för i:= 1 till n do
    för j:= 1 till n do
    b=a;

    5. Primär kontroll

    "Konturkarta" 2 alternativ

    1 alternativ

    1. Korrigera felaktigheter i beskrivningen av en tvådimensionell array:
    2. Var
      A= array av heltal;

      ... ... tvådimensionella arrayer, varje rad omges av ytterligare ett par parenteser:

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

    3. Infoga saknade definitioner:
    4. Grundläggande operationer som kan utföras på matriser: summering, produkt av två matriser,….,….

    5. Infoga saknade definitioner:
    6. En matris där antalet rader är lika med antalet kolumner kallas .... …….

    7. Hitta fel i algoritmen:

    för i:= 1 till n do
    Börja
    för j:= 1 till m do
    c:=a+a
    slutet;

    Alternativ 2

    1. Korrigera felaktigheter i arraybeskrivningen:

    konst
    n=4; m=3;
    typ
    mas:array av heltal;

    1. Infoga saknade definitioner:
    2. …… är en uppsättning data, vars värde beror på två tal, som kan betraktas som ett index för en kolumn i en matris.

    3. Infoga saknade definitioner:
    4. En diagonalmatris där alla element på huvuddiagonalen är lika med ... kallas identitetsmatris

    5. Infoga saknade definitioner:
    6. En kvadratisk matris där alla element, förutom elementen i huvuddiagonalen, är lika med noll, kallas … … .

    7. Hitta fel i algoritmen:

    randomisera;
    för i:=1 till m gör
    Börja
    för j:=1 till n do
    Börja
    a:=slumpmässig(100)-10;
    slutet;
    slutet;

    Vilken är den typiska uppgiften för algoritmen?

    Algoritmer i Pascal

    1. Skriv ett program som, för en 3x4 heltalsmatris, bestämmer det aritmetiska medelvärdet av dess element och antalet positiva element i varje rad. Bilaga 2
    2. program medium_n;
      konst m=3;
      n=4;
      var

      i,j,n_pos_el:heltal;
      sred:real;
      Börja
      för i:=1 till m gör
      för j:=1 till n läs(a);
      mitt:=0;
      för i:=1 till m börjar
      n_pos_el:=0;
      för j:=1 till n börjar
      sred:=sred+a;
      om a>0 så inc(n_pos_el);
      slutet;
      writeln("V",i,"-oi stroke",n_pos_el,"polozitelnix elementov");
      slutet;
      sred:=sred/m/n;
      writeln("Srednee arithmeticheskoe:",sred:6:2);
      slutet.

    3. Skriv ett program som, givet en rektangulär 3x4 heltalsmatris, bestämmer numret på kolumnen längst till vänster som endast innehåller positiva element. Om det inte finns någon sådan kolumn visas ett meddelande. Bilaga 3

    program num_posit;
    konst m=3;
    n=4;
    var
    a: matris av heltal;
    i,j,tal:heltal;
    all_posit:boolean;
    Börja
    randomisera;
    för i:=1 till m gör
    Börja
    för j:=1 till n do
    Börja
    a:=slumpmässig(100)-10;
    skriv(a:4);
    slutet;
    skrivln;
    slutet;
    antal:=0;
    för j:=1 till n börjar
    all_posit:=true;
    för i:=1 till m gör
    Om en< 0 then
    Börja
    all_posit:=false;
    ha sönder; slutet;
    om all_posit sedan börja
    num:=j; ha sönder; slutet;
    slutet;
    om num = 0 då
    writeln("Takix stolbcov net")
    annan
    writeln("Nummerkolumn:",num);
    slutet.

    Studenter laddar upp filer i Pascal, analyserar den här algoritmen, ser resultaten av programexekveringen, svarar på ytterligare frågor:

    1. Hur är en tvådimensionell array organiserad?
    2. Vad betyder inc-proceduren?
    3. Vad innebär pausproceduren?
    4. Hur används slumptalsgeneratorn?

    6. Bildande av problemlösningsförmåga.

    Lösa problem på individuella kort självständigt, i en algoritmisk miljö.

    Exempel på uppgifter:

    1. Givet en 5x5 matris A som innehåller slumpmässiga element. Hitta summan av alla matriselement.
    2. Visa Pythagoras-tabellen.
    3. Hitta summan av positiva element i den angivna kolumnen i matrisen A 5x5 heltal.

    7. Resultatet av lektionen, inställning av läxor.

    Sammanfattande. Bedöma nivån av assimilering.

    D/Z abstrakt, uppgifter:

    För alla:

    1. Givet en tvådimensionell kvadratisk array. Hitta antalet rader där alla element är lika med noll.
    2. Givet en tvådimensionell kvadratisk array. Hitta antalet linjer, elementen i var och en av dem är desamma.
    3. Bestäm minimielementet för en tvådimensionell array. Skriv ut radnumret som innehåller det maximala antalet minsta element, om några.
    4. Givet en tvådimensionell array. Hitta linjen med den största summan av element och den minsta. Visa de hittade strängarna och summan av deras element.

    För elever som har en idé om tvådimensionella arrayer och hur man löser dem:

    Istället för en föreläsning - att lösa problem med ökad komplexitet.

    Exempel på uppgifter:

    1. Givet en tvådimensionell array. Omvandla det enligt följande regel: gör raden med nummer N till en kolumn med nummer N och kolumnen till en rad.
    2. I en tvådimensionell array X är alla tal distinkta. I varje rad väljs minimielementet, sedan väljs maximum bland dessa siffror. Skriv ut radnumret för array X som innehåller det valda numret.
    3. Givet en tvådimensionell array. Hitta det största av värdena för elementen i den första och sista raden.
    4. Skriv ett program som skriver ut en tvådimensionell array rad för rad från tangentbordet och beräknar summan av dess element efter kolumner.
    5. Skriv ett program som beräknar summan av de diagonala elementen i en kvadratisk matris.