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
| #include <stdio.h>
#include <stdlib.h>
#include <string.h>
// chaine de caractere sur lesquelles on travaille => variable globale
int compression (char *sz1, char *sz2) // compresse une chaine de caractere
{
int i,j,n=0;j=0;
for (i=0;*(sz1+i)!=0;i++)
n++;
for (i=0;i<n;i++)
if (*(sz1+i)!=' ')
{
*(sz2+i)=*(sz1+i);
j++;
}
strcpy(sz1,sz2);
printf("apres compression : %s\n",*sz2);
return 0;
}
int inversion (char *sz1,char *sz2) // inverse les caractères d'une chaine : abc=>cba
{
char c;
int i,j,n;
n=0;
j=1;
for (i=0;*(sz2+i)!=0;i++)
n++;
for(i=0;i<n/2;i++)
{
c=*(sz2+i);
*(sz2+i)=*(sz2+n-j);
*(sz2+n-j)=c;
j++;
}
printf("apres inversion : %s\n\n",*sz2);
return 0;
}
int main(int argc, char *argv[])
{
char sz1[50], sz2[50];
fgets(sz1,sizeof(sz1),stdin);
compression(&sz1,&sz2);
inversion(&sz1,&sz2);
if (!(strcmp(sz1,sz2)))
puts("c'est un palindrome");
else puts("ce n'est pas un palindrome");
system("PAUSE");
return 0;
} |
Partager