L2 MIA CORRECTION SN 2019-2020
ALC
Exercice 1
Nombre narcissique
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
/*************** Q1 *****************/
int nombreChiffres(long N)
{
int i=1 ;
if (N<0)
{
N=-N;
}
while(N>=10)
{
N/=10;
i++;
}
return i;
}
/*************** Q2 *****************/
float narcissique(int nbr){
int reste, temp;
float somme = 0.0;
temp= nombreChiffres (nbr);
while(nbr){
reste=nbr%10;
somme =somme + pow(reste,temp);
nbr =nbr/10;
}
return somme;
}
/*************** Q3 *****************/
void netrenar(int nbr1, int nbr2){
int temp1;
if(nbr1 > nbr2 ){
temp1 = nbr1;
nbr1= nbr2;
nbr2= temp1;
}
for ( int i= nbr1 +1 ; i<nbr2; i++){
float nar= narcissique(i);
if(nar == i) {
printf("les nombres narcissiques compris entre %d et %d sont %d\n", nbr1,nbr2, i);
}
}
int main()
{
int nbre, nbrNar;
int nbre1, nbre2;
float nap;
/*************** Q1 *****************/
long N,s;
printf("entrez un nombre\n");
scanf("%ld",&N);
s=nombreChiffres(N);
printf("le nombre de chiffre(s) de %ld est %ld\n",N,s);
/************* Q2 ***********/
printf("Entrez un nombre\n");
scanf("%d",&nbre);
nbrNar= narcissique(nbre);
if (nbre == nbrNar){
printf("Votre nombre est un nombre narcissique\n");
}else{
printf("Votre nombre n'est pas un nombre narcissique\n");
}
/************* Q3 **********/
printf("Entrez le premier nombre\n");
scanf("%d",&nbre1);
printf("Entrez le second nombre\n");
scanf("%d",&nbre2);
/********** Q4 *********/
netrenar(nbre1, nbre2);
return 0;
}
Exercice 2
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
typedef struct complex complex ;
//Q1
struct complex{
double Re;
double Im;
};
//Q2
complex PrintComplex(complex z){
return(z.Re , z.Im);
}
//Q3
complex AddComplex(complex z , complex a){
return PrintComplex(z.Re+a.Re , z.Im+a.Im);
};
//Q4
complex ProdComplex(complex z , complex a){
return PrintComplex((z.Re*a.Re-z.Im*a.Im) , (z.Im*a.Re+z.Re*a.Im));
};
//Q5
complex AbsComplex(complex z){
return sqrt(z.Re*z.Re +z.Im*z.Im);
}
L2 MIA CORRECTION SN 2018-2019
ALC
Exercice 2
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int factoriel (int n){
int fact, i;
if((n==0) ||(n==1)){
fact= 1;
}
else{
fact=1;
for(i=1;i<=n; i++){
fact= fact * i;
}
}
return fact;
}
int main()
{
int n, facto;
int nombre, i;
float x, S=0;
printf("Entrer un nombre\n");
scanf("%d", &n);
facto= factoriel(n);
printf("la factorielle du nombre %d est %d\n\n", n, facto);
printf(" xxxxxx Entrer un entier pour le calcule de la somme xxxx\n\n ");
scanf("%d", &nombre);
printf("xxxxxxx Entrer un reel pour le calcule de la somme xxxxxx \n\n");
scanf("%f", &x);
for(i= 1; i<=nombre; i++){
S = S + ((pow(-1,i))* pow(x,(i+1)))/factoriel(2*i + 1);
}
printf("La somme est %f xxxx", S);
return 0;
L2 MIA CORRECTION SN 2017-2018
ALC
Exercice 1
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
int main ()
{
int i, j,k ;
char nom[]="christian";
printf("entrez i \n");
scanf ("%d",&i);
for (j=0 ; j<i ; j++)
{
for (k=0 ; k<j+1 ; k++)
{
if (j<9)
printf ("%c", nom[j]);
else
printf("*");
}
printf("\n");
}
return 0;
}
Exercice 2
#include<stdio.h>
#include<stdlib.h>
void initialiser(int *nbb , int *jo);
void jeu(int jo , int *nbb);
void machine_joue(int *nbb);
void utilisateur_joue(int *nbb);
void changer_joueur(int *jo);
// les fonctions
//Q5
void changer_joueur(int *jo)
{
if(*jo==2)
{ *jo=1; }
else
{ *jo=2;}
}
//Q4
void utilisateur_joue(int *nbb)
{
int billes_pris;
do
{
printf("combien de billes:\n");
scanf("%d",&billes_pris);
}
while((billes_pris <=0 ) ||(billes_pris >=4 ) || (billes_pris >*nbb));
*nbb=*nbb-billes_pris;
}
//Q3
void machine_joue(int *nbb)
{
int billes_pris , modu;
modu=*nbb%4;
switch(modu)
{
case 0: billes_pris=3 ;
break;
case 1: billes_pris=1 ;
break;
case 2: billes_pris=1 ;
break;
case 3: billes_pris=2 ;
break;
}
printf("j\' ai pris %d billes \n", billes_pris);
*nbb=*nbb-billes_pris;
}
//Q2
void jeu(int jo , int *nbb)
{
if(jo==2){
machine_joue(nbb); }
else
{ utilisateur_joue(nbb); }
}
//Q1
void initialiser(int *nbb , int *jo)
{
int rep;
printf("donnez le nombre de billes\n");
scanf("%d",nbb);
printf("choix du prenier joueur\n");
printf("\tutilisateur.:1\n");
printf("\tmachine......:2\n");
printf("qui ?\n");
scanf("%d",&rep);
switch(rep)
{
case 1: *jo=1;
break;
case 2: *jo=2;
break;
}
}
int main()
{
int finjeu=0;
int nbbilles , joueur , perdant;
initialiser(&nbbilles , &joueur);
while(!finjeu){
printf("il reste %d billes\n",nbbilles);
jeu(joueur,&nbbilles);
if(nbbilles==0){
perdant=joueur;
finjeu=1; }
else
{ changer_joueur(&joueur); }
}
if(perdant==1){
printf("domage tu as perdu\n");
}
else {
printf(" bravo tu as gagne\n ");
}
return 0;
L2 MIA CORRECTION
ALC (compilation d’antiennes épreuves)
EXERCICE 2
#include<stdio.h>
#include<stdlib.h>
int main (){
int T[50] , TPOS[50],TNEG[50];
int n , npos, nneg;
int i;
printf("entrez la dimension du tabeau (max 50):\n");
scanf("%d",&n);
for(i=0;i<n;i++){
printf("entrez l'element %d :\n",i);
scanf("%d",&T[i]);
}
printf("tableau donne\n");
for(i=0;i<n;i++){
printf("%d",T[i]);
printf("\n");
}
npos=0;
nneg=0;
for(i=0;i<n;i++){
if(T[i]>0){
TPOS[npos]=T[i];
npos++;
}
if(T[i]<0){
TNEG[nneg]=T[i];
nneg++;
}
}
printf("tableau TPOS:\n");
for(i=0;i<npos;i++){
printf("%d",TPOS[i]);
printf("\n");
}
printf("tableau TNEG:\n");
for(i=0;i<nneg;i++){
printf("%d",TNEG[i]);
printf("\n");
}
return 0;
}
EXERCICE 3
#include<math.h>
#include<stdio.h>
#include<stdlib.h>
/* Saisie des coefficients de l'equation */
void saisie (double *a, double *b, double *c);
/* resolution de l'equation: la valeur retournee donne le nombre de solutions,
* qui se trouvent dans *x1 et *x2, la valeur 3 indique que tout R
* est solution */
int resoudre (double a, double b, double c, double *x1, double *x2);
/* Affichage de la resolution avec la convention de la fonction resoudre */
void affiche (int v, double x1, double x2);
int main()
{
int val;
double a, b, c, x1,x2;
saisie(&a, &b, &c);
val = resoudre(a, b, c, &x1, &x2);
affiche(val, x1, x2);
return 0;
}
void saisie(double *a, double *b, double *c)
{
printf("a = "); scanf("%lf",a);
printf("b = "); scanf("%lf",b);
printf("c = "); scanf("%lf",c);
}
int resoudre(double a, double b, double c, double *x1, double *x2)
{
double delta;
if (a == 0.0)
{
if (b == 0.0)
{
if (c == 0.0)
{
return 3;
}
else
{
return 0;
}
}
else
{
*x1 = -c/b;
return 1;
}
}
else
{
delta = b*b - 4*a*c;
if (delta < 0)
{
return 0;
}
else if (delta == 0)
{
*x1 = -b / 2*a;
return 1;
}
else
{
*x1 = (-b + sqrt(delta)) / 2*a;
*x2 = (-b - sqrt(delta)) / 2*a;
return 2;
}
}
}
void affiche(int v, double x1, double x2)
{
switch(v)
{
case 0: printf("pas de solution reelle\n");
break;
case 1: printf("une seule solution: x1 = %f\n", x1);
break;
case 2: printf("deux solutions: x1 = %f et x2 = %f\n", x1, x2);
break;
case 3: printf("l\'ensemble de solutions est R\n");
break;
L2 MIA CORRECTION SN 2019-2020
SDA
EXECICE 1
# include <stdio.h>
# include <math.h>
int main ()
{
int XA,YA,XB,YB;
double DIST;
/*Attention:la chaine de format que nous utiliserons*/
/*s'attend à ce que les données soient séparées par*/
/*une virgule lors de l'entrée.*/
printf("entrez les coordonnées du point A:XA,YA");
scanf ("%d %d",&XA,&YA);
printf("entrez les coordonnées du point B:XB,YB");
scanf("%d %d",&XB,&YB);
DIST=sqrt(pow(XA-XB,2)+pow(YA-YB,2));
printf("La distance entre A(%d,%d) et B(%d,%d) est %.3f\n",XA,YA,XB,YB,DIST);
return 0;
}
EXECICE 2
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
struct personne
{
char nom[20];
char numero[12];
};
typedef struct personne pers;
void saisir_personne(pers *pp);
void saisir_repertoire(pers rep[] , int nb);
void afficher_repertoire(pers rep[] , int nb);
char *chercher_personne(pers rep[] , int nb , char *nom);
// les fonctions
//Q4
char *chercher_personne(pers rep[] , int nb , char *nom)
{
int i;
for (i=0 ; i<nb;i++){
if(strcmp(nom, rep[i].nom)==0)
{ return rep[i].numero; }
}
return NULL ;
}
//Q3
void afficher_repertoire(pers rep[] , int nb)
{
int i;
printf("Affichage du repertoire\n");
printf("%20s...Numero\n" ,"nom");
for(i=0 ; i<nb ; i++)
{ printf("%20s ...%s", rep[i].nom , rep[i].numero); }
//Q2
void saisir_repertoire(pers rep[] , int nb)
{
int i;
printf(" saisie du repertoire de %d personnes :\n",nb);
for(i=0;i<nb ; i++){
saisir_personne(&rep[i]);
}
}
//Q1
void saisir_personne(pers *pp)
{
printf("nom\n");
scanf("%s", pp->nom);
printf("numero\n");
scanf("%s", pp->numero);
}
int main ()
{
pers monRep[5];
int choix;
char nom[20], *pnum;
saisir_repertoire(monRep,5);
do
{
do{
printf(" Menu:\n");
printf("a= 1-afficher le contenu du repertoire\n");
printf(" b=2-chercher le numero d'une personne\n");
printf(" c=3-quiter le programme:\n");
printf(" votre choix \n");
scanf("%d",&choix); }
while(choix <1 || choix >3);
switch(choix){
case 1 : afficher_repertoire(monRep,5);
break;
case 2 : printf("nom a rechercher :");
scanf("%s",nom);
pnum=chercher_personne(monRep,5,nom);
if(pnum==NULL){
printf("personne inexistante\n");}
else
{ printf("--> numero de %s: %s\n",nom, pnum); }
break;
default : break ;
}
}
while (choix!=3);
return 0;
L2 MIA CORRECTION SN 2017-2018
SDA
EXECICE 2
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
//Q1
typedef struct{
int reference ;
char designation[56];
double prixUnitaire;
} Article;
//Q2
void lireArticle(Article articles[],int n){
int i;
for(i=0;i<n;i++){
printf(" entrez la reference , la designation et le prix unitaire de l'article %d\n",i+1);
scanf("%d",&articles[i].reference);
scanf("%s",articles[i].designation);
scanf("%lf",&articles[i].prixUnitaire); }
}
//Q3
void afficherArticle(Article articles[],int n){
int i;
for(i=0;i<n;i++){
printf("la reference est %d",articles[i].reference);
printf("la designation est %s",articles[i].designation);
printf("le prix unitaire est %lf",articles[i].prixUnitaire); }
}
//Q4
void supprimerArticle(Article articles[],int *n,int reference){
int i,j;
for(i=0;i<*n;i++){
if(articles[i].reference == reference){
for(j=i ; j<*n;j++){
articles[j]=articles[j+1]; }
(*n)--;
}
}
}
//Q5
void ajouterArticle(Article articles[],int *n){
printf("entrez la reference de l'article\n");
scanf("%d",&articles[*n].reference);
printf("entrez la designation de l'article\n");
scanf("%s",articles[*n].designation);
printf("entrez le prix unitaire de l'article\n");
scanf("%lf",&articles[*n].prixUnitaire);
(*n)++;
}
//Q6
void triByDesignation(Article articles[],int n){
int i,j;
Article a;
for(i=0;i<n;i++){
for(j=i;j<i;j++){
if(strcmp(articles[i].designation,articles[j].designation)==1){
a=articles[i];
articles[i]=articles[j];
articles[j]=a;
}
}
}
puts("liste des articles tries par designation :\n");
afficherArticle(articles,n);
}
//Q7
void triByPrix(Article articles[],int n){
int i,j;
Article a;
for(i=0;i<n;i++){
for(j=i;j<n;j++){
if(articles[i].prixUnitaire<articles[j].prixUnitaire){
a=articles[i];
articles[i]=articles[j];
articles[j]=a;
}
}
}
puts("liste des articles tries par prix unitaire :");
afficherArticle(articles,n);
}
//Q8
void saveArticles(Article articles[],int n){
FILE*f;
int i;
f=fopen("articles.txt","w");
if(!f){
printf("Erreur de creation du fichier!\n");
return;
}
for(i=0;i<n;i++){
fprintf(f,"%d ; %s ; %.2f\n",articles[i].reference , articles[i].designation , articles[i].prixUnitaire);
}
fclose(f);
}
//Q9
int main(){
char carac;
Article t[5],*a;
int n , choix , reference ;
do{
puts("★******menu******★\n");
puts("a: Lire les articles:\n");
puts("b: Afficher les articles classer par ordre alphabetique des designations");
puts("c: Afficher les articles du moins cher au plus cher.");
puts("d: Ajuter un nouvel article.");
puts("e: supprimer un article .");
puts("f: enregidtrer des articles.");
puts("g: Quitter le programme.");
puts("tapez votre choix .");
scanf("%s",&carac);
switch(carac){
case 'a' :
printf("donnez le nombre d'articles:");
scanf("%d",&n);
lireArticle(t,n);
break;
case 'b':
triByDesignation(t,n);
break;
case 'c':
triByPrix(t,n);
break;
case 'd':
ajouterArticle(t,&n);
break;
case 'e':
printf("entrez la reference de l'article a supprimer :");
scanf("%d",&reference);
supprimerArticle(t,&n,reference);
printf("liste des article apres suppression de l'article %d\n",reference);
afficherArticle(t,n);
break;
case 'f':
saveArticles(t,n);
printf("liste enregistree dans le fichier articles.txt\n");
break ;
case 'g':
printf("Fin du programme\n");
break;
default :
printf("choix invalide\n");
}
}
while (choix!='g');
return 0;
}