Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 25/09/2020, à 23:05

zephyre123

Transmettre en parametre un vecteur de matrice à une fonction

Bonjour,

J'ai fait le code ci dessous qui me permet via une fonction d'initialiser touts les termes de la matrice à zéro ci dessous :

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

int matrice[2][3] =
{
	{1, 2, 3},
	{4, 5, 6},
};

void initialisation(int (*pMatrice)[2][3])
{
	for(int i = 0; i < 2; i++)
		for(int j = 0; j < 3; j++)
			*pMatrice[i][j] = 0;

	for(int i = 0; i < 2; i++)
		for(int j = 0; j < 3; j++)
			printf("pMatrice[%d][%d] = %d\n",i, j, *pMatrice[i][j]);
}

int main(void)
{
	initialisation(&matrice);

	return EXIT_SUCCESS;
}

Maintenant je voudrai  faire exactement la même chose mais au lieu de transmettre un pointeur sur matrice à ma fonction j'aimerai lui transmettre un vecteur de pointeur qui me permettrai d'initialiser plusieurs matrice en même temps
J'ai fais le code ci dessous :

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

typedef int matrice[2][3];

int matrice_pair[2][3] =
{
	{0, 2, 4},
	{6, 8, 10},
};

int matrice_impair[2][3] =
{
	{1, 3, 5},
	{7, 9, 11},
};
void initialisation(matrice (*p)[2])
{

	for(int i = 0; i < 2; i++)
		for(int j = 0; j < 3; j++)
			*p[0][i][j] = 0;
	
	for(int i = 0; i < 2; i++)
		for(int j = 0; j < 3; j++)
			*p[1][i][j] = 0;

	for(int i = 0; i < 2; i++)
		for(int j = 0; j < 3; j++)
			printf("Matrice_0[%d][%d] = %d\n",i, j, *p[0][i][j]);

	printf("\n\n");

	for(int i = 0; i < 2; i++)
		for(int j = 0; j < 3; j++)
			printf("Matrice_1[%d][%d] = %d\n",i, j, *p[1][i][j]);
}

int main(void)
{
	initialisation(&matrice_pair, &matrice_impair);
	return EXIT_SUCCESS;
}

Je comprends rien au erreur du compilateur roll

Dernière modification par zephyre123 (Le 25/09/2020, à 23:06)

Hors ligne

#2 Le 26/09/2020, à 08:23

NicoApi73

Re : Transmettre en parametre un vecteur de matrice à une fonction

Bonjour,

Tu déclares une fonction initialisation qui prend 1 argument. Dans main, tu lui en passes 2, donc le compilateur te dit que tu appelles ta fonction avec trop d'arguments... Il faut appeler 2 fois la fonction avec 1 seul argument.

Inapproprié. Voir la réponse de kamaris ci-dessous

Dernière modification par NicoApi73 (Le 26/09/2020, à 15:17)

Hors ligne

#3 Le 26/09/2020, à 11:17

kamaris

Re : Transmettre en parametre un vecteur de matrice à une fonction

C'est

void initialisation(matrice *p[2])

et (en faisant de même pour p[1])

(*(p[0]))[i][j] = 0;
…
printf("Matrice_0[%d][%d] = %d\n",i, j, (*(p[0]))[i][j]);

puis

matrice *p[2] = { &matrice_pair, &matrice_impair };
initialisation(p);

Dernière modification par kamaris (Le 26/09/2020, à 11:27)

Hors ligne

#4 Le 26/09/2020, à 15:14

zephyre123

Re : Transmettre en parametre un vecteur de matrice à une fonction

Merci beaucoup Kamaris t'as exactement compris ce que je voulais faire cool
C'est parfait !

Hors ligne

#5 Le 26/09/2020, à 15:17

NicoApi73

Re : Transmettre en parametre un vecteur de matrice à une fonction

Ma réponse était inapproprié. Je corrige

Hors ligne