• Aucun résultat trouvé

Informatique et Programmation Examen N°1 6 mars 2006 18h-20h

N/A
N/A
Protected

Academic year: 2022

Partager "Informatique et Programmation Examen N°1 6 mars 2006 18h-20h"

Copied!
5
0
0

Texte intégral

(1)

Informatique et Programmation Examen N°1

6 mars 2006 18h-20h

Nom : Prénom :

Nom de la machine : Répertoire de travail : Remarques :

Exercice 1 :

Expliquer ce que fait le programme codechar.c fourni en annexe. Illustrer votre propos avec un exemple.

Exercice 2 :

Le programme div2.c fourni en annexe est destiné à effectuer la division entière de 2 entiers (dividende et diviseur). Ce programme contient plusieurs erreurs de syntaxe et de conception. Identifier ces erreurs et proposer pour chacune une correction.

Exercice 3 :

1) Ecrire un programme tva.c qui demande le montant HT d'un produit et le taux TVA (en pourcentage (19.6 par exemple)) à appliquer et affiche le montant TTC.

Rappel : Montant TTC = Montant HT x (1+ Taux TVA)

A l'issue de cette première question, sauvegarder le fichier tva.c sous le nom tva1.c.

2) Modifier le programme tva.c pour qu'il affiche le montant TTC arrondi au centime le plus proche. Cet arrondi devra être réalisé au moyen d'une fonction nommée "arrondi".

Sauvegarder la nouvelle version du fichier tva.c sous le nom tva2.c.

3) Modifier le programme tva.c pour qu'il demande à la fois les montants HT et TTC et qu'il affiche le Taux TVA avec seulement 1 chiffre après la virgule. On veillera à traiter

correctement le cas où le montant HT est nul.

Sauvegarder la nouvelle version du fichier tva.c sous le nom tva3.c.

4) Modifier le programme pour que si l'un des deux montants est nul, le programme demande à l'utilisateur le taux TVA et affiche dans tous les cas : le montant HT, le taux TVA (en pourcentage avec si possible le caractère " %"), le montant TVA, le montant TTC. Le cas

où les deux montants (HT et TTC) fourni par l'utilisateur sont nuls devra être traité correctement (affichage du message "Impossible de déterminer le Taux TVA" par exemple).

(2)

Annexe

/*************************************

Programme codecar.c

*************************************/

#include <stdio.h>

#include <stdlib.h>

#define DIM 20

int main() {

char ligne[DIM];

int i;

printf("Entrez une ligne de caracteres :\n\n");

for(i=0; i<DIM; ++i) { ligne[i]=getchar();

if(ligne[i]=='\n') break;

}

printf("\nVoici le resultat :\n\n");

for(i=i-1; i>=0; --i) { printf("%c",ligne[i]);

}

printf("\n\n");

}

/*************************************

Programme div2.c

*************************************/

#include <stdio.h>

#include <stdlib.h>

void divint(int dividende, int diviseur, int quotient, int *reste);

int main() {

int dividende,diviseur,quotient,reste,status;

do {

printf("Entrez le dividende et le diviseur : ");

status=scanf("%d %d", &dividende, &diviseur);

} while( status != 0 )

divint(dividende,diviseur, quotient, &reste);

printf("Le quotient est : %d\n",&quotient);

printf("Le reste est : %d\n",&reste);

void divint(int dividende, int diviseur, int quotient, int *reste) { quotient = dividende / diviseur;

*reste = dividende - quotient * diviseur;

}

(3)

Correction

Exercice 1 :

Le programme codecar.c lit une ligne de caractères saisie au clavier. Les caractères sont placés dans un tableau de 20 cases. La lecture s'arrête lors de la détection du caractère de fin de ligne '\n' ou lorsque le tableau est plein. Dans une seconde phase, le programme imprime les différents caractères dans l'ordre inverse.

Exemple : la saisie de "Il fait beau" produit : "uaeb tiaf lI"

Exercice 2 :

Voici le programme corrigé. Les morceaux de code corrigés sont soulignés.

/*************************************

Programme div2.c

*************************************/

#include <stdio.h>

#include <stdlib.h>

void divint(int dividende, int diviseur, int *quotient, int *reste);

int main() {

int dividende,diviseur,quotient,reste,status;

do {

printf("Entrez le dividende et le diviseur : ");

status=scanf("%d %d",&dividende,&diviseur);

} while(status!=2);

divint(dividende,diviseur, &quotient, &reste);

printf("Le quotient est : %d\n", quotient);

printf("Le reste est : %d\n", reste);

}

void divint(int dividende, int diviseur, int *quotient, int *reste) { *quotient = dividende / diviseur;

*reste = dividende - *quotient * diviseur;

}

Exercice 3 :

Voici le programme tva.c final :

/*************************************

Programme tva.c

*************************************/

#include <stdio.h>

#include <math.h>

float arrondi(float montant,int NbDecimales) { int i,rapport=1;

float retval;

// calcul de 10^NbDecimales

for(i=0; i<NbDecimales; ++i) rapport=rapport*10; //

(4)

// Arrondi grace à l'ajout de 0.5

int NbUnites=(int)(montant*rapport+0.5);

// calcul de la valeur flottante arrondie retval=(float)NbUnites/rapport;

//printf("%f -> %f\n",montant,retval);

return retval;

}

void saisie(float *valeur,int NbDecimales) { while(scanf("%f",valeur)!=1) {

printf("Saisie incorrecte ! Recommencez : \n");

fflush(stdin);

}

*valeur=arrondi(*valeur,NbDecimales);

}

int main() {

float montantHT, montantTVA, montantTTC, tauxTVA;

printf("Entrez un montant HT : "); saisie(&montantHT,2);

printf("Entrez un montant TTC : "); saisie(&montantTTC,2);

if(montantHT==0 && montantTTC==0) {

printf("\nImpossible de determiner le Taux TVA !\n");

return 0;

} else if(montantHT!=0 && montantTTC!=0) { if(montantTTC<montantHT) {

printf("\nLe montant TTC doit etre superieur ou egal au montant HT !\n");

return 0;

}

tauxTVA=arrondi(100*((montantTTC/montantHT)-1),1);

} else {

printf("Entrez le taux TVA (%%) : "); saisie(&tauxTVA,1);

if(montantTTC==0) {

montantTTC=arrondi(montantHT*(1+tauxTVA/100),2);

} else { // montantHT==0

montantHT=arrondi(montantTTC/(1+tauxTVA/100),2);

} }

montantTVA=montantTTC-montantHT;

printf("\n");

printf("Montant HT : %8.2f\n",montantHT);

printf("Taux TVA (%%) : %8.2f\n",tauxTVA);

printf("Montant TVA : %8.2f\n",montantTVA);

printf("Montant TTC : %8.2f\n",montantTTC);

return 0;

}

(5)

Références

Documents relatifs

Tester cette fonction au sein d’un petit programme qui permute le tableau constitué des élements suivants : 1 2 3 4 5. Exercice

Reprendre le programme de l'exercice 1 et fixer N à 5 puis traiter le cas où le nombre de caractères est trop important pour la taille du tableau en avertissant l'utilisateur et

Reprendre le programme de l'exercice 2 et trier dans l’ordre croissant les valeurs contenues dans le tableau à l’aide d’une fonction tri(…) qu’on définira. On vérifiera

Reprendre le programme de l'exercice 3 et modifier la fonction de telle manière qu'elle remplisse un tableau reçu en argument (ainsi que sa taille). Les chiffres seront saisis au

Modifier la fonction de l’exercice précédent pour obtenir une fonction recevant un pointeur s à la place du tableau tab (adresse de la case 0 d’un tableau) et retournant

Écrivez un programme qui demande deux nombres réels et qui calcule puis affiche le résultat de leur division entière ainsi que son reste.. Pour cela, on commence par constituer un

A l’équivalence les réactifs ont été introduits dans les proportions stœchiométriques, tous les ions hydroxyde présents ont réagi avec les ions oxonium versés.. Avantages :

o écrire, en respectant les critères d’évaluation, un texte court expliquant l’expression « Voir loin, c’est voir dans le passé », texte qui sera à rendre sur feuille pour