Escolar Documentos
Profissional Documentos
Cultura Documentos
INDEX
INDEX ..................................................................................................................2 CHAPITRE I : les variables......................................................................................3 Chapitre II Les structures contrle........................................................................20 Chapitre III Les fonctions.....................................................................................38
Exercice 1.2 :
Ecrire un algorithme qui prend une somme en euros et la dcompose en billets de 10, et en pices de 2 et de 1 .
Spcifications : Taux de conversion : 6.56 Entre : franc = (rel) Sortie : euro = (rel) Stratgie de rsolution : Initialisation des valeurs de conversion Lecture de la conversion Francs Euro Calcul de la valeur Franc Euro Valeur en Euro = Francs / Taux Euro Affichage de la conversion Algorithme conversion en euro variables : euro, franc : rel ; Dbut : crire : (Veuillez saisir la somme a convertir en euro ) lire : (franc) ; euro franc / 6.56 ; crire : (euro) ; Fin
Exercice 1.3 :
Ecrire un algorithme qui prend une somme en euro et la dcompose en billets de 10, et en pices de 2 et de 1.
Spcifications : Entre : somme, reste = (entier) Sortie : b10, p2, p1 = (entier) Stratgie de rsolution : Dclaration valeur euro, billets de 10 euro, pices de 2 euro et pices de 1euro Initialisation des valeurs d'entre Lecture du montant entre Dcomposition de la somme en billets et pices Division de la somme en euro par 10 on obtient le nombre de billet Division du reste par 2 on obtient le nombre de pice de 2 Le reste sera en pice de 1 Affichage du rsultat Algorithme somme decomposee en euro variables : somme, reste : entier ; b10, p2, p1 : entier Dbut : crire : (Veuillez saisir une somme) ; lire : (somme) ; b10 somme DIV 10 ; //DIV division entire reste somme MOD 10 ;// MOD modulo reste de la division p2 reste DIV 2 ; p1 reste MOD 2 ; crire : (b10, p2, p1) ; Fin
I.E.P.S.C.F SECTION: BACHELIER EN INFORMATIQUE ET SYSTMES #include <stdlib.h> #include <stdio.h> /******************************************************************************
Cours d'initiation l'informatique IEPSCF-UCCLE - E.Derasse (2011-2012) Auteurs : Christophe Ebely Gilbert Gomez Version : 18 JANVIER 2012 V 1.0 Exercice:
1.3 Ecrire un algorithme qui prend une somme en euro et la dcompose en billets de 10, et en pices de 2 et de 1. Entres: somme, reste : Entier Sorties: b10, p2, p1 : Entier *******************************************************************************/ int main (int argc, char *argv[]) { int somme, reste; int b10, p2, p1; printf("Veuillez saisir la somme a decomposer\n"); scanf("%d", &somme); b10 = somme / 10; reste = somme %10; p2 = reste / 2; p1 = reste %2; printf("Vous aurez\n %d billet(s) de 10 euro\n %d piece(s) de 2 euro\n %d piece(s) de 1euro\n", b10,p2,p1); return 0; }
Exercice 1.4 :
Trouver les valeurs boolennes prises au cours de lalgorithme suivant.
Spcifications : a = 10 ; b = 4 Entre : a, b = (entier) Sortie : b1,b2,b3,b4 = (boolen) Stratgie de rsolution : Dclaration des variables a et b Initialisation des valeurs Calcul de facture Algorithme calcul de facture variables : a, b : entier ; b1, b2, b3, b4 : booleen ; Dbut : a 10 ; b4 b1 (10>10) ET (5=5) ; b2 (a=10) OU (b=5) OU (3=6) ; b3 (a>b) ET ((5=5) OU (b>a)) ; b4 (FAUX) ET (VRAI) OU (a>b) ; Fin b1 b2 b3 b4 faux et vrai donc b1 FAUX vrai ou faux ou faux donc b2 VRAI vrai et (vrai ou vrai) donc b3 VRAI faux et vrai ou vrai donc b4 VRAI
/******************************************************************************
Cours d'initiation l'informatique IEPSCF-UCCLE - E.Derasse (2011-2012) Auteurs : Christophe Ebely Gilbert Gomez Version : 18 JANVIER 2012 V 1.0 Exercice:
1.4 Trouver les valeurs boolennes Entres: a, b : Entier Sorties: b1, b2, b3, b4 : boolen *******************************************************************************/
int main (int argc, char *argv[]) { int a, b; int b1, b2, b3, b4; a = 10; b = 4; b1 = (10 > 10) && (5 == 5); b2 = (a == 10) || (b == 4) || (3 == 6); b3 = (a>b) && ((5 == 5) || (b < a)); b4 = (0) && (1) || (a>b); if (b1 == 1) { printf("b1 est vrai\n"); } else printf("b1 est faux\n"); if (b2 == 1) { printf("b2 est vrai\n"); } else printf("b2 est faux\n"); if (b3 == 1) { printf("b3 est vrai\n"); } else printf("b3 est faux\n");
Exercice 1.5 :
Faire lire une chane lutilisateur, remplacer le dernier caractre par un s et lafficher.
Spcifications : Entre : mot = chane 25 caractres lg = entier Sortie : mot.modifier = chane 25 caractres Stratgie de rsolution : Lecture du mot Remplacement du dernier caractre par s Affichage du mot modifi Algorithme Remplacer le dernier caractere variables : mot : chaine ; lg : entier ; Dbut : mot new chaine() ; crire : ( Veuillez saisir un mot) ; mot.lire() ; lg mot.longueur ; longueur mot.modiferIeme (lg-1, s) par s nom.ecrire () ; Fin // lg modifie la derniere lettre et remplace //lg prend les caractere du mot et sa
Exercice 1.6 :
Lire une date est afficher si elle est bissextile
Spcifications : Entre : anne = (entier) Sortie : estBissextile = (boolen) Stratgie de rsolution : Dclaration de lanne Condition 1 vrifie que lanne soit divisible par 4 Condition 2 vrifie que lanne soit divisible par 100 Condition 3 vrifie que lanne soit divisible par 400 Bissextile si (condition1) ET ((condition2) OU (condition3)) Algorithme Date bissextile variables : annee : entier ; condition1, condition2, condition3 : booleen Dbut : crire : ( Introduire une annee) ; lire : (annee) ; Si (annee MOD 4 = 0) ET (( annee MOD 100 > 0) OU (annee MOD 400 = 0)) alors crire : ( Lanne est bissextile) ; sinon crire : ( Lanne nest pas bissextile) ; Finsi Fin
Exercice 1.7 :
Dfinir un tableau de 10 rels et changer le premier et le dernier lment.
Spcifications : Entre : tab :tableau[10] = (rel) compteur = (entier) Sortie : tableau[10] = (rel) Stratgie de rsolution : lire le tableau change 1 10 lments premier lment on le sauvegarde dans une variable premier change avec le dernier placer la variable du premier lment au dernier Algorithme Echange premier et dernier element variables : tab : tableau[10] : reels ; temp : reel ; compteur : entier Dbut : pour : (compteur = 0 ; compteur > 10 ; compteur++) ecrire :(Entrez nombre ) ; lire : (nombre[compteur]) ; temp tab[0] ; tab[0] tab[9] ; tab[9] temp ; pour : (compteur = 0 ; compteur > 10 ; compteur++) crire : (le nombre est, compteur+1, tab[compteur]) ; Fin
Exercice 1.8 :
Dfinir un tableau de 6 lments, dont les 3 premiers pointent sur une mme instance de chane de caractres "enfant
Spcifications : Entre : nom : tableau[6] = (chane de caractre) i :compteur = (entier) Sortie : nomchane = (chane de caractre) Stratgie de rsolution : Copie du premier lment dans les deux suivants Algorithme Element qui pointe sur une meme instance variables : nom : tableau[6] chaine ; i :entier ; Dbut : nom[0] enfant ; nom[1] nom[0] ; nom[2] nom[0] ; ecrire : (nom[0], nom[1],nom[2] ) ; Fin
Si l'utilisateur moins de 25 ans et 0 accident tarif orange Sinon Si l'utilisateur moins de 25 ans et 1 ou 2 accidents tarif rouge Sinon Si l'utilisateur moins de 25 ans et 3 ou plus d' accidents pas assur Sinon Si l'utilisateur plus de 25 ans et 0 accident alors vert Sinon Si l'utilisateur plus de 25 ans et 1 ou 2 accidents alors
alors il aura un alors il aura un alors il ne sera il aura un tarif il aura un tarif
Exercice 2.2 :
Vous devez comparer deux offres dabonnement tlphonique. La facture est calcule avec un fixe (somme payer obligatoirement tous les mois) et une partie proportionnelle au temps pass tlphoner (indiqu en minutes).
Offre Telecom1 Telecom2 Spcifications : Entre : tel1, tel2 = (rel) Sortie : minute= (entier) Stratgie de rsolution : Initialisation des valeurs d'entre Enregistrement sous une variable le nombre de minutes appeles par mois. Calculer les deux offres et les comparer Affichage du tarif le plus intressant Algorithme Comparer deux offres telephonique variables : minute : entier ; tel1 , tel2 : reel ; Dbut : ecrire : (Veuillez saisir le nombre de minute(s) consommee(s) ) ; lire : (minute ) ; ecrire : (L offre Telecom1 revient a : , tel1 10 + (minute x 0.50)) ; ecrire : (L offre Telecom2 revient a : , tel2 15 + (minute x 0.42)) ; ecrire : (L offre Telecom1 revient a : , tel1 10 + (minute x 0.50)) ; si : (tel1 < tel2) alors ecrire : (L offre Telecom1 est plusavantageuse ) ; sinon : ecrire : (L offre Telecom2 est plusavantageuse ) ; FINSI Fin Fixe 10 15 Prise la minute 0.50 0.42
Exercice 2.3 :
Complter le tableau suivant reprsentant la correspondance entre les conditions de continuit et les conditions darrt.
Condition darrt
Condition de continuit
Exercice 2.4 :
Ecrire un algorithme qui demande lutilisateur de saisir une sries de nombres entiers entre et 0 et 20 et les stocke dans un tableau de 50 lments. La saisie sarrte si lutilisateur saisit -1 ou si le tableau est complet. Sinon, chaque erreur de saisie, lutilisateur doit recommencer.
Spcifications : Entre : Tableau = tableau [1-50] (Entier) Nombre = compris entre 0 et 20 (Entier) Compteur = 50 (Entier) Condition darrt si nombre = (-1) ou si compteur = 50) Sortie : Il ny a pas de valeur de sortie Stratgie de rsolution : Initialisation des valeurs d'entre On doit crer un tableau de 50 nombres puis un compteur qui commence 0. L'utilisateur saisie un nombre. Vrifier si le nombre est suprieur -1 et infrieur 20 Si c'est le cas le nombre est lu sinon on ressaisit un autre nombre
crire : (Erreur de saisie veuillez introduire une valeur entre 0 et 20 ) ; lire : (nombre ) ; FinTant_que crire : (Merci vous avez rempli le tableau de ses 50 elements ) ; Fin
Exercice 2.5 :
Ecrire un algorithme qui permet de saisir un tableau contenant 3 x 4 dates postrieures au 1 er janvier 2000.
Spcifications : Entre : Tableau = tableau [3][4] (Entier) Sortie : On affiche le tableau remplit (Entier) Stratgie de rsolution : On cre un tableau de 3 x 4. Lutilisateur entre 12 dates une une postrieures au 1er janvier 2000. On affiche les 12 dates saisies par lutilisateur. Algorithme Tableau date posterieures au 1 janvier 2000
Variables : tableau_date [3][4] : entier ; i, j : entier ; Dbut : i0; j0; pour i de 0 a 2 par pas de 1 rpter pour j de 0 a 3 par pas de 1 rpter repeter lire : (tableau_date[i][j] ) tant_que (tableau_date[i][j] < 01012000 ET tableau_date[i][j] > 31129999 ) FinRepeter FinPour FinPour Fin
Variables : ligne,colonne : entier ; jour, mois, annee : entier ; valeur : date ; tableau[0][0] : date ; Dbut : tableau new date[3][4] ; ligne 0 ; colonne 0 ; lire : (jour) ; lire : (mois) ; lire : (annee) ; valeur date(jour,mois,annee) ; tant_que : (ligne < 4) faire tant_que : (colonne < 6)faire tableau[colonne][ligne] valeur ; lire : (jour) ; lire : (mois) ; lire : (annee) ; valeur new date(jour,mois,annee) ; colonne colonne+1 ; FinTant_que ligne ligne+1 ; colonne 0 ; FinTant_que Fin
Exercice 2.6 :
Ecrire un algorithme qui permet dafficher les tables de multiplication de 1 10.
Spcifications : Entre : nbre = (Entier) Sortie : Affichage table de multiplication = (Entier) Stratgie de rsolution : Lutilisateur entre un nombre entre 0 et 10. On affiche la table de multiplication du chiffre saisit. Algorithme Affichage table multiplication
Variables : nbre, i : entier ; Dbut : Faire : i de 0 a 2 par pas de 1 rpter crire : (Veuillez entrer un nombre entre 0 et 10) ; lire : (nbre) ; FinFaire Tant_que (nbr < 0 OU nbre > 10 ) ; Pour : crire : (table de multiplication) ; FinPour Fin
Fonction calculTarif(age, nb :entier) :caractere Variables : type : caractere ; Dbut : crire : (Veuillez saisir votre age ) ; lire : (age) ; crire : (Veuillez saisir le nombre d accident(s) ) ; lire : (accident) ; si (age >= 25 ET nb_acc= 0) alors type Vert sinon si ((age < 25 ET accident = 0) OU (age >= 25 ET (accident <= 2))) alors type Orange sinon si (( age < 25 ET (accident <= 2)) OU (age >= 25 ET (accident <= 6 ))) alors type Rouge sinon type 0 Fin Si retourne type ; Fin //Valeur du type Vert, Orange, Rouge, 0
Fonction lireNombre() : entier ; Variables : nombre : entier ; Dbut : Lire :(nombre) ; tant_que : (nombre < -1 ou nombre > 20) faire { ecrire : (erreur (recommencez)) ; lire :(nombre) ; } retourne (nombre) ; Fin Exercice 2.5 Tableau date posterieures au 1 janvier 2000
Fonction lireDate() : Date Variables : jour, mois, annee : entier valeur, dateMin : Date ; Dbut : dateMin new Date (1,1,2000) ; Lire : (jour) ; Lire : (mois) ; Lire : (anee) ; valeur new Date(jour, mois, annee) ; Tant_que (valeur.precede(dateMine) = vrai ) faire { Lire : (jour) ; Lire : (mois) ; Lire : (anee) ; valeur new Date(jour, mois , annee) ; } retourne valeur ; Fin // retourne la valeur saisie
Exercice 3.2 :
Ecrire une fonction qui retourne le plus grand de deux entiers passs en paramtres.
Spcifications : Entre : 2 nombres dans la fonction = (Entier) Sortie : Affichage la plus grande valeur = (Entier) Stratgie de rsolution : Comparaisons desdeux nombres On retourne le plus grand Pour 3 nombres entiers, On se sert de la fonction pour le max de 2 nombre qui retournera le plus grand et servira comparer avec le 3me. Fonction maxDeux(nombre1 , nombre2 : entier) : entier Dbut : Si (nombre1 < nombre2) maxi nombre2; Sinon maxi nombre1; retourne (nombre) Fin Fonction maxTrois(nombre1 , nombre2, nombre3 : entier) : entier Dbut : retourne ( maxDeux( maxDeux(nombre1, nombre2), nombre3) ); Fin
Exercice 3.3 :
Le jeu de cartes. Ecrire une fonction qui permet de mlanger un jeu de 32 cartes.
Spcifications : Entre : tableau, compteur (Entier) Sortie : tableau= (Entier) Stratgie de rsolution : Chaque carte est reprsente par une valeur allant de 1 32. Un tableau dentiers contenant 32 lments servira pour le jeu. Ayant chaque valeur une seule fois.
Fonction Cptdecartes Variables: cpt: entiers; carte: tableau [ ] d'entiers; Dbut carte new entier (32); cpt 0; Tant que : (cpt < 32) faire carte[compteur] cpt +1; cpt compteur +1; Fin Tant_que Fin Fonction Melanger Variables: temp , carte, cpt : entiers; Dbut carte Random(32); Tant que : (Cpt < 32) faire temp jeu[32-1]; jeu[32-1] jeu[carte]; jeu[carte] temp; carte Random(32) 32 32-1;
FIN
else { if (i == 2) { printf("+---------------------+\n"); printf("| Carte | Position |\n"); printf("+---------------------+\n"); printf("| %d %c | %2d |\n", j+1, val2, carte[i][j]); printf("+---------------------+\n"); } else { printf("+---------------------+\n"); printf("| Carte | Position |\n"); printf("+---------------------+\n"); printf("| %d %c | %2d |\n", j+1, val3, carte[i][j]); printf("+---------------------+\n"); } } } } } }
Exercice 3.4 :
Ecrire une fonction qui affiche un tableau lenvers par une mthode itrative et rcursive. Le tableau et la position du premier lment afficher sont passs en paramtre.
Spcifications : Entre : tableau de nombre = (Entier) Sortie : tableau de nombre invers= (Entier) Stratgie de rsolution : Lutilisateur saisi une srie de nombre On affiche le rsultat invers. Rcursive:
Ecrire(T[i]);
Tableau(T,dernpos-1); retourne; Fin
Fonction
Variable: Dbut:
No <- dernirePosition
Tant que (i>=0) faire Ecrire (T[i]); i i-1; retourne;
Fin
Exercice 3.5 :
Ecrire la fonction Fibonacci en rcursif terminal.
Stratgie de rsolution : Calcul rcursif Un = Un -1 + Un -2 Fonction FibonacciRecursive(nb : entier) : entier Dbut : si (n=0) alors retourne(0); sinon si (n=1) alors retourne(1); sinon retourne(Fibonacci(nb-1) + Fibonacci(nb-2)); Fin
//fibo 0 = 0
//fibo de 1 = 1
Exercice 3.6 :
Ecrire une fonction qui retourne la somme de deux entiers somme(entier, entier) retourne entier et un algorithme qui lutilise.
Spcifications : Entre : a,b = (Entier) Sortie : somme = (Entier) Stratgie de rsolution : Fonction qui calcul la somme de deux entiers Fonction somme (a:entier, b:entier) : entier Dbut: retourne(a+b); Fin Algorithme fonction somme Variables: a, b: entier; Dbut: a 0; b 0; Ecrire (Entrez un nombre); Lire (a); Ecrire (Entrez un nombre); Lire (b); Ecrire (Somme(a+b)); Fin
Exercice 3.7 :
Ecrire un programme qui demande lutilisateur de deviner un nombre entre 1 et 1000. A chaque proposition, le programme indique si le nombre est infrieur ou suprieur celui saisi.
Spcifications : Entre : nombres = (Entier) valeur = (Entier) Sortie : Affichage du nombre trouver = (Entier) Stratgie de rsolution : Lutilisateur saisit un nombre Celui-ci sera introduit dans une boucle Le programme affichera si le nombre est plus grand , plus petit, ou le bon nombre. Fonction plusGrandOuplusPetit Variables: nombre, valeur: Entiers; Dbut nombre Random(1000); Lire :(valeur); Tant que : (nb = valeur) faire Si : (valeur<nb) crire (" le nombre estplus grand"); Sinon : (valeur>nb) crire (" le nombre est plus petit"); Si : (valeur=nombre) Ecrire : ("correct"); Fin
#define TAILLE_MAX 255 /************************************************************************************* Cours d'initiation l'informatique IEPSCF-UCCLE - E.Derasse (2011-2012) Auteurs : Christophe Ebely Gilbert Gomez Version : 18 JANVIER 2012 V 1.2 Exercice: Petite annonce alatoire *************************************************************************************** / int line_counter(char file_name[255]) { //initialize pointer FILE *file = NULL; //strings char line[255] = ""; //variables count int nb_ln; //open file file=fopen(file_name,"r"); //si erreur if (file == NULL) { printf("Erreur : Ouverture du fichier impossible ! \n"); exit(1); } //sinon => ok continue else { nb_ln = 0; while (fgets(line, TAILLE_MAX, file) != NULL) { nb_ln++; } fclose(file); //fermeture du fichier