Exercice 1
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 | #include <stdio.h> main() { /* Déclarations */ int A[50][50]; /* matrice */ int N, M; /* dimensions de la matrice */ int I, J; /* indices courants */ /* Saisie des données */ printf ( "Nombre de lignes (max.50) : " ); scanf ( "%d" , &N ); printf ( "Nombre de colonnes (max.50) : " ); scanf ( "%d" , &M ); /* Lecture de la matrice au clavier */ for (I=0; I<N; I++) for (J=0; J<M; J++) { printf ( "Elément[%d][%d] : " ,I,J); scanf ( "%d" , ( int *)A+I*50+J); } /* a) Affichage de la matrice */ printf ( "Matrice donnée :\n" ); for (I=0; I<N; I++) { for (J=0; J<M; J++) printf ( "%7d" , *(( int *)A+I*50+J)); printf ( "\n" ); } /* b) Affichage de la transposée de A */ printf ( "Matrice transposée :\n" ); for (J=0; J<M; J++) { for (I=0; I<N; I++) printf ( "%7d " , *(( int *)A+I*50+J)); printf ( "\n" ); } /* c) Interprétation de la matrice comme vecteur : */ /* Attention, ce serait une faute grave d'afficher */ /*'simplement' les NxM premiers éléments de A ! */ printf ( "Matrice affichée comme vecteur :\n" ); for (I=0; I<N; I++) for (J=0; J<M; J++) printf ( " %d " , *(( int *)A+I*50+J)); printf ( "\n" ); return 0; } |
Exercice 2
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 | #include <stdio.h> main() { /* Déclarations */ int A[50][50]; /* matrice donnée */ int B[50][50]; /* matrice donnée */ int C[50][50]; /* matrice résultat */ int N, M, P; /* dimensions des matrices */ int I, J, K; /* indices courants */ /* Saisie des données */ printf ( "*** Matrice A ***\n" ); printf ( "Nombre de lignes de A (max.50) : " ); scanf ( "%d" , &N ); printf ( "Nombre de colonnes de A (max.50) : " ); scanf ( "%d" , &M ); for (I=0; I<N; I++) for (J=0; J<M; J++) { printf ( "Elément[%d][%d] : " ,I,J); scanf ( "%d" , ( int *)A+I*50+J); } printf ( "*** Matrice B ***\n" ); printf ( "Nombre de lignes de B : %d\n" , M); printf ( "Nombre de colonnes de B (max.50) : " ); scanf ( "%d" , &P ); for (I=0; I<M; I++) for (J=0; J<P; J++) { printf ( "Elément[%d][%d] : " ,I,J); scanf ( "%d" , ( int *)B+I*50+J); } /* Affichage des matrices */ printf ( "Matrice donnée A :\n" ); for (I=0; I<N; I++) { for (J=0; J<M; J++) printf ( "%7d" , *(( int *)A+I*50+J)); printf ( "\n" ); } printf ( "Matrice donnée B :\n" ); for (I=0; I<M; I++) { for (J=0; J<P; J++) printf ( "%7d" , *(( int *)B+I*50+J)); printf ( "\n" ); } /* Affectation du résultat de la multiplication à C */ for (I=0; I<N; I++) for (J=0; J<P; J++) { *(( int *)C+I*50+J)=0; for (K=0; K<M; K++) *(( int *)C+I*50+J) += *(( int *)A+I*50+K) * *(( int *)B+K*50+J); } /* Edition du résultat */ printf ( "Matrice résultat C :\n" ); for (I=0; I<N; I++) { for (J=0; J<P; J++) printf ( "%7d" , *(( int *)C+I*50+J)); printf ( "\n" ); } return 0; } |
Exercice 3
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 | #include <stdio.h> main() { /* Déclarations */ char TABCH[5][51]; /* tableau de chaînes de caractères */ char AIDE; /* pour la permutation des caractères */ char *P1, *P2; /* pointeurs d'aide */ int I; /* indice courant */ /* TABCH+I est l'adresse de la I-ième chaîne du tableau */ /* Il vaut mieux convertir TABCH+I en pointeur sur char */ /* Saisie des données */ printf ( "Entrez 5 mots :\n" ); for (I=0; I<5; I++) { printf ( "Mot %d (max.50 caractères) : " , I); gets (( char *)(TABCH+I)); } /* Inverser l'ordre des caractères à l'intérieur des mots */ for (I=0; I<5; I++) { P1 = P2 = ( char *)(TABCH+I); /* Placer P2 à la fin de la chaîne */ while (*P2) P2++; P2--; /* sinon '' est placé au début de la chaîne */ while (P1<P2) { AIDE = *P1; *P1 = *P2; *P2 = AIDE; P1++; P2--; } } /* Affichage des mots inversés */ for (I=0; I<5; I++) puts (( char *)(TABCH+I)); return 0; } |