• Aucun résultat trouvé

Université de Nice-Sophia Antipolis POLYTECH

N/A
N/A
Protected

Academic year: 2022

Partager "Université de Nice-Sophia Antipolis POLYTECH"

Copied!
2
0
0

Texte intégral

(1)

Université de Nice-Sophia Antipolis POLYTECH

Elec3 2018–2019

Examen de Info C

Durée : 1h

Aucun document autorisé

Mobiles interdits Nom : Prénom :

I1. Avec la notation de pointeur, écrivez en C la fonctionsommequi prend en paramètre une chaîne de caractères qui représente un entier naturel et qui renvoie la somme de ses chiffres. Si la chaîne de caractères ne contient pas que des chiffres, la fonction renverra−1. Vous pouvez utiliser la fonctionisdigit, à l’exclusion de toute autre.

/*

* Antécédent :

* Rôle : renvoie la somme des chiffres contenus dans la

* chaîne s. Renvoie -1 si s ne représente pas un naturel

*/

i n t somme (c o n s t char *s) { i f (* s ==’\0 ’) r e t u r n -1;

// s n’est pas vide et contient au moins un caractère i n t som = 0;

do {

i f (! isdigit (* s )) r e t u r n -1;

// le caractère courant est un chiffre => on le somme som += *s -’0 ’;

} w h i l e (*++ s );

// on a parcouru tous les chiffres de la chaîne s r e t u r n som ;

}

. . . . I2. Écrivez en C la procédurecompterqui compte le nombre d’entiers pairs,pa, et impairsimp contenus dans un tableautdenentiers. Le tableau et le nombre d’entiers qu’il contient sont des paramètres « données », et les entierspa, etimpsont des paramètres « résultats ».

/*

* Antécédent : t un tableau entiers

* n nombre d ’ entiers contenus dans t

* Conséquent : pa nombre d ’ entiers pairs de t

* imp nombre d ’ entiers impairs de t

v oi d*/ compter (c o n s t i n t *t , c o n s t i n t n , i n t *pa , i n t * imp ) {

* pa = 0;

* imp = 0;

f o r (i n t i =0; i <n; i ++) i f (( t[i ]&1)==0)

(* pa )++;

e l s e (* imp )++;

}

1

. . . . I 3. Écrivez en C la fonctionmainqui déclare un tableau contenant les entiers−10,8,9,6,12, qui appelle la procédurecompteret qui écrit sur la sortie standard le nombre d’entiers pairs et impairs.

i n t main (v oi d) { i n t pairs , impairs ;

i n t t [] = { -10 , 8, 9, 6, 12};

compter (t , 5, & pairs , & impairs );

printf ("%d %d\n", pairs , impairs );

r e t u r n EXIT_SUCCESS ; }

. . . . I 4. Écrivez en C, un programme qui prend ses données à partir des paramètres programmes. Le

programme pourra être utilisé de deux façons différentes :

— soit avec une suite non vide d’entiers naturels. Le programme affichera leur somme ;

— soit avec l’unique option-h. Le programme affichera un message expliquant ce que fait le programme.

Voici un exemple d’utilisation du programme que nous appelleronssomme:

$ somme 4 20 9 10 43

$ somme -h

Ce programme affiche la somme de ses paramètres

Vous ferez les contrôles nécessaires de vérification de la validité de l’utilisation du programme.

Vous utiliserez exclusivement une notation de pointeur. Sans l’écrire, vous pourrez utiliser la fonctionestUnEntiervue en TD, ainsi que la fonctionatoi.

#i n c l u d e < stdio .h >

#i n c l u d e < stdlib .h >

#i n c l u d e < string .h >

i n t main (i n t argc , char * argv []) { i f ( argc ==1) {

fprintf ( stderr , " Usage :\ tsomme -h\n\ tsomme int ...\ n");

exit ( EXIT_SUCCESS );

}

// il exite au moint un paramètre

i f ( argc ==2 && strcmp (*++ argv , " -h")==0) printf (" Ce programme affiche ...\ n");

e l s e { i n t somme =0;

w h i l e ( argc - - >1) {

i f (! estUnEntier (*++ argv )) {

fprintf ( stderr , " Entier attendu \n");

exit ( EXIT_SUCCESS );

}

// on a bien un entier => on l’ajoute somme += atoi (* argv );

}

// afficher le résultat printf ("%d\n", somme );

} r e t u r n EXIT_SUCCESS ; }

2

(2)

. . . .

3

Références

Documents relatifs

Écrivez de façon itérative la fonction itos qui renvoie la conversion d’un entier positif ou nul passé en paramètre, en sa représentation sous forme d’une chaîne de

Écrivez un programme qui lit sur l’entrée standard une opération arithmétique formée de 2 entiers et d’un caractère ( ’+’ , ’-’ , ’*’ ou ’/’ ) et qui écrit sur

Écrivez la fonction creerFichDates qui lit un fichier de texte contenant la suites d’entiers, et qui crée un fichier de dates valides (de type Date ).. Sans l’écrire, vous

Lors d’un appel de fonction ou de procédure, la transmission par valeur consiste à affecter, après évaluation, la valeur du pa- ramètre effectif à son paramètre formel

Au lieu de retirer, à chaque itération, 1 diviseur au dividende et d’incrémenter de 1 le quotient, le diviseur est multiplié successivement par 2 pour trouver son plus grand

qui prend en paramètre une chaîne de caractères, et qui remplace chaque chiffre par le caractère ’_’ dans celle-ci.. La fonction renvoie un pointeur sur le 1er caractère de

Il est nécessaire d’écrire un destructeur pour libérer explicitement la mémoire occupée par le tableau et les 3 points du triangle

En utilisant, la classe std::ifstream et ses méthodes is_open , get , eof et close , écrivez la classe FileInputStream qui permet de lire un fichier d’octets (et uniquement