GÉNIE ÉLECTRIQUE
Dernière mise à jour |
CORRECTION DES EXERCICES Correction exercice 1 Bonjour #include <stdio.h> #include <conio.h> char nom[10],c; main() { puts("Quel est votre nom ? "); scanf("%s",nom); printf("/nBonjour/t%s",nom); c=getch(); return (0); } Correction exercice 2 Périmètre #include <stdio.h> float perim_rect (float lon, float larg) /* ici pas de ; !! */ { float perimetre; /* variable locale … la fonction */ perimetre = 2*(lon + larg); return perimetre; /* c'est ainsi que l'on renvoi le résultat de la fonction.*/ }
float alt_perim_rect (float lon, float lar) { return 2*(lon+lar); } main() { float L,l; /* déclaration de 2 variables globales dans main */ printf ("/n Entrer la longueur "); scanf ("%f", &L); printf ("/n Entrer la largeur "); scanf ("%f", &l); printf ("/n/t Le p‚rimetre est : %f ", perim_rect (L,l)); /* C'est dans la fonction printf, comme paramètre que l'on appelle la perim_rect */ } Correction exercice 5 RC #include <stdio.h> #include <conio.h> #include <math.h> float r,c,vf,tau,t; main() { puts("/nCalcul de vs=vi*(1-e-(t/tau)) lors de la charge de R dans R avec vs(t0)=0");_ puts("pour 20 valeurs de t comprises entre 0 et 5*tau"); puts("Entez R C et vf (tension finale) séparer les entrées par un espace: "); scanf("%f %f %f",&r,&c,&vf); tau=r*c; for(t=0;t<=5*tau;t+=tau/4) printf("/nà t= %2f s -> vs= %f V",t,vf*(1-exp(-t/tau))); puts("/ntapez une touche pour continuer"); c=getch(); return (0); } Correction exercice 6 Jeux #include <stdio.h> #include <stdlib.h> /* pour rand() */ #include <time.h> /* pour trouver l'heure pour srand */ void main(void) { int solution,reponse,nb_essais=0; {time_t t;srand((unsigned) time(&t)); } /* initialiser le générateur à partir du compteur de temps, pour qu'il soit plus aléatoire */ solution=rand()%11; /* reste sera toujours entre 0 et 10 */ do { nb_essais++; puts("prOpésez votre nombre entre 0 et 10"); scanf("%d",&reponse); } while (reponse!=solution); printf("trouvé en %d essais/n",nb_essais); }
Correction exercice 7 Moyenne #include <stdio.h> void main(void) { int i,N; float note,somme=0,moyenne; puts("nombre de notes ? "); scanf("%d",&N); for(i=0;i<N;i++) { printf("entrez votre %dième note",i+1); scanf("%f",¬e); somme+=note; } moyenne=somme/N; printf("moyenne calculée :%5.2f/n",moyenne); } Correction exercice 8 Puissance #include <stdio.h> void main(void) { int puissance=1,max; puts("nombre maximal désiré (ne pas dépasser 16000) ?"); scanf("%d",&max); while (puissance<max) printf("%d/n",puissance*=2); } Correction exercice 9 Calculatrice
#include <stdio.h> void main(void) { float val1,val2,res; char Opéval2 int fin=0; do { puts("calcul à effectuer (par ex 5*2), ou 1=1 pour finir ? "); scanf("%f%c%f",&val1,&Opé&val2); switch (Opé { case '*':res=val1*val2;break; case '/':res=val1/val2;break; case '+':res=val1+val2;break; case '-':res=val1-val2;break; case '=':fin++; /* pas besoin de break, je suis déjà au } */ } if (!fin) printf("%f%c%f=%f/n",val1,Opéval2,res); } while (!fin); } Correction exercice 10 Nombres premiers (voir document annexe) #include <stdio.h> #include <conio.h> #include <stdlib.h> /* pour div*/
void touche(void) /* attend une touche */ { char c; puts("/ntapez sur une touche"); c=getch(); }
void main() { div_t x; int i,j,max; char nonprem;
puts("Nombre max du calcul : "); scanf("%i",&max); printf("/nCalcul des %i premiers nombres premiers/n 1",max); for(i=3;i<max;i++) { nonprem=0; for(j=2;j<i;j++) { x=div(i,j); if (x.rem==0) /* voir fonction div dans stdlib */ { nonprem++; break; } } if (nonprem==0) printf("%7.i ",i); } touche(); return (0); } Correction exercice 11 Jeux des allumettes #include <stdio.h> #include <conio.h> #include <stdlib.h> /* pour div*/
int nbal,max; char couppc;
void touche(void) /* attend une touche */ { char c; puts("/ntapez sur une touche"); c=getch(); }
void affiche() /* affiche en semi graphique le nombre d'allumettes restant*/ { int i; for(i=1;i<=nbal;i++) { putchar(178); putchar(' '); } putchar('/n'); for(i=1;i<=nbal;i++) { putchar(177); putchar(' '); } putchar('/n'); for(i=1;i<=nbal;i++) { putchar(177); putchar(' '); } putchar('/n'); }
int pc() /* c'est au PC de jouer*/ { int ote,m; affiche(); m=max+1; ote=nbal-(((nbal-1)/m)*m+1); /* tout se joue ici !!!!! */ if (ote<=0) ote=1; printf("J ôte %i allumette",ote); if (ote>1) puts("s"); nbal-=ote; touche(); couppc=1; return(nbal); }
int joueur() /* c'est au joueur de jouer*/ { int ote; affiche(); do { puts("combien ôtez vous d'allumettes ? "); scanf("%i",&ote); } while (ote>max); nbal-=ote; couppc=0; return(nbal); }
void resultat() /* on affiche le vainqueur*/ { affiche(); if (couppc==1) puts("j'ai gagné"); else puts("t'as gagné"); }
main() { clrscr(); puts("/nJeu des allumettes, il ne faut pas prendre la dernière mais au mois une/n) ; puts("Combien d'allumettes au départ"); scanf("%i",&nbal); puts("combien d'allumettes peut on prendre au maximum à chaque tour"); scanf("%i",&max); while((joueur()>1)&&(pc()>1)) ; resultat(); touche(); return(0); }
|
|