Puisqu'il est étiqueté C++. Je voudrais suggérer l'utilisation de std::vector. C'est un conteneur dynamique qui est très utile. Vous pouvez le redimensionner, effacer le remplir facilement. Une fois que vous aurez compris l'utilisation de base, ils deviendront très utiles dans votre futur développement C++. J'ai modifié votre code légèrement:
#include <iostream>
#include <vector>
using namespace std;
void read(vector<vector<int> >& arr,int n)
{
int i,j;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
cin>>arr[i][j];
}
int main()
{
int N;
cin>>N;
vector<vector<int> > arr(N, vector<int>(N));
read(arr, N);
}
Ils ont de nombreux avantages sur les tableaux primitifs comme ils peuvent être initialisés facilement, supposons que vous voulez initialiser tous à zéro:
vector<vector<int> > arr(N, vector<int>(N, 0));
Vous n'avez pas s'inquiéter de l'ajout de la taille du tableau à chaque passage dans les fonctions. vecteur peut facilement gérer ceci:
for(i = 0; i < arr.size(); i++) {
for(j = 0; j < arr[i].size(); j++) {
// do stuff
}
}
De plus, avec les méthodes ajoutées de la bibliothèque de modèles standard comme fill
, swap
. De nombreuses opérations peuvent être manipulées facilement.
'int a [n] [n];' est VLA et non C++ standard. – Jarod42
Vous devez changer les paramètres. Si vous écrivez 'int n' avant, vous pouvez utiliser la valeur dans la taille du tableau:' void read (int n, int a [] [n]) ' – mch
Vous avez des déclarations contradictoires de' a [] [] ' –