Problem1

 

/* Nombre d'Armstrong */

#include<stdio.h>

#include<conio.h>

 int cub( int x)

{

    return (x*x*x);

}

 int amstrong(int N)

{

  int x,Som;

x=N;

Som=0;

do

{

Som+=cub((x%10));

x=x/10;

}

while(x>0);

if(Som==N)

return 1;

else

return 0;

}

  int produit_Amstrong(  int N)

{

     int i,p;

    p=1;

     for(i=1;i<N;i++)

     {

        if (amstrong(i)==1)

        p=p*i;

     }

     return p;

}

int main()

{

     int n,i,x;

    printf("donner un entier");

    scanf("%d",&n);

    if (amstrong(n)==1)

    printf("ok\n");

    else

    printf("non ok\n");

 

  printf("%d",produit_Amstrong(153));

getch();

}

 

Probleme2

 

#include<stdio.h>

#include<conio.h>

#include<stdlib.h>

#include<string.h>

char* Pos_Car(char *S,char C)

{

  char *p;

  p=S;

  while((*p!='\0')&&(*p!=C))

    {

        p++;

    }

if (*p!='\0')

return p;

else

return NULL;

 }

 int Nb_Occurr (char *S,char C)

 {

     char *p;

     p=S;

     int cpt=0;

     while(p!=NULL)

 

     {

         p=Pos_Car(p,C);

         if (p!=NULL)

         {

         cpt++;

         p++;

         }

     }

     return cpt;

 }

 int Nbmots(char *S)

 {

     int x=0;

     x=Nb_Occurr(S,' ');

     return x+1;

 }

 int main()

 {

      char c;

char ch[20];

 strcpy(ch,"mohamed est serieux");

 char *p1;

 printf("tapez un caractere\n");

 c=getchar();

 p1=Pos_Car(ch,c);

 if (p1==NULL)

 printf("n'existe pas");

 else

 printf("%c",*p1);

 printf("le nombre d'occurences est %d\n",Nb_Occurr (ch,c));

 printf("le nombre de mots est %d\n",Nbmots(ch));

 getch();

 }

 

Probleme 3 partieI

#include<stdio.h>

#include<conio.h>

#include<stdlib.h>

#include<math.h>

#define N 7

float Tx[N]={-0.7,-0.5,0.5,1,1,-1,0};

float Ty[N]={1.2,-1.3,1.3,-1,1,1,-1.4};

 

 //Q1

 float car(float x)

 {

     return x*x;

 }

 //Q2

 float dist1(float Tx[], float Ty[],int i, int j)

 {

     return sqrt(car(Tx[j]-Tx[i])+car(Ty[j]-Ty[i]));

 }

 //Q3

 float dist2(float Tx[],float Ty[])

 {

int i,j;

float dmax=0;

for(i=0;i<N-1;i++)

for(j=i+1;j<N;j++)

if (dist1(Tx,Ty,i,j)>dmax)

dmax=dist1(Tx,Ty,i,j);

return dmax;

 }

 //Q4

 float dist3(float Tx[],float Ty[],int i)

 {

 return sqrt(car(Tx[i])+car(Ty[i]));

 }

 //Q5

 void cercleMax(float Tx[], float Ty[])

 {

int i,k=0;

float rmax=0;

for(i=0;i<N;i++)

{

    if (dist3(Tx,Ty,i)>rmax)

  rmax=dist3(Tx,Ty,i) ;

}

for(i=0;i<N;i++)

if (dist3(Tx,Ty,i)==rmax)

k++;

  printf("le rayon le plus loin de l'origine est %f\n",rmax);

printf("le nombre de points app au cercle est %d",k);

 }

int main()

{

    printf("dist1=%f\n",dist1(Tx,Ty,0.5,3));

    printf("dist2=%f\n",dist2(Tx,Ty));

    printf("dist3=%f\n",dist3(Tx,Ty,0));

    cercleMax(Tx,Ty);

 

 getch();

 }

 

 

Probleme3 partieII

#include<stdio.h>

#define N 7

typedef struct point

{

float X ;

float Y;

}point;

point T[N]={{-0.7,1.2},{-0.5,-1.3},{0.5,1.3}   ,{1,-1},{1,1},{-1,1},{0,-1.4}};

//Q6

void permute(point * T,int i, int j)

{

    point aide;

    point *p;

    p=T;

    aide=p[i];

    p[i]=p[j];

    p[j]=aide;

}

//Q7

void range(point *T)

{

    int i=0,j=K-1;

 while(i<=j)

{

   if ((T[i].Y>=0)&&(T[j].Y<0)) {i++ ;j-- ;}

if ((T[i].Y>=0)&&(T[j].Y>=0)) {i++ ;}

if ((T[i].Y<0)&&(T[j].Y<0)) {j-- ;}

if ((T[i].Y<0)&&(T[j].Y>=0))

{

    permute(T,i,j);

    i++;

    j--;

}

}

if((i>j)&&(T[i-1].Y<0))

permute(T,i-1,i);

}

//Q8

int indic(point *T)

{

    int i=0;

    while (T[i].Y>=0)

    i++;

    return i;

}

//Q9

int rechSup(point *T, point P)

{

     int pi=indic(T);

    int i=0;

   while ((T[i].Y!=P.Y) && (i<pi))

   i++;

if (i==pi)

return 0;

else

return 1;

 

}

//Q10

int rechInf(point *T, point P)

{

    int pi=indic(T);

    int i=pi;

   while ((T[i].Y!=P.Y) && (i<k))

   i++;

if (i==N)

return 0;

else

return 1;

 

}

//Q11

int recherche(point *T, point P)

 

    {

if ((rechSup(T,P)==0)&& (rechInf(T,P)==0))

return 0;

else

return 1;

    }

//Q12

void trier(point *T)

{

int pi=indic(T);

int i,j;

for (i=0;i<pi-1;i++)

for (j=i+1;j<pi;j++)

if(T[i].X>T[j].X)

permute(T,i,j);

for (i=pi;i<k-1;i++)

for (j=i+1;j<k;j++)

if(T[i].X<T[j].X)

permute(T,i,j);

 

}

int main()

{

//permute(T,0,2);

int i;

point p;

p.X=0.5;

p.Y=-11.3;

 

//for(i=0;i<3;i++)

//printf("%f\t%f\t",T[i].X,T[i].Y);

range(T);

for(i=0;i<N;i++)

printf("%f ",T[i].X);

printf("\n");

for(i=0;i<N;i++)

printf("%f ",T[i].Y);

printf("\n");

printf("ind prem point appart a inf= %d\n",indic(T));

printf("p appart a sup %d\n",rechSup(T,p));

printf("p appart a inf %d\n",rechInf(T,p));

printf("p appart a T %d\n",recherche(T,p));

trier(T);

//affichage

for(i=0;i<N;i++)

printf("%f ",T[i].X);

printf("\n");

for(i=0;i<N;i++)

printf("%f ",T[i].Y);

printf("\n");

getch();

}