Exercice langage C : Recherche des Points-Clos MaxLignes

ExerciceC-id2803
Ecrire une fonction  TrouvePointsClos permet trouver et afficher tous les Points-Clos MaxLigne d'une matrice Mat ( c'est à dire: cette fonction affiche les valeurs des éléments  ainsi que leurs numéros de lignes et de colonnes)


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
/* Calculs matriciels */

#include 

/* Saisie d'une matrice carree */
void saisir(double Mat[100][100], int nb);

/* Affichage d'une matrice carree */
void afficher(double Mat[100][100], int nb);

/* Addition de deux matrices */
void additionner(double Mat1[100][100], double Mat2[100][100],
		 double Mat3[100][100], int nb);

/* Multiplication de deux matrices */
void multiplier(double Mat1[100][100], double Mat2[100][100],
		double Mat3[100][100], int nb);

/* Affichage d'un menu et retour du choix de l'utilisateur */
char menu();

int main ()
{
	double M[100][100], P[100][100], R[100][100];
	int nb_val;
	char rep;

	rep = menu();
	while (rep == 'A' || rep == 'M')
	{
		printf ("taille de la matrice carree :\n");
		scanf ("%d", &nb_val);

		printf("saisie de la 1ere matrice\n");
		saisir(M, nb_val);

		printf("saisie de la 2eme matrice\n");
		saisir(P, nb_val);

		switch(rep)
		{
		case 'A':
			additionner(M, P, R, nb_val);
			break;
		case 'M':
			multiplier(M, P, R, nb_val);
			break;
		}

		printf("Matrice M:\n"); afficher(M, nb_val);
		printf("Matrice P:\n"); afficher(P, nb_val);
		printf("Matrice R:\n"); afficher(R, nb_val);

		rep = menu();
	}

	return 0;
}

char menu(void)
{
	char rep;
	printf("A...........Addition\n");
	printf("M...........Multiplication\n");
	printf("(autres)....Quitter\n");
	printf("Choix : ");
	scanf(" %c", &rep);
	if (rep > 'Z')
	{
		rep = rep - 'a' + 'A';
	}
	return rep;
}

void saisir(double Mat[100][100], int nb)
{
	int i, j;
	printf("entrer les valeurs de la matrice\n");
	for (i=0; i<nb; i++)
	{
		 for (j=0; j<nb; j++)
		 {
			printf ("M[%d][%d] = ", i+1, j+1);
			scanf ("%lf", &(Mat[i][j]));
		 }
	}
}

void afficher(double Mat[100][100], int nb)
{
	int i, j;

	printf("\t");
	for (i=0; i<nb; i++)
	{
		printf("%d\t\t", i+1);
	}
	printf("\n");

	for (i=0; i<nb; i++)
	{
		printf("----------------");
	}
	printf("\n");

	for (i=0; i<nb; i++)
	{
		printf("%d:", i+1);
		for (j=0; j<nb; j++)
		{
			printf ("\t%f", Mat[i][j]);
		}
		printf("\n");
	}

	for (i=0; i<nb; i++)
	{
		printf("----------------");
	}
	printf("\n\n");
}

void additionner(double Mat1[100][100], double Mat2[100][100],
		 double Mat3[100][100], int nb)
{
	int i, j;
	for (i=0; i<nb; i++)
	{
		for (j=0; j<nb; j++)
		{
			Mat3[i][j] = Mat1[i][j] + Mat2[i][j];
		}
	}
}

void multiplier(double Mat1[100][100], double Mat2[100][100],
		double Mat3[100][100], int nb)
{
	 int i, j, k;
	 for (i=0; i<nb; i++)
	 {
		for (j=0; j<nb; j++)
		{
			Mat3[i][j] = 0;
			for (k=0; k<nb; k++)
			{
				Mat3[i][j] = Mat3[i][j] + Mat1[i][k]*Mat2[k][j];
			}
		}
	}
}