Tableau multidimension

Résolu/Fermé
Lorine - 18 nov. 2008 à 18:44
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 18 nov. 2008 à 21:29
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 samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
18 nov. 2008 à 19:09
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
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 dimanche 16 novembre 2008 Statut Membre Dernière intervention 17 janvier 2009 25
18 nov. 2008 à 19:34
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
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 samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844 > Lorine
18 nov. 2008 à 21:29
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 samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
18 nov. 2008 à 20:47
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