#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;
}
#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;
}
#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;
}