Vous êtes sur la page 1sur 2

1 #include <stdio.

h>
2 #include <stdlib.h>
3 #include <string.h>
4
5 //TD5_exo01 (traité moi meme donc pas sur que ce soit juste)
6
7 //exo_2
8 /*
9 int main ()
10 {
11 // Tableau de caractère
12 char* Bellay = malloc(700*sizeof(char));
13 int taille, cmpt, cmptMot, i = 0;
14 cmptMot = 0;
15 strcpy(Bellay,"Heureux qui, comme Ulysse, a fait un beau voyage,\n"
16 "Ou comme cestui -la qui conquit la toison,\n"
17 "Et puis est retourne, plein d'usage et raison,\n"
18 "Vivre entre ses parents le reste de son age !\n"
19 "Quand reverrai-je, helas, de mon petit village\n"
20 "Fumer la cheminee, et en quelle saison\n"
21 "Reverrai-je le clos de ma pauvre maison,\n"
22 "Qui m'est une province, et beaucoup davantage ?\n"
23 "Plus me plait le sejour qu'ont bati mes aieux,\n"
24 "Que des palais Romains le front audacieux,\n"
25 "Plus que le marbre dur me plait l'ardoise fine :\n"
26 "Plus mon Loir gaulois, que le Tibre latin,\n"
27 "Plus mon petit Lire, que le mont Palatin,\n"
28 "Et plus que l'air marin la douceur angevine.");
29
30 printf("%s\n",Bellay);
31 printf("\n");
32 taille = strlen(Bellay);
33 for(i=0; i<taille; i++)
34 {
35 if(Bellay[i] == 'A' || Bellay[i] == 'E' || Bellay[i] == 'I' ||
36 Bellay[i] == 'O' || Bellay[i] == 'U' || Bellay[i] == 'Y' ||
37 Bellay[i] == 'a' || Bellay[i] == 'e' || Bellay[i] == 'i' ||
38 Bellay[i] == 'o' || Bellay[i] == 'u' || Bellay[i] == 'y' )
39 cmpt++;
40 if(Bellay[i] == '\n' || Bellay[i] == ' ' || Bellay[i] == '-' || Bellay[i] == '\'')
41 cmptMot++;
42 if(Bellay[i] == '?' || Bellay[i] == '!' || Bellay[i] == ':')
43 cmptMot--;
44 }
45 printf("Le pourcentage de voyelles est %f\n", 100.*cmpt/taille);
46 printf("\n");
47 printf("Le nombre de mots dans la chaine ci-dessus est : %d\n", cmptMot);
48
49 return 0;
50 }
51 */
52
53 // Exo_3
54
55 int** creer_matrice(int l, int c);
56 void afficher_matrice(int** m, int l, int c);
57 void remplir_matrice(int** m, int l, int c);
58 int** multiplication_matrice(int** m1, int** m2, int l1, int c1, int l2, int c2);
59 void supprimer_matrice(int** m, int l);
60
61 int main ()
62 {
63 int LiA, CoA, LiB, CoB;
64 int** A;
65 int** B;
66 int** C;
67 printf("--------------\n"); printf(" \n");
68 printf("On va creer un nombre de ligne pour notre matrice A. Quel nombre de ligne
voulez-vous ?\n"); printf(" \n");
69 printf("N_LigneA = ");
70 scanf("%d", &LiA); printf(" \n");
71 printf("On va creer un nombre de colonne pour notre matrice A. Quel nombre de colonne
voulez-vous ?\n"); printf(" \n");
72 printf("C_ColonneA = ");
73 scanf("%d", &CoA); printf(" \n");
74
75 printf("On va creer maintenant un nombre de ligne pour notre matrice B. Quel nombre
de ligne voulez-vous ?\n"); printf(" \n");
76 printf("N_LigneB = ");
77 scanf("%d", &LiB); printf(" \n");
78 printf("On va creer maintenant un nombre de colonne pour notre matrice B. Quel nombre
de colonne voulez-vous ?\n"); printf(" \n");
79 printf("C_ColonneB = ");
80 scanf("%d", &CoB); printf(" \n");
81 while(CoA != LiB)
82 {
83 printf("Oups!!!! Pour multiplier deux matrices, il faut que le nombre de colonne
de A soit egal au nombre de ligne de B\n");
84 printf(" \n");
85 printf("On va creer un nombre de ligne pour notre matrice A. Quel nombre de
ligne voulez-vous ?\n"); printf(" \n");
86 printf("N_LigneB = ");
87 scanf("%d", &LiB); printf(" \n");
88 printf("On va creer un nombre de colonne pour notre matrice A. Quel nombre de
colonne voulez-vous ?\n"); printf(" \n");
89 printf("C_ColonneA = ");
90 scanf("%d", &CoA); printf(" \n");
91 }
92 A = creer_matrice(LiA, CoA);
93 B = creer_matrice(LiA, CoA);
94 remplir_matrice(A, LiA, CoA);
95 remplir_matrice(B, LiB, CoB);
96 C = multiplication_matrice(A, B, LiA, CoA, LiB, CoB);
97 printf("A =\n"); afficher_matrice(A, LiA, CoA); printf(" \n");
98 printf("B =\n"); afficher_matrice(B, LiB, CoB); printf(" \n");
99 printf("Le produit matricielle C = A*B est :\n"); printf(" \n");
100 printf("C =\n"); afficher_matrice(C, LiA, CoB); printf("--------------\n");
101 return 0;
102 }
103
104 int** creer_matrice(int l, int c)
105 {
106 int** res; int i;
107 // Tableau ligne de l adresse
108 res = malloc(l*sizeof(int*));
109 for(i=0; i<l; i++)
110 // Tableau ligne de c float
111 res[i] = malloc(c*sizeof(int));
112
113 return res;
114 }
115
116 void afficher_matrice(int** m, int l, int c)
117 {
118 int i, j;
119 for(i=0; i<l; i++)
120 {
121 for(j=0; j<c; j++)
122 {
123 printf("%d", m[i][j]);
124 printf(" ");
125 }
126 printf("\n");
127 }
128 }
129
130 void remplir_matrice(int** m, int l, int c)
131 {
132 int i, j;
133 for(i=0; i<l; i++)
134 {
135 for(j=0; j<c; j++)
136 m[i][j] = rand()%10;
137 }
138 }
139
140 int** multiplication_matrice(int** m1, int** m2, int l1, int c1, int l2, int c2)
141 {
142 int i, j, k;
143 int** res = creer_matrice(l1, l2);
144 for(i=0; i<l1; i++)
145 for(j=0; j<c2; j++)
146 {
147 res[i][j] = 0. ;
148 for(k=0; k<c1; k++)
149 res[i][j] = res[i][j] + m1[i][k]*m2[k][j];
150 }
151 return res;
152 }
153 void supprimer_matrice(int** m, int l)
154 {
155 int i;
156 for(i=0; i<l; i++) free(m[i]);
157 free(m);
158 }
159

Vous aimerez peut-être aussi