Tableau multidimension

Résolu
Lorine -  
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
je dois cree un tableau dont je ne connais pas le taille au depard
	#include <iostream>

using namespace std;

void main(void)
{
	int i;
	cout << "Nombre d'inconnue : ";
	cin >> i;
	int Tableau [i][i];
	int IncrL, IncrC;
	int Zone =1;
	for (IncrL = 0 ; IncrL<=i ;IncrL++)
	{
		for (IncrC = 0 ; IncrC<=i ;IncrC++)
		{
			Tableau[IncrL][IncrC]= Zone;
			Zone++;
			cout << "Ligne " << IncrL << " " << Tableau[IncrL][IncrC];
		}
		cout << '\n';
		IncrL++;
		Zone++;
	}
       system("pause");

}


comme montre si-dessus, c'est l'utilisateur qui donne la taille du tableau et je cree ainsi le tableau.
Seulement cette annotation ne fonction pas.
Que dois-je changer pour que le tout fonctionne
A voir également:

2 réponses

fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Salut,
Je comprends pas ce que tu veux faire.
Tu veux initialiser le tableau comment ?
Sinon, dans ta boucle for, for (IncrL = 0 ; IncrL<i ;IncrL++) (Pas d'égal, il faut faire un inférieur strict).
Dis ce que tu comptes faire exactement, on pourra mieux t'aider. ;)
Cdlt
0
Lorine
 
c'est le debut d'un programme qui va gerer des matrices.
Mais actuellement j'aimerais que l'utilisateur encode la "taille" du tableau (4*4 par exemple) je prends ce chiffre que je ne connais pas, je creer un tableau de cette dimension ensuite pour chaque case du tableau je lui donne un chiffre qu'il doit ensuite afficher.
Pour 4 j'aurais
la ligne 1 1 2 3 4
la ligne 2 5 6 7 8
la ligne 3 9 10 11 12
la ligne 4 13 14 15 16

voila
0
Droopy_ Messages postés 248 Date d'inscription   Statut Membre Dernière intervention   25
 
Si tu ne connais pas la taille de ton tableau, tu ne peux pas faire comme ça.
Il faut déclarer un pointeur de pointeur (2 dimensions):
int **Tableau;

Ensuite, il faut déclarer le tableau des lignes :
Tableau = (int**) malloc(sizeof(int*) * i);

Puis initialiser le tableau des lignes :
for (IncrL=0;IncrL<i;IncrL++)
  Tableau[IncrL] = (int*) malloc(sizeof(int) * i);

Ensuite, tu peux initialiser ton tableau comme ça :
zone=1;
for (IncrL=0; IncrL<i; IncrL++)
  for (IncrC=0; IncrC<i; IncrC++)
    Tableau[IncrL][IncrC] = zone++;
0
Lorine
 
merci avec ceci ca fonction sauf aue je l'ai code ainsi car je le fait en c++
include <iostream>

using namespace std;

void main(void)
{
 int i;
 int n;
 cout << "Nombre d'inconnue : ";
 cin >> n;

 double **Tableau;
 
 int Nligne;
 int Ncolone;
 int Zone = 1;
 Tableau = new double *[n];
 
 for (i=0 ; i<n ; i++)
  Tableau[i]=new double[n];

 Zone = 1;
 for (Nligne=0 ; Nligne<i ; Nligne++)
 {
  for (Ncolone=0 ; Ncolone<i ; Ncolone++)
  {
   Tableau[Nligne][Ncolone] = Zone++;
   cout << Tableau[Nligne][Ncolone] << " ";
  }
  cout << '\n';
 }
 system("pause");

}
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846 > Lorine
 
Tu peux faire beaucoup plus simple. Tu n'as pas besoin de tableaux dynamiques. A moins que par la suite t'en ais besoin.
cin >> n;
double Tableau[n][n];

Cdlt
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Si tu ne connais pas la taille de ton tableau, tu ne peux pas faire comme ça.
Il faut déclarer un pointeur de pointeur (2 dimensions):

Tu confonds avec le C (norme 89 pour être précis :)).
En C++, on n'utilise plus les malloc en général. On préfère nettement utiliser le principe des classes.
0