• Aucun résultat trouvé

Rappel : Le corrig´ e n’a d’int´ erˆ et que si l’exercice a ´ et´ e cherch´ e.

N/A
N/A
Protected

Academic year: 2022

Partager "Rappel : Le corrig´ e n’a d’int´ erˆ et que si l’exercice a ´ et´ e cherch´ e."

Copied!
9
0
0

Texte intégral

(1)

Universit´e Cadi Ayyad Ann´ee 2019−2020

Facult´e polydisciplinaire Langage C et Matlab

Safi SMC (S4)

S´ erie 3

Exercice 1

1) ´Ecrire un programme qui lit deux variables au clavier et les affiche dans l’ordre croissant, quitte `a les modifier.

2) ´Ecrire un programme qui lit trois variables au clavier et affiche le maximum des trois.

3) Soit une ´equation du second degr´e ax2+bx+c= 0. ´Ecrire un programme qui lit a, b, c au clavier et affiche les ´eventuelles solutions.

4) ´Ecrire un programme qui lit deux nombres entiers a et b et donne le choix `a l’utilisateur :

• de savoir si la sommea+best paire ;

• de savoir si le produita·best pair ;

• de connaˆıtre le signe de la somme a+b ;

• de connaˆıtre le signe du produita·b.

Exercice 2

Ecrire un programme qui lit N nombres entiers au clavier et qui affiche leur somme, leur produit et leur moyenne. Choisissez un type appropri´e pour les valeurs `a afficher. Le nombre N est `a entrer au clavier. R´esolvez ce probl`eme,

a) en utilisant while, b) en utilisant do - while, c) en utilisant for.

d) Laquelle des trois variantes est la plus naturelle pour ce probl`eme?

Exercice 3

Ecrire un programme qui calculez la factorielleN! = 1·2·3· · ·(N−1)·N d’un entier naturel N en respectant que 0!=1. Le nombre N est `a entrer au clavier.

a) Utilisez while, b) Utilisez for.

Exercice 4

1) ´Ecrire un programme qui calcule parXN de deux entiers naturels X et N entr´es au clavier.

2) ´Ecrire un programme qui calcule la somme des N premiers termes de la s´erie harmonique : 1 +1

2 +1

3 +· · ·+ 1 N Le nombre N est `a entrer au clavier.

3) ´Ecrire un programme qui calcule la somme :

1 + 23+ 33+·+N3 Le nombre N est `a entrer au clavier.

4) Une suite (un)n∈Nest d´efinie par r´ecurrence : u0 = 2 et un+1= 2·√

un+ 1−1 pourn≥0

(2)

Ecrire un programme pour calculer´ un, le nombre n ´etant saisi au clavier.

Exercice 5

1) ´Ecrire un programme qui permet d’afficher `a l’´ecran un triangle isoc`ele form´e d’´etoiles de N lignes (N est fourni au clavier). Par exemple pour N=8 on affichera:

2) ´Ecrire un programme qui permet d’afficher la table de multiplication pour N variant de 1 `a 10 :

(3)

Correction

Rappel : Le corrig´ e n’a d’int´ erˆ et que si l’exercice a ´ et´ e cherch´ e.

Exercice 1 1)

#include<stdio.h>

main() {

int n1, n2, temp; printf(”Entrez deux nombres entiers : ”);

scanf(”%d %d”, &n1, &n2);

if (n1>n2) {

temp = n1;

n1 = n2;

n2 = temp;

}

printf(”Plus petit : %d ; plus grand : %d\n”, n1, n2);

} 2)

#include<stdio.h>

main() {

float a, b, c, max;

printf(”Entrez trois nombres r´eels : ”);

scanf(”%f %f %f”, &a, &b, &c);

if (a<b) max = b;

else max = a;

if (max<c) max = c;

printf(”Le maximum des trois nombres est %f\n”, max);

} 3)

#include<stdio.h>

main() {

float a, b, c, delta, racine1, racine2;

printf(”Entrez a, b et c (ax2+bx+c) : ”);

scanf(”%f %f %f”, &a, &b, &c);

delta = b * b - 4 * a * c;

if (delta == 0.0)

{racine1 = -b / (2 * a);

printf(”Ce polynˆome poss`ede une unique racine x = %f\n”, racine1);

}

if (delta>0.0) {

racine1 = (−b−sqrt(delta))/(2∗a);

racine2 = (−b+sqrt(delta))/(2∗a);

printf(”Ce polynˆome poss`ede deux racines x1 = %f et x2 = %f\n”, racine1, racine2);

}

if (delta<0.0)

printf(”Ce polynˆome ne poss`ede pas de racine r´eelle\n”);

}

(4)

4)

#include<stdio.h>

main() { int a, b;

char choix;

printf(”Entrez deux nombres entiers : ”);

scanf(”%d %d”, &a, &b);

printf(”Tapez\n”);

printf(”1 pour savoir si la somme est paire\n”);

printf(”2 pour savoir si le produit est pair\n”);

printf(”3 pour connaˆıtre le signe de la somme\n”);

printf(”4 pour connaˆıtre le signe du produit\n”);

getchar();

choix = (char) getchar();

switch (choix) {

case ’1’:

if ((a + b) % 2 == 0)

printf(”La somme est paire\n”);

else

printf(”La somme est impaire\n”);

break;

case ’2’:

if ((a * b) % 2 == 0)

printf(”Le produit est pair\n”);

else

printf(”Le produit est impair\n”);

break;

case ’3’:

if (a + b >= 0)

printf(”La somme est positive\n”);

else

printf(”La somme est strictement n´egative\n”);

break;

case ’4’:

if (a * b>= 0)

printf(”Le produit est positif\n”);

else

printf(”Le produit est strictement n´egatif\n”);

break;

default:

printf(”Choix non conforme...\n”);

} }

Exercice 2

a) en utilisant while,

#include<stdio.h>

main() {

int N; // nombre de donn´ees int NOMB; // nombre courant int I; // compteur

long SOM; // la somme des nombres entr´es

(5)

double PROD; // le produit des nombres entr´es printf(”Nombre de donn´ees : ”);

scanf(”%d”, &N);

SOM=0;

PROD=1;

I=1;

while(I<=N)

{ printf(”%d. nombre : ”, I);

scanf(”%d”, &NOMB);

SOM += NOMB;

PROD *= NOMB;

I++;

}

printf(”La somme des %d nombres est %ld\n”, N, SOM);

printf(”Le produit des %d nombres est %.0f\n”, N, PROD);

printf(”La moyenne des %d nombres est %.4f\n”, N, (float)SOM/N);

}

b) en utilisant do - while,

#include<stdio.h>

main() {

int N; // nombre de donn´ees int NOMB; // nombre courant int I; // compteur

long SOM; // la somme des nombres entr´es double PROD; // le produit des nombres entr´es printf(”Nombre de donn´ees : ”);

scanf(”%d”, &N);

SOM=0;

PROD=1;

I=1;

do

{printf(”%d. nombre : ”, I);

scanf(”%d”, &NOMB);

SOM += NOMB;

PROD *= NOMB;

I++;

}

while(I<=N);

printf(”La somme des %d nombres est %ld\n”, N, SOM);

printf(”Le produit des %d nombres est %.0f\n”, N, PROD);

printf(”La moyenne des %d nombres est %.4f\n”, N, (float)SOM/N);

}

c) en utilisant for: remplacez le bloc de traitement do - while de la question pr´ec´edente par : for (I=1 ; I<=N ; I++)

{

printf(”%d. nombre : ”, I);

scanf(”%d”, &NOMB);

SOM += NOMB;

PROD *= NOMB;

}

(6)

d) Laquelle des trois variantes est la plus naturelle pour ce probl`eme?

La structure for est la plus compacte et celle qui exprime le mieux l’id´ee de l’algorithme. D’autre part, elle permet d’int´egrer tr`es confortablement l’initialisation et l’incr´ementation des variables dans la structure.

Exercice 3

#include<stdio.h>

main() {

int N; /* La donn´ee */

int I; /* Le compteur */

double FACT;

/* La factorielle N! - Type double */

/* cause de la grandeur du r´esultat. */

do {

printf(”Entrez un entier naturel : ”);

scanf(”%d”, &N);

}

while (N<0);

/* question a */

/* Pour N=0, le r´esultat sera automatiquement 0!=1 */

I=1;

FACT=1;

while (I<=N) {

FACT∗=I;

I++;

}

/* question b */

/* Si on veut utiliser la boucle for: */

/* Pour N=0, le r´esultat sera automatiquement 0!=1 */

/*

for (I=1 ; I<=N ; I++) FACT∗=I;

*/

printf (”%d! = %.0f\n”, N, FACT);

}

Exercice 4 1)

#include<stdio.h>

main() {

int X, N; /* Les donn´ees */

int I; /* Le compteur */

double RESU; /* Type double `a cause de la */

/* grandeur du r´esultat. */

do {

printf(”Entrez l’entier naturel X : ”);

scanf(”%d”, &X);

(7)

}

while (X<0);

do {

printf(”Entrez l’exposant N : ”);

scanf(”%d”, &N);

}

while (N<0);

/* Pour N=0, le r´esultat sera automatiquement Xˆ0=1 */

RESU=1.0;

for ( I=1 ; I<=N ; I++) RESU*=X;

/* Attention: Pour X=0 et N=0 , 0ˆ0 n’est pas d´efini */

if (N==0 && X==0)

printf(”z´ero exposant z´ero n’est pas d´efini !\n”);

else

printf(”R´esultat : %dˆ%d = %.0f\n”, X, N, RESU);

} 2)

#include<stdio.h>

main() {

int N; /* nombre de termes `a calculer */

int I; /* compteur pour la boucle */

float SOM; /* Type float `a cause de la pr´ecision du r´esultat. */

do {

printf (”Nombre de termes: ”);

scanf (”%d”, &N);

}

while (N<1);

SOM=0.0;

for (I=1 ; I<=N ; I++) SOM += (float)1/I;

printf(”La somme des %d premiers termes est %f \n”, N, SOM);

} 3)

#include<stdio.h>

main() {

int s = 0;

int n;

printf(”Entrez l’entier naturel n : ”);

scanf(”%d”, &n);

while (n >0) {

s = s + n * n * n;

n = n - 1;

}

printf(”La somme des termes positives<=nˆ3 est %d\n”, s);

}

(8)

4)

#include<stdio.h>

main() {

float u = 1.0;

int i;

printf(”Entrez l’entier naturel n : ”);

scanf(”%d”, &n);

for (i = 1; i <= n; i++) u = 2 * sqrt(u + 1) - 1;

printf(”Le terme de rang %d de la suite est ´egale `a %f”, n, u);

}

Exercice 5 1)

#include<stdio.h>

main() {

int LIG; /* nombre de lignes */

int L; /* compteur des lignes */

int ESP; /* nombre d’espaces */

int I; /* compteur des caract`eres */

do {

printf(”Nombres de lignes : ”);

scanf(”%d”, &LIG);

}

while (LIG<1|| LIG>20);

for (L=0 ; L<LIG ; L++) {

ESP = LIG-L-1;

for (I=0 ; I<ESP ; I++) printf(” ”);

for (I=0 ; I<2*L+1 ; I++) printf(”*”);

printf(”\n”);

} }

2)

#include<stdio.h>

main() {

const int MAX = 10; /* nombre de lignes et de colonnes */

int I; /* compteur des lignes */

int J; /* compteur des colonnes */

/* Affichage de l’en-tˆete */

printf(” X*Y I”);

for (J=0 ; J<=MAX ; J++) printf(”%4d”, J);

printf(”\n”);

printf(”− − − − −−”);

(9)

for (J=0 ; J<=MAX ; J++) printf(”− − −−”);

printf(”\n”);

/* Affichage du tableau */

for (I=0 ; I<=MAX ; I++) {

printf(”%3d I”, I);

for (J=0 ; J<=MAX ; J++) printf(”%4d”, I*J);

printf(”\n”);

} }

Références

Documents relatifs

Les fonctions rationnelles (quotient de fonctions polynômes) sont de classe C 1 sur leur intervalle de définition..

inf I ) n’appartient pas `a I d´eterminer la limite de l’int´egrale, si elle existe lorsque b tend vers sup

Existe-t-il une fonction born´ee d´efinie sur [0, 1] qui soit limite de cette suite.. Soit f une application continue de [a, b]

Pour d´ eclarer des variables d’un type non sign´ e, il suffit de faire pr´ ec´ eder le nom du type entier du mot-cl´ e unsigned.. Comme pour la question pr´ ec´ edente,

Pour ne pas perdre de la pr´ ecision lors de la division et pour ´ eviter un d´ epassage du domaine lors du calcul du produit, il faut forcer l’utilisation du type double. En

3 ◦ ) Probl` eme: On dispose de deux tableaux A et B (de dimensions respectives N et M), tri´ es par ordre croissant. Fusionner les ´ el´ ements de A et B dans un troisi` eme

4 ◦ ) ´ Ecrire une fonction C qui d´ etermine le signe de la d´ eriv´ ee seconde de f en fonction

Soit µ diable la mesure sur [0, 1] d´efinie comme ´etant la mesure de Stieljes associ´ee `a f diable.. Montrer que µ diable est ´etrang`ere par rapport `a la mesure