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();
}