Tableau statique : déclaration, remplissage, utilisation. Tableaux unidimensionnels Façons d'énumérer les éléments d'un tableau c

Un tableau est une structure de données représentée comme un groupe de cellules du même type, réunies sous un seul nom. Les tableaux sont utilisés pour traiter de grandes quantités de données du même type. Le nom du tableau est ce que sont les pointeurs, je vous le dirai un peu plus tard. Une cellule de données individuelle dans un tableau est appelée un élément de tableau. Les éléments d'un tableau peuvent être des données de n'importe quel type. Les tableaux peuvent avoir une ou plusieurs dimensions. En fonction du nombre de dimensions, les tableaux sont divisés en tableaux à une dimension, tableaux à deux dimensions, tableaux à trois dimensions, et ainsi de suite jusqu'à un tableau à n dimensions. Les tableaux unidimensionnels et bidimensionnels sont le plus souvent utilisés en programmation, nous ne considérerons donc que ces tableaux.

Tableaux unidimensionnels en C++

Un tableau unidimensionnel est un tableau avec un paramètre caractérisant le nombre d'éléments du tableau unidimensionnel. En fait, un tableau unidimensionnel est un tableau qui ne peut avoir qu’une seule ligne et n colonnes. Les colonnes d'un tableau unidimensionnel sont les éléments du tableau. La figure 1 montre la structure d'un tableau entier unidimensionnel un. La taille de ce tableau est de 16 cellules.

Figure 1 - Tableaux en C++

Notez que l'indice maximum d'un tableau unidimensionnel un est 15, mais la taille du tableau est de 16 cellules, car la numérotation des cellules du tableau commence toujours à partir de 0. L'index des cellules est un entier non négatif par lequel vous pouvez accéder à chaque cellule du tableau et y effectuer n'importe quelle action ( cellule).

//syntaxe de déclaration d'un tableau unidimensionnel en C++ : /*type de données*/ /*nom d'un tableau unidimensionnel*/; //exemple de déclaration d'un tableau unidimensionnel illustré à la figure 1 : int a;

où, int est un entier ;

A est le nom d'un tableau unidimensionnel ;
16 — taille d'un tableau unidimensionnel, 16 cellules.

Toujours immédiatement après le nom du tableau, il y a des crochets dans lesquels la taille du tableau unidimensionnel est spécifiée ; c'est ce qui distingue le tableau de toutes les autres variables.

//une autre façon de déclarer des tableaux unidimensionnels int mas, a;

Deux tableaux unidimensionnels mas et a sont déclarés avec respectivement des tailles 10 et 16. De plus, dans cette méthode de déclaration, tous les tableaux auront le même type de données, dans notre cas - int.

// les tableaux peuvent être initialisés lorsqu'ils sont déclarés : int a = ( 5, -12, -12, 9, 10, 0, -9, -12, -1, 23, 65, 64, 11, 43, 39, -15 ); // initialisation d'un tableau unidimensionnel

L'initialisation d'un tableau unidimensionnel s'effectue entre accolades après le signe équivaut à, chaque élément du tableau est séparé du précédent par une virgule.

Int a=(5,-12,-12,9,10,0,-9,-12,-1,23,65,64,11,43,39,-15) ; // initialise le tableau sans déterminer sa taille.

Dans ce cas, le compilateur déterminera lui-même la taille du tableau unidimensionnel. La taille du tableau ne peut être omise que lors de son initialisation ; lors de la déclaration normale d'un tableau, la taille du tableau doit être spécifiée. Développons un programme simple pour traiter un tableau unidimensionnel.

// array.cpp : Définit le point d'entrée de l'application console. #include "stdafx.h" #include << "obrabotka massiva" << endl; int array1 = { 5, -12, -12, 9, 10, 0, -9, -12, -1, 23, 65, 64, 11, 43, 39, -15 }; // объявление и инициализация одномерного массива cout << "indeks" << "\t\t" << "element massiva" << endl; // печать заголовков for (int counter = 0; counter < 16; counter++) //начало цикла { //вывод на экран индекса ячейки массива, а затем содержимого этой ячейки, в нашем случае - это целое число cout << "array1[" << counter << "]" << "\t\t" << array1 << endl; } system("pause"); return 0; }

// code Code :: Blocs

// Code Dev-C++

// array.cpp : Définit le point d'entrée de l'application console. #inclure en utilisant l'espace de noms std ; int main(int argc, char* argv) ( cout<< "obrabotka massiva" << endl; int array1 = { 5, -12, -12, 9, 10, 0, -9, -12, -1, 23, 65, 64, 11, 43, 39, -15 }; // объявление и инициализация одномерного массива cout << "indeks" << "\t\t" << "element massiva" << endl; // печать заголовков for (int counter = 0; counter < 16; counter++) //начало цикла { //вывод на экран индекса ячейки массива, а затем содержимого этой ячейки, в нашем случае - это целое число cout << "array1[" << counter << "]" << "\t\t" << array1 << endl; } return 0; }

DANS lignes 10 à 11 Un tableau entier unidimensionnel nommé array1 a été déclaré et initialisé, dont la taille est de 16 cellules, c'est-à-dire qu'un tel tableau peut stocker 16 nombres. Tout traitement de tableau n'est possible qu'en conjonction avec des boucles. C'est à vous de décider quelle boucle choisir pour traiter le tableau. Mais il est le mieux adapté à cette tâche. Nous utiliserons la variable counter counter pour accéder aux éléments du tableau unidimensionnel array1. La condition de continuation de la boucle for contient un signe d'inégalité stricte, puisqu'il n'y a pas de seizième index dans le tableau unidimensionnel array1. Et comme la numérotation des cellules commence à zéro, il y a 16 éléments dans le tableau. Dans le corps de la boucle for, l'opérateur cout imprime les éléments d'un tableau unidimensionnel (voir Figure 2).

Obrabotka massiva indexe l'élément massiva array1 5 array1 -12 array1 -12 array1 9 array1 10 array1 0 array1 -9 array1 -12 array1 -1 array1 23 array1 65 array1 64 array1 11 array1 43 array1 39 array1 -15 Pour continuer, appuyez sur n'importe quelle touche. . .

Figure 2 - Tableaux en C++

Développons un autre programme pour traiter un tableau unidimensionnel en C++. Le programme doit lire séquentiellement dix nombres saisis à partir du clavier. Tous les nombres saisis sont résumés et le résultat est affiché à l'écran.

// array_sum.cpp : Définit le point d'entrée de l'application console. #include "stdafx.h" #include << "Enter elementi massiva: " << endl; int sum = 0; for (int counter = 0; counter < 10; counter++) // цикл для считывания чисел cin >> << "array1 = {"; for (int counter = 0; counter < 10; counter++) // цикл для вывода элементов массива cout << array1 << " "; // выводим элементы массива на стандартное устройство вывода for (int counter = 0; counter < 10; counter++) // цикл для суммирования чисел массива sum += array1; // суммируем элементы массива cout << "}\nsum = " << sum << endl; system("pause"); return 0; }

// code Code :: Blocs

// Code Dev-C++

// array_sum.cpp : Définit le point d'entrée de l'application console. #inclure en utilisant l'espace de noms std ; int main(int argc, char* argv) ( int array1; // déclare un tableau d'entiers cout<< "Enter elementi massiva: " << endl; int sum = 0; for (int counter = 0; counter < 10; counter++) // цикл для считывания чисел cin >> tableau1 ; // lit les nombres saisis à partir du clavier<< "array1 = {"; for (int counter = 0; counter < 10; counter++) // цикл для вывода элементов массива cout << array1 << " "; // выводим элементы массива на стандартное устройство вывода for (int counter = 0; counter < 10; counter++) // цикл для суммирования чисел массива sum += array1; // суммируем элементы массива cout << "}\nsum = " << sum << endl; return 0; }

Avant de traiter un tableau, il doit être déclaré et la taille d'un tableau unidimensionnel est de 10, car cela est stipulé par la condition de la tâche. Dans la variable somme, nous accumulerons la somme des éléments d’un tableau unidimensionnel. La première boucle for remplit le tableau unidimensionnel déclaré avec des nombres saisis au clavier, lignes 12 à 13. La variable counter est utilisée pour accéder séquentiellement aux éléments du tableau unidimensionnel array1 , à partir de l'index 0 jusqu'au 9 inclus. La deuxième boucle for affiche les éléments du tableau, lignes 15 à 16. La troisième boucle for lit séquentiellement les éléments d'un tableau unidimensionnel et les additionne, la somme est accumulée dans la variable somme. lignes 17 à 18. Le résultat du programme est présenté dans la figure 3.

Entrez elementi massiva : 0 1 2 3 4 5 6 7 8 9 array1 = (0 1 2 3 4 5 6 7 8 9 ) sum = 45 Pour continuer, appuyez sur n'importe quelle touche. . .

Figure 3 - Tableaux en C++

Tout d'abord, les 10 nombres ont été saisis séquentiellement, après quoi un tableau unidimensionnel a été affiché et la somme des nombres du tableau a été imprimée.

Tableaux bidimensionnels en C++

Jusqu'à présent, nous avons considéré des tableaux unidimensionnels, auxquels on ne peut pas toujours se limiter. Disons que vous devez traiter certaines données d'une table. Un tableau a deux caractéristiques : le nombre de lignes et le nombre de colonnes. Également dans un tableau à deux dimensions, en plus du nombre d'éléments du tableau, il existe des caractéristiques telles que le nombre de lignes et le nombre de colonnes d'un tableau à deux dimensions. Autrement dit, visuellement, un tableau à deux dimensions est un tableau ordinaire, avec des lignes et des colonnes. En fait, un tableau bidimensionnel est un tableau unidimensionnel de tableaux unidimensionnels. La structure d'un tableau bidimensionnel, nommé a, de taille m par n est présentée ci-dessous (voir Figure 4).

Figure 4 - Tableaux en C++

où m est le nombre de lignes d’un tableau à deux dimensions ;
n est le nombre de colonnes d'un tableau à deux dimensions ;
m * n — nombre d'éléments du tableau.

// syntaxe de déclaration d'un tableau à deux dimensions /*type de données*/ /*nom du tableau*/;

En déclarant un tableau à deux dimensions, ainsi qu'en déclarant un tableau à une dimension, vous devez tout d'abord spécifier :

  • Type de données;
  • nom du tableau.

Après cela, les premiers crochets indiquent le nombre de lignes du tableau à deux dimensions et les seconds crochets indiquent le nombre de colonnes du tableau à deux dimensions. Un tableau bidimensionnel se distingue visuellement d’un tableau unidimensionnel par une deuxième paire de crochets. Regardons un exemple de déclaration d'un tableau à deux dimensions. Disons que nous devons déclarer un tableau à deux dimensions avec un nombre d'éléments égal à 15. Dans ce cas, un tableau à deux dimensions peut avoir trois lignes et cinq colonnes ou cinq lignes et trois colonnes.

// exemple de déclaration d'un tableau à deux dimensions : int a;

  • a est le nom du tableau d'entiers
  • le nombre entre les premiers crochets indique le nombre de lignes du tableau bidimensionnel, dans ce cas il y en a 5 ;
  • le nombre entre les deuxièmes crochets indique le nombre de colonnes du tableau bidimensionnel, dans ce cas il y en a 3.

// initialisation d'un tableau à deux dimensions : int a = ( (4, 7, 8), (9, 66, -1), (5, -5, 0), (3, -3, 30), ( 1, 1, 1) );

Ce tableau comporte 5 lignes et 3 colonnes. après le signe d'attribution, des accolades générales sont placées, à l'intérieur desquelles sont placées autant de paires d'accolades qu'il devrait y avoir de lignes dans un tableau bidimensionnel, et ces parenthèses sont séparées par des virgules. Dans chaque paire d'accolades, écrivez les éléments d'un tableau à deux dimensions séparés par des virgules. Dans toutes les accolades, le nombre d’éléments doit être le même. Puisqu’il y a cinq lignes dans le tableau, il y a également cinq paires de crochets internes. Trois éléments sont écrits entre parenthèses intérieures, puisque le nombre de colonnes est de trois. Graphiquement, notre tableau ressemblera à un tableau à deux dimensions (voir Figure 5).

Figure 5 - Tableaux en C++

Dans chaque cellule d'un tableau à deux dimensions un la valeur est affichée, l'adresse de cette cellule est affichée dans le coin inférieur droit. L'adresse de cellule d'un tableau à deux dimensions est le nom du tableau, le numéro de ligne et le numéro de colonne.

Développons un programme simple pour traiter un tableau bidimensionnel, appelé « Labyrinthe ». Le labyrinthe doit être construit sur la base d’un réseau bidimensionnel. Nous choisirons la taille du labyrinthe à notre discrétion.

// array2.cpp : Définit le point d'entrée de l'application console. #include "stdafx.h" #include < 33; i++) //переключение по строкам { for (int j = 0; j < 20; j++)// переключение по столбцам if (mas[i][j] == 1) { // вывести два раза символ (номер которого 176 в таблице аски) в консоль cout << static_cast(176); cout<< static_cast(176); ) sinon cout<< " "; // вывести два пробела cout << endl; } system("pause"); return 0; }

// code Code :: Blocs

// Code Dev-C++

// array2.cpp : Définit le point d'entrée de l'application console. #inclure en utilisant l'espace de noms std ; int main(int argc, char* argv) ( // 1-conditionnellement "murs du labyrinthe" // 2-"chemin correct, sortie du labyrinthe" // 0-"faux chemin" int mas = ( (1, 2,1 ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,), // initialisation d'un tableau bidimensionnel ( 1,2,1,0 ,0,1,0,1,2,2,2,1,1,1,1,0,0,0,0,1,), (1,2,1,1 ,0,1,0, 1,2,1,2,2,2,2,1,0,1,1,0,1,), (1,2,2,2,2,2,2, 1,2,1,1 ,1,1,2,1,0,0,1,0,1,), (1,1,1,1,1,1,2,1,2,1,0 ,0,1,2, 1,1,0,1,0,1,), (1,0,0,1,0,0,2,2,2,1,1,0,0,2, 0,0,0,1 ,0,1,), (1,0,1,1,0,1,1,1,1,1,0,0,1,2,1,1,1,1 ,0,1,), (1,0,0,0,0,0,0,0,0,1,1,1,1,2,1,0,0,0,0,1,), (1,1,1, 1,1,1,0,1,1,1,2,2,2,2,1,0,1,1,1,1,), (1,1,0, 0,0,1,0 ,0,1,1,2,1,1,1,1,0,0,0,0,1,), (1,0,0,1,0,0,0 ,0,0,1, 2,2,2,2,1,1,1,1,0,1,), (1,1,1,1,1,1,1,1,1,1, 1,1,1,2 ,1,0,0,0,0,1,), (1,2,2,2,2,2,2,2,2,2,2,2,2,2 ,1,0,1, 1,1,1,), (1,2,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0, 0,0,1,) , (1,2,1,0,0,0,1,2,2,2,1,0,0,0,0,0,1,1,0,1,) , (1,2,1 ,1,1,1,1,2,1,2,1,1,1,0,1,0,0,0,0,1,), (1,2,1 ,2,2,2, 1,2,1,2,2,2,1,1,1,1,1,1,1,1,), (1,2,1,2,1,2, 1,2,1,0 ,1,2,2,2,2,2,2,2,2,1,), (1,2,1,2,1,2,1,2,1,0 ,1,1,1, 1,1,1,1,1,2,1,), (1,2,1,2,1,2,1,2,1,0,0,0,0, 0,0,0,0 ,0,2,1,), (1,2,1,2,1,2,2,2,1,0,1,1,1,1,1,1,0 ,1,2,1, ), (1,2,1,2,1,1,1,1,1,0,0,0,1,0,1,0,0,1,2,1, ), (1,2, 1,2,2,1,0,0,1,1,1,0,0,0,1,0,1,1,2,1,), (1,2, 1,1,2,1 ,1,0,0,0,0,0,1,0,1,0,0,1,2,1,), (1,2,1,1,2,1 ,0,0,1, 1,1,1,1,1,1,1,1,1,2,1,), (1,2,1,1,2,1,1,0,1, 2,2,2,2 ,2,2,2,2,2,2,1,), (1,2,1,1,2,1,0,0,1,2,1,1,1 ,1,1,1, 1,1,1,1,), (1,2,1,1,2,1,0,1,1,2,1,1,1,1,1,1, 1,1,2,2,), (1,2,1,1,2,1,0,0,1,2,1,1,2,2,2,2,2,2,2,1 ,), (1,2 ,1,1,2,1,0,1,1,2,1,1,2,1,1,1,1,1,1,1,), (1,2 ,1,1,2, 1,0,0,1,2,1,1,2,1,0,0,0,1,0,1,), (1,2,2,2,2, 1,0,1,1 ,2,2,2,2,0,0,1,0,0,0,1,), (1,1,1,1,1,1,1,1,1 ,1,1,1, 1,1,1,1,1,1,1,1,) ); // deux boucles - interne et externe, accédant à chaque élément du tableau pour (int i = 0; i< 33; i++) //переключение по строкам { for (int j = 0; j < 20; j++)// переключение по столбцам if (mas[i][j] == 1) { // вывести два раза символ (номер которого 176 в таблице аски) в консоль cout << static_cast(176); cout<< static_cast(176); ) sinon cout<< " "; // вывести два пробела cout << endl; } return 0; }

Les chemins corrects et faux pourraient être désignés par le même nombre, par exemple zéro, mais pour plus de clarté, le chemin correct est désigné par le chiffre 2. Le tableau a été initialisé manuellement, uniquement pour simplifier le programme. Étant donné que le programme traite un tableau à deux dimensions, deux boucles sont nécessaires pour basculer entre les éléments du tableau à deux dimensions. La première boucle for bascule entre les lignes d’un tableau à deux dimensions. Puisqu'il y a 33 lignes dans un tableau à deux dimensions, la variable compteur i est incrémentée de 0 à 33, ligne 46. À l’intérieur de la première boucle se trouve une boucle for qui parcourt les éléments de ligne d’un tableau à deux dimensions. Dans le corps de la deuxième boucle for, une opération de conversion de type de données unaire est effectuée à l'intérieur - static_cast<>() , qui imprime le numéro de caractère 176. L'opération de conversion du type de données est dupliquée pour augmenter la largeur du labyrinthe. Le résultat du programme (voir Figure 6).

Figure 6 - Tableaux en C++

Tableaux

Tableau est une collection de variables du même type avec un nom commun pour s'y référer. En C#, les tableaux peuvent être unidimensionnels ou multidimensionnels. Les tableaux servent à diverses fins car ils fournissent un moyen pratique de regrouper des variables liées.

Vous pouvez utiliser des tableaux en C# de la même manière que dans d’autres langages de programmation. Ils ont cependant une particularité : ils sont implémentés sous forme d’objets.

L'utilisation d'un tableau dans un programme nécessite une procédure en deux étapes car C# implémente les tableaux en tant qu'objets. Tout d’abord, vous devez déclarer une variable pouvant accéder au tableau. Et deuxièmement, vous devez créer une instance du tableau à l’aide de l’opérateur new.

Utilisation du système ; en utilisant System.Collections.Generic ; en utilisant System.Linq ; en utilisant System.Text ; namespace ConsoleApplication1 ( class Program ( static void Main(string args) ( // Déclarer le tableau int myArr = new int; // Initialiser manuellement chaque élément du tableau myArr = 100; myArr = 23; myArr = 25; myArr = 31; monArr = 1 ; foreach (int i dans monArr) Console.WriteLine(i);

Gardez à l'esprit que si un tableau est simplement déclaré mais pas explicitement initialisé, chaque élément sera défini sur la valeur par défaut du type de données correspondant (par exemple, les éléments d'un tableau de type bool seront définis sur false et les éléments d'un tableau de type int sera défini sur 0).

Initialisation d'un tableau

En plus de remplir le tableau élément par élément (comme indiqué dans l'exemple précédent), vous pouvez également le remplir à l'aide d'une syntaxe d'initialisation de tableau spéciale. Pour ce faire, vous devez lister les éléments inclus dans le tableau entre accolades ( ). Cette syntaxe est utile lors de la création d'un tableau de taille connue et devant définir rapidement ses valeurs initiales :

// Syntaxe d'initialisation d'un tableau en utilisant // le mot clé new int myArr = new int (10,20,30,40,50); // Syntaxe d'initialisation d'un tableau sans utiliser // de mot clé new string info = ( "Last Name", "First Name", "Patronymic" ); // Utilisez le nouveau mot-clé et la taille souhaitée char symbol = new char ( "X","Y","Z","M" );

Notez que lorsque vous utilisez la syntaxe des accolades, vous n'avez pas besoin de spécifier la taille du tableau (comme vu lors de la création de la variable myArr) car la taille est automatiquement calculée en fonction du nombre d'éléments à l'intérieur des accolades. Utilisez également le mot-clé nouveau facultatif (comme lors de la création d'un tableau d'informations).

Le mot-clé var vous permet de définir une variable afin que son type sous-jacent soit déduit par le compilateur. Vous pouvez également définir des tableaux locaux implicitement typés de la même manière. En utilisant cette approche, vous pouvez définir une nouvelle variable de tableau sans spécifier le type d'éléments contenus dans le tableau. Regardons un exemple :

Utilisation du système ; en utilisant System.Collections.Generic ; en utilisant System.Linq ; en utilisant System.Text ; espace de noms ConsoleApplication1 (class Program ( static void Main(string args) ( var arr1 = new ( 1, 2, 3 ); Console.WriteLine("Le type de tableau arr1 est (0)",arr1.GetType()); var arr2 = new ( "Un", "Deux", "Trois" ); Console.WriteLine("Type de tableau arr2 - (0)",arr2.GetType());

Bien entendu, tout comme lors de la création d'un tableau à l'aide d'une syntaxe C# explicite, les éléments spécifiés dans la liste d'initialisation du tableau doivent être du même type sous-jacent (c'est-à-dire qu'ils doivent tous être de type int, string ou MyCar).

Définir un tableau d'objets

Dans la plupart des cas, lors de la définition d'un tableau, le type de l'élément contenu dans le tableau est spécifié explicitement. Bien que cela semble assez simple à première vue, il existe une caractéristique importante. Au cœur de chaque type du système de types .NET (y compris les types de données fondamentaux) se trouve en fin de compte une classe de base, System.Object. Le résultat est que si vous définissez un tableau d'objets, les éléments qu'il contient peuvent être n'importe quoi :

Utilisation du système ; en utilisant System.Collections.Generic ; en utilisant System.Linq ; en utilisant System.Text ; espace de noms ConsoleApplication1 ( class Program ( static void Main(string args) ( // Déclarer et initialiser un tableau d'objets object arrByObject = ( true, 10, "Hello", 13.7m ); // Imprimer le type de chaque membre du tableau dans le console foreach (objectez-moi dans arrByObject) Console.WriteLine("Type (0) - (1)",me,me.GetType());

Disons que nous devons travailler avec une grande quantité de données du même type. Par exemple, nous disposons d’un millier de mesures des coordonnées d’un pendule avec un certain pas de temps. Créer 1000 variables pour stocker toutes les valeurs est très... fastidieux. Au lieu de cela, de nombreuses données du même type peuvent être combinées sous un seul nom et chaque élément spécifique est accessible par son numéro de série.
Un tableau en C est défini comme suit
<тип> <имя массива>[<размер>];
Par exemple,
int un;
Nous recevrons un tableau nommé un, qui contient cent éléments de type int. Comme pour les variables, le tableau contient des déchets.
Pour accéder au premier élément, écrivez son numéro (index) entre crochets. Par exemple

#inclure #inclure void main() ( int a; a = 10; a = 333; a = 234; printf("%d %d %d", a, a, a); getch(); )

Le premier élément a le numéro d’index 0. Il est important de comprendre pourquoi. Dans ce qui suit, nous représenterons la mémoire de l’ordinateur sous la forme d’une bande. Le nom du tableau est un pointeur vers l’adresse mémoire où se trouvent les éléments du tableau.

Riz. 1 Le tableau stocke l'adresse du premier élément. L'index de l'élément i est un décalage de i*sizeof(type) octets depuis le début

L'index du tableau indique combien d'octets doivent être décalés depuis le début du tableau pour accéder à l'élément souhaité. Par exemple, si le tableau UN a du type int, alors A signifie que nous avons déplacé 10*sizeof(int) octets par rapport au début. Le premier élément est au tout début et a un décalage de 0*sizeof(int) .
En C, un tableau ne stocke pas sa taille et ne vérifie pas l’exactitude de l’index du tableau. Cela signifie que vous pouvez sortir du tableau et accéder à une mémoire plus éloignée que le dernier élément du tableau (ou plus proche).

Initialisation initiale du tableau.

Écrivons un programme simple. Créons un tableau puis trouvons son élément maximum.

#inclure #inclure void main() ( int a = (1, 2, 5, 3, 9, 6, 7, 7, 2, 4); non signé i; int max; max = a; pour (i = 1; i<10; i++) { if (a[i] >

Regardons un exemple. Nous créons d’abord le tableau et l’initialisons lors de la création. Après cela, nous attribuons à l’élément maximum trouvé la valeur du premier élément du tableau.

Max = un ;

Ensuite, nous parcourons le tableau. Puisque nous avons déjà regardé le premier élément (il a l’indice 1), cela ne sert à rien de le revoir.
Même exemple, seulement maintenant l'utilisateur saisit des valeurs

#inclure #inclure void main() ( int a; unsigned i; int max; printf("Entrez 10 nombres\n"); for (i = 0; i<10; i++) { printf("%d. ", i); scanf("%d", &a[i]); } max = a; for (i = 1; i<10; i++) { if (a[i] >max) ( max = a[i]; ) ) printf("l'élément maximum est %d", max); getch(); )

Si lors de l'initialisation, moins de valeurs sont spécifiées que la taille du tableau, les éléments restants sont remplis de zéros.

#inclure #inclure void main() ( int a = (1,2,3); non signé i; pour (i = 0; i<10; i++) { printf("%d ", a[i]); } getch(); }

Si vous devez remplir tout le tableau avec des zéros, écrivez

Int a = (0);

Vous n'êtes pas obligé de spécifier explicitement la taille du tableau, par exemple

Int a = (1, 2, 3);

le tableau aura la taille 3

Taille du tableau

Un tableau en C doit avoir une taille constante. Cela signifie qu'il est impossible, par exemple, de demander une taille à l'utilisateur puis de définir cette taille sur un tableau.

Printf("Entrez la longueur du tableau "); scanf("%d", &longueur); ( flotter x; )

La création de tableaux dynamiques sera abordée plus en détail lorsque vous travaillerez avec des pointeurs et de la mémoire.
Dans certains cas, vous pouvez connaître la taille du tableau à l'aide de la fonction taille de.

#inclure #inclure void main() ( int A; //sizeof renvoie la taille du tableau entier en octets //Pour déterminer le nombre d'éléments, //divisez la taille du tableau par la taille de son élément int size = sizeof(A) / sizeof(int); printf("Taille du tableau égale à %d", getch( );

Mais il est peu probable que cela soit utile. Lors du passage d'un tableau comme argument à une fonction, un pointeur sera passé, donc la taille du tableau ne sera pas connue.
Les tableaux statiques sont utiles lorsque le nombre d’éléments est connu à l’avance. Ils offrent un accès rapide mais non sécurisé aux éléments.

Débordement de tableau

Espérons que vous ayez ce code

Int A ; int je; pour (i=0; je<=10; i++) { A[i] = 1; }

Voici une boucle pour spécifié avec une erreur. Dans certaines anciennes versions de compilateurs, ce code effectuait une boucle. Le fait est que la variable je a été localisé lors de la compilation immédiatement après le tableau UN. Lorsque le tableau dépassait les limites, le compteur était mis à 1.
Les tableaux sont dangereux, car un travail incorrect avec l'index peut conduire à l'accès à une partie arbitraire de la mémoire (en théorie. Les compilateurs modernes eux-mêmes veillent à ce que vous ne fouilliez pas dans la mémoire de quelqu'un d'autre).
Si vous travaillez avec des tableaux, vous devez vous assurer que le compteur ne dépasse pas la taille du tableau et n'est pas négatif. Pour cela, au minimum,

  • 1. Utilisez le type size_t pour l'indexation. Cela vous protégera des valeurs négatives et sera toujours suffisant pour un tableau de toute taille.
  • 2. N'oubliez pas que le tableau commence à zéro.
  • 3. Le dernier élément du tableau a un index (la taille du tableau est 1)
Il n'existe aucun moyen à part entière de vérifier si nous avons dépassé ou non les limites du tableau. Par conséquent, soit nous connaissons exactement sa taille, soit nous la stockons dans une variable et la lisons si nécessaire.

Exemples

Voici maintenant quelques exemples typiques de travail avec des tableaux
1. Inversez le tableau.

#inclure #inclure // Ceci est une macro. SIZE dans le code sera remplacé par 10u #define SIZE 10u void main() ( int A = (0, 1, 2, 3, 4, 5, 6, 7, 8, 9); unsigned i, j; // compteurs moitié non signée; //milieu du tableau tmp non signé; //variable temporaire pour échanger les valeurs moitié = TAILLE / 2; //Un compteur va de gauche à droite, l'autre de droite à gauche pour (i = 0, j = TAILLE - 1 ;< half; i++, j--) { tmp = A[i]; A[i] = A[j]; A[j] = tmp; } for (i = 0; i < SIZE; i++) { printf("%d ", A[i]); } getch(); }

Voici un design qui ne vous est pas familier

#define TAILLE 10u

macro. Tout au long du code, le préprocesseur remplacera automatiquement toutes les occurrences de SIZE par 10u.
2. Suppression d'un élément sélectionné par l'utilisateur.

#inclure #inclure #define SIZE 10u void main() ( int A = (0, 1, 2, 3, 4, 5, 6, 7, 8, 9); unsigned i; //counter int index; //index saisi par l'utilisateur / /Tableau de sortie pour (i = 0; i< SIZE; i++) { printf("(%d)=%d ", i, A[i]); } //Просим пользователя ввести валидный индекс while (1) { printf("\nEnter index of element to delete "); scanf("%d", &index); if (index >0 && indice< SIZE) { break; } } //Копируем следующий элемент массива на место удаляемого //и так до конца for (i = index; i < SIZE-1; i++) { A[i] = A; } //Выводим результат for (i = 0; i < SIZE-1; i++) { printf("(%d)=%d ", i, A[i]); } getch(); }

Dans ce cas, bien entendu, l’élément n’est pas supprimé. Le tableau reste de la même taille qu'auparavant. Nous écrasons simplement l'élément en cours de suppression par le suivant et générons des éléments SIZE-1.
3. L'utilisateur entre des valeurs dans le tableau. Après cela, imprimez toutes les différentes valeurs qu'il a saisies.
Laissez l'utilisateur saisir un nombre fini d'éléments, disons 10. On sait alors à l'avance qu'il n'y aura pas plus de 10 valeurs différentes au total. Chaque fois que l'utilisateur entrera un nombre, nous parcourrons le tableau et vérifierons. si un tel numéro a été saisi.

#inclure #inclure #define SIZE 10u void main() ( int A = (0); unsigned i, j; int counter = 1; //combien de nombres différents sont saisis. Au moins un. int input; int wasntFound; //indique que le le numéro entré n'a pas été trouvé //Entrez le premier numéro. Il n'a pas encore été trouvé printf("0.");< SIZE; i++) { printf("%d. ", i); scanf("%d", &input); wasntFound = 1; //Проверяем, встречалось ли такое число. Если да, //то выставляем флаг и выходим из цикла for (j = 0; j <= counter; j++) { if (input == A[j]) { wasntFound = 0; break; } } //Если флаг был поднят, то заносим число в массив if (wasntFound) { A = input; counter++; } } for (i = 0; i < counter; i++) { printf("%d ", A[i]); } getch(); }

4. L'utilisateur saisit un nombre - le nombre de mesures (de 2 à 10). Après cela, entre toutes les mesures. Le programme affiche la valeur moyenne, la variance et l'erreur.

#inclure #inclure #inclure #define SIZE 20u void main() ( //Les coefficients des étudiants commencent à partir de deux dimensions const float student = (12.7, 4.3, 3.2, 2.8, 2.6, 2.4, 2.4, 2.3, 2.3); float A; non signé i; limite non signée; float sum = .0f; float disp; float relError; do (printf("Entrer le nombre de mesures "); scanf("%u", &limit); if (limite > 1 && limite< 11) { break; } } while(1); for (i = 0; i < limit; i++) { printf("#%d: ", i); scanf("%f", &A[i]); sum += A[i]; } mean = sum / (float)limit; sum = .0f; for (i = 0; i < limit; i++) { tmp = A[i] - mean; sum += tmp * tmp; } disp = sum / (float)limit; absError = student * sqrt(sum / (float)(limit - 1)); relError = absError / mean * 100; printf("Mean = %.6f\n", mean); printf("Dispertion = %.6f\n", disp); printf("Abs. Error = %.6f\n", absError); printf("Rel. Error = %.4f%", relError); getch(); }

5. Une sorte de tableau à bulles

#inclure #inclure #define SIZE 10 #define false 0 #define true !false void main() ( float a = (1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 0.0 f); float tmp; unsigned i, j; char flag; //Tableau de sortie pour (i = 0; i)< SIZE; i++) { printf("%.3f ", a[i]); } printf("\n"); //Пока массив не отсортирован do { flag = false; //Проходим по массиву. Если следующий элемент больше предыдущего, то //меняем их местами и по новой проверяем массив for (i = 1; i < SIZE; i++) { if (a[i] >a) ( tmp = a[i]; a[i] = a; a = tmp; flag = true; ) ) ) while(flag == true); // Affiche le tableau trié pour (i = 0; i< SIZE; i++) { printf("%.3f ", a[i]); } getch(); }

6. Mélangez le tableau. Utilisons l'algorithme pour cela

Que sont les tableaux en C ?

Comment déclarer des tableaux en C ?

Comment initialiser des tableaux en C ?

Des tableaux en C pour les nuls.

Tableaux en C

Un tableau en C est une collection d’éléments du même type accessibles par index. Les éléments des tableaux en C se situent les uns après les autres dans la mémoire de l'ordinateur.

Un exemple simple de création et de remplissage d'un tableau en C :

// @author Subbotin B.P..h> void main(void) ( int nArr; nArr = 1; nArr = 2; nArr = 3; printf("\n\tArray\n\n"); printf("nArr\t =\t%d\n", nArr); printf("nArr\t=\t%d\n", nArr); printf("nArr\t=\t%d\n", nArr); renvoie 0 ; )

On a:

Dans l'exemple, nous déclarons un tableau contenant des éléments de type int :

ici, le nom du tableau est nArr, le nombre d'éléments du tableau est de trois, le type d'élément du tableau est int.

Un tableau est une collection d'éléments. Chaque élément du tableau peut être référencé par son numéro. Le numéro est généralement appelé un index. Les éléments du tableau sont numérotés à partir de zéro. Attribuons une valeur au premier élément du tableau, et le premier élément a l'indice zéro :

Attribuons une valeur au deuxième élément du tableau, et le deuxième élément a l'indice un :

Attribuons une valeur au troisième élément du tableau, et le troisième élément a l'indice deux :

Lorsque nous affichons des éléments d’un tableau à l’écran, nous obtenons leurs valeurs. Comme ça:

printf("nArr\t=\t%d\n", nArr);

Pour obtenir un élément d'un tableau, vous devez spécifier le nom du tableau et l'index de l'élément :

Il s'agit du premier élément du tableau, car le premier élément a l'indice zéro.

Attribuons la valeur du troisième élément du tableau à la variable int a :

l'indice du troisième élément du tableau est deux, puisque les indices sont comptés à partir de zéro.

Maintenant la règle générale pour déclarer des tableaux en C : lors de la déclaration d'un tableau, vous devez indiquer son nom, le type d'éléments et le nombre d'éléments. Le nombre d'éléments est un nombre naturel, c'est-à-dire l'ensemble est positif. Zéro ne peut pas être le nombre d’éléments. Vous ne pouvez pas spécifier un nombre variable d'éléments de tableau. Voici des exemples de déclarations de tableaux en C :

int nArr; // Un tableau a été déclaré pour contenir cent entiers ;
flotter fArr; // Un tableau conçu pour stocker 5 nombres flottants a été déclaré ;
char cArr; // Un tableau a été déclaré pour stocker deux caractères ;

Ce serait une erreur de déclarer un tableau avec un nombre variable d'éléments :

Int varElem;
int nArr; // Erreur! Le nombre d'éléments ne peut pas être défini sur une variable ;

Mais vous pouvez fixer le nombre d'éléments avec une valeur constante : soit un entier positif direct 1, 2, 3... soit une constante :

Const int arrayLength = 3;
int nArr;

Lorsque vous déclarez un tableau en C, vous pouvez immédiatement l'initialiser :

int nMassiv = (1, 2, 3);

Vous pouvez omettre le nombre d'éléments du tableau entre crochets si tous les éléments du tableau sont initialisés :

int nMassiv = (1, 2, 3);

le nombre d'éléments sera déterminé automatiquement dans ce cas.

Vous ne pouvez définir qu'une partie des éléments d'un tableau lors de sa déclaration :

int nMassiv = (1, 2);

dans cet exemple, les deux premiers éléments du tableau sont initialisés, mais le troisième n'est pas défini.

Exemple de tableau de caractères :

char cArr = ("S", "B", "P");

Lors de la déclaration d'un tableau, vous ne pouvez pas spécifier le nombre d'éléments d'une variable. Mais vous pouvez utiliser des variables pour accéder aux éléments du tableau :

Int ind = 0 ;
char cr = cArr;

Ceci est utilisé lorsque vous travaillez avec des boucles. Exemple:

// @author Subbotin B.P..h> void main(void) ( const int arrayLength = 3; int nArr; for(int inn = 0; inn< 3; inn++) { nArr = inn + 1; } printf("\n\tArray\n\n"); for(int inn = 0; inn < 3; inn++) { printf("nArr[%d]\t=\t%d\n", inn, nArr); } return 0; }

Dans l'exemple, dans la première boucle, nous remplissons le tableau avec des éléments de type int, et dans la deuxième boucle, nous affichons ces éléments à l'écran.

mob_info