Ajouter un commentaire

fredericmazue

Ah un bon vieux exercice d'école à base de pointeurs comme au bon vieux temps. :)

Bon tu as une première grosse erreur ici lors de l'appel

Intro_Matrice_Aleatoire ( diml, dimc, *tab, 10, 1);

c'est

Intro_Matrice_Aleatoire ( diml, dimc, tab, 10, 1);

que tu as voulu écrire :)

Avec tab, tu passes le pointeur, c'est à dire l'adresse du tableau, c'est à dire ce qu'il faut. Si tu écris *tab tu déréférences le pointeur, ce qui signifie que tu donnes la valeur pointée, le contenu autrement dit. A prioiri une valeur non initialisée qui plus est.

En fait ton programme devrait planter méchamment déjà....

J'ai un peu réorganisé ton code à l'attention de ceux qui veulent suivre le débat.

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

void Intro_Dim_Matrice ( int MaxL, int MaxC, int *l, int *c ) 
{ 
	int DimL, DimC; 
	DimL=0; // (*l)=0; 
	DimC=0; 

	do 
	{
		printf("Nombre de lignes de la matrice: \n");
		scanf("%d",&DimL);
	} 
	while (DimL<1 || DimL>MaxL); 

	do 
	{ 
		printf("Nombre de colonnes de la matrice:\n"); 
		scanf("%d",&DimC); 
	}	
	while (DimC<1 || DimC>MaxC); 

	(*l)=DimL; 
	(*c)=DimC; 
} 


void Intro_Matrice_Aleatoire( int DimL, int DimC, int *tab, int max, int min) 
{
	int i,j; 
	j=0; 
	
	srand((unsigned) time(NULL) + rand()); 
	
	for(i=0; i<DimL; i++) 
	{ 
		for (j=0; j<DimC; j++) 
		{ 
			*((tab+i*DimC)+j) = rand() % (max - min + 1) + min; 
			printf("%d ",*((tab+(i*DimC))+j)); 
		}	
	}	 

	printf("\n"); 
} 


int main(int argc, char** argv)
{
	int lignes, colonnes;
	int maxl = 3;
	int maxc = 3;
	int tab[27];

	Intro_Dim_Matrice (maxl, maxc, &lignes, &colonnes); 
	Intro_Matrice_Aleatoire (lignes, colonnes, tab, maxl, maxc); 
	
	return 0;
}

Ce code affiche quelque chose. ATTENTION je dis qu'il affiche, je dis pas qu'il marche. Les résultats vont te surprendre et tu vas voir que tu va devoir te battre encore un peu avec les pointeurs C, leurs mystères et autres traquenards :)

Mais bon, tu as déjà de quoi avancer un petit peu. N'hésite pas à revenir ici poursuivre la discussion :)

Filtered HTML

Plain text

CAPTCHA
Cette question permet de vérifier que vous n'êtes pas un robot spammeur :-)
 W     W  III  K  K   SSS   TTTTTT 
W W I K K S TT
W W W I KK SSS TT
W W W I K K S TT
W W III K K SSSS TT