Étant donné en deux dimensions. Exemples de résolution de problèmes avec des tableaux bidimensionnels, problèmes de solution indépendante. Problèmes sur les tableaux bidimensionnels

Un autre lot de problèmes informatiques destinés aux écoliers est arrivé. Cette fois, nous examinerons l'utilisation de tableaux bidimensionnels en C++. Ces problèmes sont assez intéressants. Et j'ai aimé la plupart d'entre eux.

Tâche n°1

Trouvez les indices de la première occurrence de l'élément maximum.
Format d'entrée
Le programme reçoit des tableaux de tailles n et m en entrée, puis n lignes de m nombres chacune. n et m ne dépassent pas 100.
Format de sortie
Imprimez deux nombres : le numéro de ligne et le numéro de colonne, qui contiennent le plus grand élément d'un tableau à deux dimensions. S'il existe plusieurs éléments de ce type, celui avec le numéro de ligne le plus petit est affiché, et si les numéros de ligne sont égaux, celui avec le numéro de colonne le plus petit est affiché.

Exemple d'entrée : 3 4 0 3 2 4 2 3 5 5 5 1 2 3 Exemple de sortie : 1 2

#inclure en utilisant l'espace de noms std ; int main() ( int n, m; cin >> n >> m; int a; // lecture pour (int i = 0; i< n; i++) { for (int j = 0; j < m; j++) { cin >> une[i][j]; ) ) int max = a, max_i = 0, max_j = 0; pour (int je = 0; je< 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; }

Tâche n°2

Étant donné un nombre impair n inférieur ou égal à 15. Créez un tableau bidimensionnel de n × n éléments en le remplissant avec "." (chaque élément du tableau est une chaîne d'un caractère). Remplissez ensuite la ligne du milieu du tableau, la colonne du milieu du tableau, la diagonale principale et la diagonale secondaire avec les caractères "*". Par conséquent, le « * » dans le tableau doit former une image astérisque. Affichez le tableau résultant à l'écran, en séparant les éléments du tableau par des espaces.

Exemple d'entrée : 5 Exemple de sortie : * . * . * . * * * . * * * * * . * * * . * . * . *

#inclure en utilisant l'espace de noms 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; }

Tâche n°3

Étant donné un nombre n ne dépassant pas 100. Créez un tableau de taille n×n et remplissez-le selon la règle suivante. Sur la diagonale principale doivent être écrits les chiffres 0. Sur les deux diagonales adjacentes à la diagonale principale, les chiffres 1. Sur les deux diagonales suivantes, les chiffres 2, etc.

Exemple d'entrée : 5 Exemple de sortie : 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

#inclure #inclure en utilisant l'espace de noms std ; int main() ( int n; cin >> n; int a; // traitement pour (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; }

Problème n°4

Étant donné un tableau à deux dimensions et deux nombres : i et j. Échangez les colonnes numérotées i et j dans le tableau.
Format d'entrée
Le programme reçoit en entrée les tailles de tableau n et m, ne dépassant pas 100, puis les éléments du tableau, puis les nombres i et j.
Format de sortie
Imprimez le résultat.

Exemple d'entrée : 0 1 Exemple de sortie : 12 11 13 14 22 21 23 24 32 31 33 34

#inclure #inclure en utilisant l'espace de noms std ; int main() ( int n, m, x, y, temp; cin >> n >>< n; i++) { for (int j = 0; j < m; j++) { cin >> une[i][j]; ) ) cin >> x >> y; // traitement pour (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; }

Problème n°5

Étant donné un nombre n ne dépassant pas 10 et un tableau de taille n × n. Vérifiez si ce tableau est symétrique par rapport à la diagonale principale. Imprimez le mot « OUI » si le tableau est symétrique, et le mot « NON » sinon.

Exemple d'entrée : 3 0 1 2 1 2 3 2 3 4 Exemple de sortie : OUI

#inclure #inclure en utilisant l'espace de noms std ; int main() ( int n; bool symétrique; cin >> n; int a; // remplissage pour (int i = 0; i< n; i++) { for (int j = 0; j < n; j++) { cin >> une[i][j]; ) ) // traitement symétrique = true; pour (int je = 0; je< 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; }

Problème n°6

Étant donné un tableau carré bidimensionnel de taille n × n et un nombre k. Sortez les éléments de la kème diagonale en dessous de la diagonale principale (c'est-à-dire si k = 1, alors vous devez sortir les éléments de la première diagonale située en dessous de la diagonale principale, si k = 2, alors la deuxième diagonale, etc.).
La valeur de k peut être négative, par exemple, si k = −1, alors vous devez afficher la valeur de la première diagonale située au dessus de la principale. Si k = 0, alors vous devez afficher les éléments de la diagonale principale.
Le programme reçoit en entrée le nombre n, ne dépassant pas 10, puis un tableau de taille n × n, puis le nombre k.

Exemple d'entrée 1 : 4 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 1 Exemple de sortie 1 : 5 1 6 Exemple d'entrée 2 : 4 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 -2 Exemple de sortie 2 : 3 8

#inclure en utilisant l'espace de noms std ; int main() ( int n, k; cin >> n; int a[n][n]; // remplissage pour (int i = 0; i< n; i++) { for (int j = 0; j < n; j++) { cin >> une[i][j]; ) ) cin >> k; // traitement et sortie pour (int i = 0; i< n; i++) { for (int j = 0; j < n; j++) { if (i - j - k == 0) cout << a[i][j] << " "; } } return 0; }

Problème n°7

Étant donné un tableau bidimensionnel de taille n×m (n et m ne dépassent pas 1000). Un tableau qui lui est symétrique par rapport à la diagonale principale est dit transposé à celle donnée. Il a des dimensions m×n : les lignes du tableau d'origine deviennent les colonnes du tableau transposé, les colonnes du tableau d'origine deviennent les lignes du tableau transposé.
Étant donné un tableau, construisez un tableau transposé et affichez-le à l'écran.

Exemple d'entrée : 3 4 11 12 13 14 21 22 23 24 31 32 33 34 Exemple de sortie : 11 21 31 12 22 32 13 23 33 14 24 34

#inclure en utilisant l'espace de noms 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; }

Problème n°8

Il y a n rangées de cinéma de m sièges chacune (n et m ne dépassent pas 20). Un tableau bidimensionnel stocke des informations sur les billets vendus, le chiffre 1 signifie qu'un billet pour un siège donné a déjà été vendu, le chiffre 0 signifie que le siège est libre. Une demande a été reçue pour vendre k billets pour des sièges adjacents dans la même rangée. Déterminez si cette demande peut être complétée.
Format d'entrée
Le programme reçoit les nombres n et m en entrée. Vient ensuite n lignes contenant m nombres (0 ou 1), séparés par des espaces. Alors le nombre k est donné.
Format de sortie
Le programme doit imprimer le numéro de la rangée dans laquelle il y a k sièges vides consécutifs. S'il existe plusieurs lignes de ce type, imprimez le numéro de la plus petite ligne appropriée. S'il n'y a pas de ligne appropriée, imprimez le chiffre 0.

Exemple d'entrée : 3 4 0 1 0 1 1 0 0 1 1 1 1 1 2 Exemple de sortie : 2

#inclure en utilisant l'espace de noms std ; int main() ( int n, m, k, r = 0; cin >> n >> m; int a[n][m]; // remplissage pour (int i = 0; i< n; i++) { for (int j = 0; j < m; j++) { cin >> une[i][j]; ) ) cin >> k; // traitement pour (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; }

Problème n°9

Étant donné un tableau rectangulaire de taille n×m. Faites-le pivoter de 90 degrés dans le sens des aiguilles d'une montre, en écrivant le résultat dans un nouveau tableau m×n.
Format d'entrée
Entrez deux nombres n et m, ne dépassant pas 100, puis un tableau de taille n×m.
Format de sortie
Imprimez le tableau résultant. Séparez les nombres lors de la sortie avec un espace.

Exemple d'entrée : 3 4 11 12 13 14 21 22 23 24 31 32 33 34 Exemple de sortie : 31 21 11 32 22 12 33 23 13 34 24 14

#inclure en utilisant l'espace de noms std ; int main() ( int n, m; cin >> n >> m; int a[n][m]; int b[m][n]; // remplissage pour (int i = 0; i< n; i++) { for (int j = 0; j < m; j++) { cin >> une[i][j]; ) ) // traitement pour (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; }

Problème n°10

Étant donné les nombres n et m, remplissez un tableau bidimensionnel de taille n×m avec des nombres de 1 à n×m « serpent », comme indiqué dans l’exemple.
Format d'entrée
Entrez deux nombres n et m, dont chacun ne dépasse pas 20.
Format de sortie

Exemple d'entrée : 3 5 Exemple de sortie : 1 2 3 4 5 10 9 8 7 6 11 12 13 14 15

#inclure en utilisant l'espace de noms std ; int main() ( int n, m, c = 0; cin >> n >> m; int a[n][m]; // traitement pour (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; }

Problème n°11

Étant donné les nombres n et m, remplissez un tableau bidimensionnel de taille n×m avec des nombres de 1 à n×m « diagonales », comme indiqué dans l’exemple.
Format d'entrée

Format de sortie
Affichez le tableau résultant, en allouant exactement 4 caractères pour chaque élément.

Exemple d'entrée : 3 5 Exemple de sortie : 1 2 4 7 10 3 5 8 11 13 6 9 12 14 15

#inclure en utilisant l'espace de noms std ; int main() ( int n, m, pos = 0, row = 0; cin >> n >> m; int a[n][m]; // traitement int start_row = 0; int number = 1; for ( int min_row = 0 ; min_row< n; min_row++) { if (min_row >0) start_row = pos - 1 ; sinon start_row = 0 ; pour (pos = start_row; pos< m; pos++) { row = min_row; for (int col = pos; col >= 0 ; col--) ( if (ligne< 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; }

Problème n°12

Les nombres n et m sont donnés. Remplissez un tableau n × m en damier : les cellules d'une couleur sont remplies de zéros et les cellules d'une autre couleur sont remplies de nombres naturels de haut en bas, de gauche à droite. Le chiffre 1 est écrit dans le coin supérieur gauche.
Format d'entrée
Entrez deux nombres n et m, ne dépassant pas 100.
Format de sortie
Affichez le tableau résultant, en allouant exactement 4 caractères pour chaque élément.

Exemple d'entrée : 3 5 Exemple de sortie : 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8

#inclure en utilisant l'espace de noms std ; int main() ( int n, m, sm; cin >> n >> m; int a[n][m]; // traitement 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; }

Problème n°13

Étant donné les nombres n et m, remplissez un tableau bidimensionnel de taille n×m avec des nombres de 1 à n×m dans une spirale partant du coin supérieur gauche et tournant dans le sens des aiguilles d’une montre, comme indiqué dans l’exemple.
Format d'entrée
Entrez deux nombres n et m, ne dépassant pas 100.
Format de sortie
Affichez le tableau résultant, en allouant exactement 4 caractères pour chaque élément.

Exemple d'entrée : 4 5 Exemple de sortie : 1 2 3 4 5 14 15 16 17 6 13 20 19 18 7 12 11 10 9 8

#inclure en utilisant l'espace de noms std ; int main() ( int n, m; cin >> n >> m; int a; pour (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

Veuillez activer JavaScript pour afficher le

Problèmes sur les tableaux bidimensionnels

1) Étant donné un tableau bidimensionnel d’entiers. Créez un programme :

a) afficher l'élément situé dans le coin supérieur droit du tableau ;

b) afficher l'élément situé dans le coin inférieur gauche du tableau ;

c) afficher n'importe quel élément de la deuxième ligne du tableau ;

d) afficher n'importe quel élément de la troisième colonne du tableau ;

e) afficher n'importe quel élément du tableau sur l'écran.

2) Étant donné un tableau d’entiers bidimensionnels. Échanger:

a) les éléments situés dans les coins supérieur droit et inférieur gauche ;

b) les éléments situés dans les coins inférieur droit et supérieur gauche ;

3) Le numéro de la ligne sur laquelle se trouve l'élément de la diagonale principale du tableau bidimensionnel d'entiers est connu. Affiche la valeur de cet élément.

4) Affichage (sur une ligne) :

a) tous les éléments de la diagonale principale du tableau

b) tous les éléments de la diagonale principale du tableau, en commençant par l'élément situé dans le coin inférieur droit.

5) Remplacez les valeurs de tous les éléments de la diagonale principale du tableau d'entiers par zéro.

6) Remplacez les valeurs de tous les éléments de la diagonale latérale du tableau d'entiers par des valeurs égales à 100.

7) Déterminer :

a) la somme des éléments de la diagonale principale du tableau ;

b) la somme des éléments de la diagonale secondaire du tableau ;

c) la moyenne arithmétique des éléments de la diagonale principale du réseau ;

d) la moyenne arithmétique des éléments de la diagonale secondaire du réseau ;

e) l'élément minimum (maximum) de la diagonale principale du réseau ;

f) l'élément maximum (minimum) de la diagonale latérale d'un tableau réel ;

g) coordonnées du premier élément maximum de la diagonale principale ;

h) coordonnées du premier élément minimal de la diagonale principale.

a) afficher tous les éléments de la cinquième ligne du tableau ;

b) afficher tous les éléments de la troisième ligne du tableau, en commençant par le dernier élément de cette ligne ;

c) afficher tous les éléments de la ième colonne du tableau ;

d) remplacer les valeurs de tous les éléments de la deuxième ligne du tableau par le chiffre 5 ;

e) remplacez les valeurs de tous les éléments de la cinquième colonne par le chiffre 10.

f) déterminer l'élément maximum (minimum) de la troisième colonne ;

9) Étant donné un tableau bidimensionnel d’entiers. Créez un programme :

a) calculer le produit de deux éléments quelconques de n'importe quelle ligne d'un tableau

b) la somme de tous les éléments de n'importe quelle ligne du tableau ;

10) Étant donné un tableau bidimensionnel d’entiers. Définir:

a) a) dans quelle colonne du tableau la somme des éléments est inférieure, dans la première ou dans la dernière ;

b) b) dans quelle ligne le produit des éléments est plus grand, dans la deuxième ou la troisième.

11) Étant donné un tableau d'entiers bidimensionnels de taille 10 x 10. Affichez une partie du tableau :

a) situé au-dessus de la diagonale principale ;



b) situé en dessous de la diagonale principale ;

c) situé au-dessus de la diagonale latérale ;

d) situé sous la diagonale latérale ;

12) Étant donné un tableau bidimensionnel d’entiers :

a) dans chacune de ses colonnes trouver l'élément maximum (minimum) ;

b) les coordonnées de l'élément maximum (minimum) ;

c) la somme des éléments impairs dans chaque colonne (ligne) ;

d) le nombre d'éléments qui sont des multiples de A ou B.

e) trouver la droite avec la somme maximale des éléments ;

f) trouver la colonne avec la somme minimale d'éléments.

Travaux de laboratoire pour les écoles et universités sur la résolution de problèmes de traitement de tableaux bidimensionnels en langage C. Liste des tâches de travail en laboratoire (en cliquant sur le lien, vous serez dirigé vers la solution au problème, si disponible) :

Des tâches supplémentaires:

Les performances de tous les programmes ont été testées dans CodeBlocks 16.01 (MinGW, Windows 10). Vous pouvez donner vos solutions aux programmes non résolus et des suggestions pour améliorer ceux existants dans les commentaires en bas de la page.

Téléchargez le fichier du laboratoire et tous les codes sources des programmes dans l'archive :


Vous pouvez également commander une solution pour vos travaux de laboratoire en C++ et bien d'autres :

N° 1 : Étant donné un tableau bidimensionnel. Trouver la somme minimale des éléments d'une chaîne. Résolvez le problème sans utiliser de tableau unidimensionnel supplémentaire.

#inclure #inclure #inclure 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("Array %d x %d: \n", x, y); for (i = 0; je

N°2 : Déterminez les coordonnées de l'élément le plus proche de la valeur moyenne de tous les éléments du tableau.

#inclure #inclure #inclure #inclure 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("Array %d x %d: \n", x, y); for (i = 0 ; je

N° 9 : Étant donné un tableau bidimensionnel d’un nombre pair de colonnes. Échangez les colonnes de la moitié gauche du tableau avec les colonnes de la moitié droite.

#inclure #inclure #inclure 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("Array %d x %d: \n", x, y); for (i = 0; i

N°14 : Pour chaque ligne d'un tableau à deux dimensions, trouvez le nombre d'éléments dont le dernier chiffre est a.

#inclure #inclure #inclure int main() ( int *arr; int x, y, i, j, a, count; srand(time(NULL)); printf("Entrez a: "); scanf("%d", &a); x = 1 + rand() % 10 ; y = 1 + rand() % 7 ; arr = (int*)malloc(x*y*sizeof(int)); printf("Massiv %d x %d: \n", x, y); pour (i = 0; i

N° 21 : Étant donné un tableau à deux dimensions b. En la considérant comme une matrice, transposez b.

#inclure #inclure #inclure 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("Matrice %d x %d: \n", x, y); for (i = 0; i

N° 1 (supplémentaire) : étant donné un tableau bidimensionnel. Triez ses lignes par ordre non décroissant de leurs premiers éléments.

#inclure #inclure #inclure 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("Array %d x %d: \n", x, y); for (i = 0; i *(arr + max*y)) max = j; pour (k = 0; k

N° 2 (supplémentaire) : Déterminer si une matrice carrée donnée est orthonormale, c'est-à-dire celui dans lequel le produit scalaire de chaque paire de chaînes distinctes est 0 et le produit scalaire de chaque chaîne avec elle-même est 1.

#inclure #inclure int main() ( int *arr; int x, i, j, k, sum = 0; printf("Entrez la taille de la matrice carrée : "); scanf("%d", &x); arr = (int *)malloc(x*x*sizeof(int)); printf("Entrez les éléments de la matrice %d x %d : \n", x, x); for (i = 0; i

N° 3 (supplémentaire) : étant donné un tableau carré à deux dimensions. Trouver la somme des éléments de chacune de ses diagonales parallèles à la diagonale secondaire.

#inclure #inclure #inclure 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("Array %d x %d: \n", x, x); for (i = 0; i

  • pédagogique : favoriser la formation d'une idée de tableau bidimensionnel et les propriétés de base des matrices carrées ; considérer les actions qui peuvent être effectuées sur les matrices ; introduire des algorithmes standard de traitement matriciel en Pascal ; créer les conditions nécessaires au développement de la capacité de résoudre des algorithmes avec des tableaux bidimensionnels ;
  • développement:
  • créer les conditions nécessaires au développement des compétences nécessaires pour travailler dans un laps de temps limité, au développement des compétences de travail indépendant et au développement des compétences de prise de notes.
  • éducatif:
  • favoriser la création d’un confort psychologique pour le travail en classe, le développement du sang-froid, une attitude responsable envers son travail et une motivation accrue pour les activités éducatives.

Type de cours : combiné.

Méthodes d'enseignement : cours magistral, travail indépendant.

Formes d'organisation : travail frontal, travail individuel.

Matériel : devoirs pour le travail en classe (fiches individuelles, devoirs sur ordinateur), notes au tableau.

Pendant les cours :

1. Moment organisationnel.

Salutations.
Le sujet est rapporté.
Fixez des buts et des objectifs pour la leçon.

2. Actualisation des connaissances acquises

Les principaux points du sujet précédent sont exposés oralement : « Tableaux unidimensionnels ». Mini-enquête frontale sur les définitions de base.

3. Définition d'objectifs, définition de tâches :

  • définir le concept de tableau bidimensionnel ;
  • considérons la forme de notation d'un tableau à deux dimensions
  • considérer les propriétés de base des matrices carrées ;
  • considérer les actions qui peuvent être effectuées sur les matrices ;
  • se familiariser avec les algorithmes typiques de traitement matriciel en Pascal ;
  • créer les conditions nécessaires au développement de la capacité de résoudre des algorithmes avec des tableaux bidimensionnels ;
  • 4. Conférence

    Définition.

    Un tableau bidimensionnel est une collection de données dans laquelle chaque valeur dépend de deux nombres, qui peuvent être considérés comme un index de colonne dans une matrice.

    Format d'enregistrement

    <имя>: tableau[n_index_1..in_index_1, n_index_2 ..in_index_2] de <тип>

    A : tableau d’entiers ;

    Pour utiliser un élément de tableau, vous devez spécifier le nom du tableau et l'index de l'élément. Le premier index correspond au numéro de ligne, le second au numéro de colonne. Par exemple:

    pour i:=1 à n faire
    pour j:=1 à n faire
    une:= aléatoire (100);

    Lors de l'initialisation de tableaux à deux dimensions, chaque ligne est entourée d'une paire de parenthèses supplémentaires :

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

    L'analogue des tableaux Pascal en mathématiques sont les matrices. Une matrice dans laquelle le nombre de lignes est égal au nombre de colonnes est appelée carré. A(n,n) – matrice carrée

    Propriétés de base des matrices carrées :

    1. Les matrices carrées ont des diagonales principales et latérales. Par exemple, pour la matrice A, la diagonale principale contient les éléments 1,5 et 9, et la diagonale secondaire contient les éléments 3, 5 et 7.

    i=j – les éléments sont situés sur la diagonale principale ;
    i> j – les éléments sont situés en dessous de la diagonale principale ;
    je i?j – les éléments sont situés sur la diagonale principale et en dessous ;
    i+j= n+1– les éléments sont situés sur la diagonale latérale ;
    je+j< n+1– элементы расположены над побочной диагональю;
    i+j> n+1– les éléments sont situés sous la diagonale latérale ;

    2. Une matrice carrée dans laquelle tous les éléments, à l'exclusion des éléments de la diagonale principale, sont égaux à zéro, s'appelle matrice diagonale

    3. Une matrice diagonale dans laquelle tous les éléments de la diagonale principale sont égaux à 1 est appelée matrice d'identité

    4. Si vous échangez les lignes et les colonnes de la matrice A (m,n), vous obtenez la matrice A t (m,n), appelée matrice transposée.

    Opérations de base pouvant être effectuées sur les matrices

    • résumer;
    • trouver la différence;
    • produit d'une matrice par un certain nombre ;
    • produit de deux matrices.

    Algorithmes de traitement matriciel typiques en Pascal

    1. Sortie de la matrice sous forme de tableau :
    2. pour i:= 1 à n faire
      commencer
      pour j:= 1 à m faire
      écrire(a:4);
      écrire
      fin;

    3. Utilisation d'un générateur de nombres aléatoires :
    4. randomiser;
      pour i:=1 à m faire
      commencer
      pour j:=1 à n faire
      commencer
      a:=aléatoire(100)-10 ;
      écrire(a:4);
      fin;
      écrire;
      fin;

    5. 2ème façon d'afficher la matrice sous forme de tableau :
    6. pour i:= 1 à n faire
      pour j:= 1 à m faire
      si j>m alors écrivez (a:4)
      sinon, writeln(a:4);

    7. Sommation des matrices :
    8. pour i:= 1 à n faire
      commencer
      pour j:= 1 à m faire
      c:=a+b
      fin;

    9. La transposition d'une matrice est une image miroir de ses éléments par rapport à la diagonale principale. Vous pouvez le faire en introduisant un nouveau tableau :

    pour i:= 1 à n faire
    pour j:= 1 à n faire
    b = une ;

    5. Contrôle primaire

    « Carte muette » 2 options

    1 possibilité

    1. Corrigez les inexactitudes dans la description d'un tableau à deux dimensions :
    2. Var
      A= tableau d'entiers ;

      ... ... de tableaux à deux dimensions, chaque ligne est entourée d'une paire de parenthèses supplémentaires :

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

    3. Complétez les définitions manquantes :
    4. Les principales opérations pouvant être effectuées sur les matrices sont : sommation, produit de deux matrices,….,….

    5. Complétez les définitions manquantes :
    6. Une matrice dont le nombre de lignes est égal au nombre de colonnes s'appelle.... ….. .

    7. Recherchez les erreurs dans l'algorithme :

    pour i:= 1 à n faire
    commencer
    pour j:= 1 à m faire
    c:=a+a
    fin;

    Option 2

    1. Corrigez les inexactitudes dans la description du tableau :

    const
    n = 4 ; m = 3 ;
    taper
    mas: tableau d'entiers ;

    1. Complétez les définitions manquantes :
    2. ...... est un ensemble de données dont chaque valeur dépend de deux nombres, qui peuvent être considérés comme l'index d'une colonne dans une matrice.

    3. Complétez les définitions manquantes :
    4. Une matrice diagonale dans laquelle tous les éléments de la diagonale principale sont égaux à ... est appelée matrice d'identité

    5. Complétez les définitions manquantes :
    6. Une matrice carrée dans laquelle tous les éléments, à l'exclusion des éléments de la diagonale principale, sont égaux à zéro, s'appelle … … .

    7. Recherchez les erreurs dans l'algorithme :

    randomiser;
    pour i:=1 à m faire
    commencer
    pour j:=1 à n faire
    commencer
    a:=aléatoire(100)-10 ;
    fin;
    fin;

    Quelle tâche typique l’algorithme effectue-t-il ?

    Algorithmes en langage Pascal

    1. Écrivez un programme qui, pour une matrice entière 3x4, détermine la moyenne arithmétique de ses éléments et le nombre d'éléments positifs dans chaque ligne. Annexe 2
    2. moyenne du programme_n ;
      const m = 3 ;
      m= 4 ;
      var

      je,j,n_pos_el:entier;
      moyen : réel ;
      commencer
      pour i:=1 à m faire
      pour j:=1 à n, faites read(a);
      sred :=0 ;
      pour i:=1 à m commence
      n_pos_el:=0;
      pour j:=1 à n, commencez
      sred:=sred+a;
      si a>0 alors inc(n_pos_el);
      fin;
      writeln("V",i,"-oi Stroke",n_pos_el,"polozitelnix elementov");
      fin;
      sred:=sred/m/n;
      writeln("Srednee arifmeticheskoe:",sred:6:2);
      fin.

    3. Écrivez un programme qui, pour une matrice entière rectangulaire 3x4, détermine le numéro de la colonne la plus à gauche contenant uniquement des éléments positifs. S'il n'existe pas de colonne de ce type, un message s'affiche. Annexe 3

    programme num_posit ;
    const m = 3 ;
    n = 4 ;
    var
    a : tableau d’entiers ;
    je,j,num:entier;
    all_posit:booléen;
    commencer
    randomiser;
    pour i:=1 à m faire
    commencer
    pour j:=1 à n faire
    commencer
    a:=aléatoire(100)-10 ;
    écrire(a:4);
    fin;
    écrire;
    fin;
    num:=0;
    pour j:=1 à n, commencez
    all_posit:=true;
    pour i:=1 à m faire
    si un< 0 then
    commencer
    all_posit:=false;
    casser; fin;
    si all_posit alors commencez
    num:=j; casser; fin;
    fin;
    si num = 0 alors
    writeln("Takix stolbcov net")
    autre
    writeln("Colonne numérique :",num);
    fin.

    Les étudiants téléchargent des fichiers en Pascal, analysent ces algorithmes, visualisent les résultats de l'exécution du programme et répondent à des questions supplémentaires :

    1. Comment est organisé un tableau bidimensionnel ?
    2. Que signifie la procédure inc ?
    3. Que signifie la procédure de rupture ?
    4. Comment utilise-t-on un générateur de nombres aléatoires ?

    6. Formation de compétences en résolution de problèmes.

    Résoudre des problèmes sur des cartes individuelles de manière indépendante, dans un environnement algorithmique.

    Exemples de tâches :

    1. Étant donné une matrice A 5x5 contenant des éléments aléatoires. Trouvez la somme de tous les éléments de la matrice.
    2. Affichez le tableau de Pythagore.
    3. Trouvez la somme des éléments positifs de la colonne spécifiée de la matrice A de 5x5 entiers.

    7. Résumé de la leçon, devoirs.

    Résumer. Évaluation du niveau d'assimilation.

    Résumé D/Z, tâches :

    Pour tous:

    1. Étant donné un tableau carré bidimensionnel. Trouvez le nombre de lignes dont tous les éléments sont égaux à zéro.
    2. Étant donné un tableau carré bidimensionnel. Trouvez les numéros de ligne dont les éléments dans chacun sont les mêmes.
    3. Déterminez l'élément minimum d'un tableau à deux dimensions. Imprime le numéro de la ligne contenant le nombre maximum d'éléments minimum, le cas échéant.
    4. Étant donné un tableau bidimensionnel. Trouvez la ligne avec la plus grande somme d'éléments et la plus petite. Affichez les chaînes trouvées et les sommes de leurs éléments.

    Pour les étudiants qui comprennent les tableaux bidimensionnels et comment les résoudre :

    Au lieu d'un cours magistral, résoudre des problèmes d'une complexité accrue.

    Exemples de tâches :

    1. Étant donné un tableau bidimensionnel. Convertissez-le selon la règle suivante : transformez la ligne portant le numéro N en la colonne portant le numéro N et la colonne en une ligne.
    2. Dans un tableau X à deux dimensions, tous les nombres sont différents. Dans chaque ligne, l'élément minimum est sélectionné, puis le maximum est sélectionné parmi ces nombres. Imprime le numéro de ligne du tableau X dans lequel se trouve le numéro sélectionné.
    3. Étant donné un tableau bidimensionnel. Trouvez la plus grande des valeurs des éléments de la première et de la dernière ligne.
    4. Écrivez un programme qui affiche un tableau bidimensionnel ligne par ligne à partir du clavier et calcule la somme de ses éléments en colonnes.
    5. Écrivez un programme qui calcule la somme des éléments diagonaux d'une matrice carrée.

    Exemple 3

    Étant donné un tableau entier bidimensionnel de dimensions n x m,trouver le plus petit élément du tableau et le numéro de la ligne dans laquelle il se trouve.

    Diagramme:
    Code du programme :
    Var a : tableau d’entiers ;
    i, j, m, n, min, k : entier ;
    Commencer
    Write('combien de lignes ?'); Lecture(n);
    Write('combien de colonnes ?'); Lire(m);
    Pour i:=1 à n faire
    Pour j:=1 à m faire
    commencer
    écrire('a[',i,',',j,']='); readln(a); (Entrée tableau 2D)
    fin;
    min:=a; (élément minimum)
    k:=1; (numéro de ligne)
    Pour i:=1 à n faire
    Pour j:=1 à m faire
    Si un< min then
    commencer
    min:=a; k:=je; (recherchez le minimum et « mémorisez » le numéro de ligne)
    fin;
    Writeln('le plus petit nombre ',min,' est dans ', k , ' ligne');
    Fin.

    Tâches

    1. . Trouvez la somme et le produit de tous les éléments du tableau.
    2. Étant donné un tableau entier à deux dimensions, dimensions n x m. Trouvez la somme et le produit d'éléments pairs.
    3. Étant donné un tableau entier à deux dimensions, dimensions n x m. Trouvez la somme et le produit d'éléments multiples de 3 et 5.
    4. Étant donné un tableau entier à deux dimensions, dimensions n x m. Trouvez le nombre d'éléments négatifs supérieur à -9.
    5. Étant donné un tableau entier à deux dimensions, dimensions n x m.
    6. Étant donné un tableau entier à deux dimensions, dimensions n x m
    7. Étant donné un tableau entier à deux dimensions, dimensions n x m
    8. Étant donné un tableau entier à deux dimensions, dimensions n x m. Trouvez la moyenne arithmétique de tous les éléments du tableau.
    9. Étant donné un tableau entier à deux dimensions, dimensions n x m. Découvrez quel nombre apparaît en premier sur quelle ligne - positif ou négatif.
    10. Étant donné un tableau entier à deux dimensions, dimensions n x m. Découvrez quelle ligne a une séquence ascendante ou descendante.
    11. Étant donné un tableau entier à deux dimensions, dimensions n x m. Retirerses éléments dont les indices sont des puissances de deux (1, 2, 4, 8, 16, ...).
    12. Étant donné un tableau entier à deux dimensions, dimensions n x m. Trouvez le nombre d’éléments multiples de 7.
    13. Étant donné un tableau entier à deux dimensions, dimensions n x m. Afficher les éléments qui sont des carrés d'un nombre.
    14. Étant donné un tableau entier à deux dimensions, dimensions n x m. Trouvez le nombre d’éléments impairs aux endroits pairs.
    15. Étant donné un tableau entier à deux dimensions, dimensions n x m. Trouvez le maximum et le minimum. Échangez-les.
    16. Étant donné un tableau entier à deux dimensions, dimensions n x m. Remplacez tous les éléments par leurs carrés.
    17. Étant donné un tableau entier à deux dimensions, dimensions n x m. Remplacez tous les éléments par leurs valeurs opposées.
    18. Étant donné un tableau entier à deux dimensions, dimensions n x m. Échangez le premier et le dernier élément.
    19. Étant donné un tableau entier à deux dimensions, dimensions n x m. Formez un nouveau tableau composé d’éléments correspondants opposés.
    20. Étant donné un tableau entier à deux dimensions, dimensions n x m. Affichez les éléments dont le reste lorsqu'il est divisé par m est égal à k.
    21. Les résultats des tests de 10 étudiants sont saisis. Déterminez le nombre de notes insatisfaisantes, satisfaisantes, bonnes et excellentes. Affichez la note moyenne obtenue par les étudiants au test.
    22. Entrez les notes de N élèves dans les matières K. Déterminez et affichez le nombre d’élèves qui n’ont pas reçu un seul « 5 ».
    23. Il y a N étudiants dans le groupe, les étudiants ont reçu quatre points à l'examen. Déterminez le nombre d’élèves qui n’ont pas réussi et la note moyenne du groupe.
    24. Étant donné un tableau entier à deux dimensions, dimensions n x m. Calculez la somme des nombres dont les nombres ordinaux sont des nombres de Fibonacci.
    25. Étant donné un tableau entier à deux dimensions, dimensions n x m. Ajoutez les éléments correspondants.