Vous êtes sur la page 1sur 65

I.E.P.S.C.

F SECTION: BACHELIER EN INFORMATIQUE ET SYSTMES

INITIATION A LA PROGRAMMATION RAPPORT N 1


Par: EBELY Christophe Gilbert Gomez Feliz

Professeur: DERASSE ric

Anne acadmique 2011-2012

I.E.P.S.C.F SECTION: BACHELIER EN INFORMATIQUE ET SYSTMES

INDEX
INDEX ..................................................................................................................2 CHAPITRE I : les variables......................................................................................3 Chapitre II Les structures contrle........................................................................20 Chapitre III Les fonctions.....................................................................................38

Professeur: DERASSE ric

Anne acadmique 2011-2012

I.E.P.S.C.F SECTION: BACHELIER EN INFORMATIQUE ET SYSTMES

CHAPITRE I : les variables


Exercice 1.1 :
Indiquer les valeurs prises par lalgorithme suivant.
Spcifications : Entre : valeur = (rel) nombre = (entier) Sortie : prixHT = (rel) prixTTC = (rel) Stratgie de rsolution : Initialisation des valeurs d'entre valeur, nombre, prixHT et prixTTc Calcul prixHT et TTC (prixHT x Qte) x 1.196 Rsultat prixTTc Algorithme calcul de facture variables : valeur, prixHT, prixTTc : rel ; nombre : entier ; Dbut : valeur 7,50 nombre 4 prixHT nombre x valeur crire : (prixHT) PrixTTC prixHT x 1,196 crire : (prixTTC) Fin

Professeur: DERASSE ric

Anne acadmique 2011-2012

I.E.P.S.C.F SECTION: BACHELIER EN INFORMATIQUE ET SYSTMES


#include <stdlib.h> #include <stdio.h> #define TVA 1.196 / *************************************************************************************** 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.1 - Indiquer les valeurs prises par les variables au cours de l'algorithme. Entres: valeur, prixHT, prixTTC : Rel Sorties: nombre : Entier *************************************************************************************** / int main (int argc, char *argv[]) { double valeur, prixHT, prixTTC; int nombre; valeur = 7.50 ; nombre = 4 ; prixHT = nombre * valeur ; printf ("le prix hors taxe est de : %.2f\n", prixHT); prixTTC = prixHT * TVA ; printf ("le prix tout taxe comprise est de : %.2f\n", prixTTC); return 0; }

Professeur: DERASSE ric

Anne acadmique 2011-2012

I.E.P.S.C.F SECTION: BACHELIER EN INFORMATIQUE ET SYSTMES

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

Professeur: DERASSE ric

Anne acadmique 2011-2012

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.2 Ecrire un algorithme qui effectue la conversion de francs en euro (1 = 6.56 francs). Entres: franc : Rel Sorties: euro : Rel *************************************************************************************** / int main (int argc, char *argv[]) { float euro, franc; printf ("veuillez saisir la somme a convertir en Euro\n"); scanf ("%f", &franc); euro = franc / 6.56; printf ("Somme en franc : %.2f\nSomme converti en euro : %.2f\n", franc,euro); return 0; }

Professeur: DERASSE ric

Anne acadmique 2011-2012

I.E.P.S.C.F SECTION: BACHELIER EN INFORMATIQUE ET SYSTMES

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

Professeur: DERASSE ric

Anne acadmique 2011-2012

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; }

Professeur: DERASSE ric

Anne acadmique 2011-2012

I.E.P.S.C.F SECTION: BACHELIER EN INFORMATIQUE ET SYSTMES

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

Professeur: DERASSE ric

Anne acadmique 2011-2012

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.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");

Professeur: DERASSE ric

Anne acadmique 2011-2012

I.E.P.S.C.F SECTION: BACHELIER EN INFORMATIQUE ET SYSTMES


if (b4 == 1) { printf("b4 est vrai\n"); } else printf("b4 est faux\n"); return 0; }

Professeur: DERASSE ric

Anne acadmique 2011-2012

I.E.P.S.C.F SECTION: BACHELIER EN INFORMATIQUE ET SYSTMES

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

Professeur: DERASSE ric

Anne acadmique 2011-2012

I.E.P.S.C.F SECTION: BACHELIER EN INFORMATIQUE ET SYSTMES


#include <stdio.h> #include <stdlib.h> #include <string.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.5 - Remplacer le dernier caractre Entres: mot : chane de caractre [25] lg : entier Sorties: mot modifier : chane de caractre *************************************************************************************** / int main (int argc, char *argv[]) { int lg; char mot[25]; printf("Veuillez sasir un mot:\n"); scanf("%s", &mot); lg = strlen(mot); lg = lg -1; mot[lg] = 's'; printf("\nVotre mot modifie : %s\n", mot); return 0; }

Professeur: DERASSE ric

Anne acadmique 2011-2012

I.E.P.S.C.F SECTION: BACHELIER EN INFORMATIQUE ET SYSTMES

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

Professeur: DERASSE ric

Anne acadmique 2011-2012

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.6 - Lire une date afficher si elle bissextile Entres: anne : entier; Sorties: bissextile : boolen; *************************************************************************************** / int main (int argc, char *argv[]) { int annee; printf ("Introduire une annee\n"), scanf("%d", &annee); if ((annee %4 == 0) && ((annee %100 > 0) ||(annee %400 == 0))) { printf("\n%d est une annee bissextile\n", annee); } else printf("%d n'est pas une annee bissextile\n", annee); return 0; }

Professeur: DERASSE ric

Anne acadmique 2011-2012

I.E.P.S.C.F SECTION: BACHELIER EN INFORMATIQUE ET SYSTMES

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

Professeur: DERASSE ric

Anne acadmique 2011-2012

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.7 - Dfinir un tableau de 10 rels et changer le premier et le dernier lment. Entres: compteur : entier ; tab : tableau[10] : reel ; temp : reel ; Sorties: tab :tableau[10] : reel ; *************************************************************************************** / int main (int argc, char *argv[]) { int compteur; double temp; float tab[10]; for (compteur = 0 ; compteur < 10 ; compteur++) { printf("Entrer le %d nombre: \n", compteur+1); scanf("%f", &tab[compteur]); } temp=tab[0] ; tab[0]=tab[9] ; tab[9]=temp; for (compteur = 0 ; compteur < 10 ; compteur++) { printf("Le %d nombre est: %.0f\n", compteur+1, tab[compteur]); } return 0; }

Professeur: DERASSE ric

Anne acadmique 2011-2012

I.E.P.S.C.F SECTION: BACHELIER EN INFORMATIQUE ET SYSTMES

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

Professeur: DERASSE ric

Anne acadmique 2011-2012

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.8 - Lire une date afficher si elle bissextile Entres: nom[6] : chaine ; i : entier ; Sortie : nomchaine : chaine de caractere ; *************************************************************************************** **/ int main (int argc, char *argv[]) { char nom[] = "enfant"; char nom1[7]; char nom2[7]; int i; for(i = 0; i < 7; i++) { nom1[i] = nom[i]; nom2[i] = nom[i]; } printf("%s\n%s\n%s\n", nom, nom1,nom2); return 0; }

Professeur: DERASSE ric

Anne acadmique 2011-2012

I.E.P.S.C.F SECTION: BACHELIER EN INFORMATIQUE ET SYSTMES

Chapitre II Les structures contrle


Exercice 2.1 :
Une assurance propose trois tarifs (vert, orange et rouge) selon lge et le nombre daccidents des automobilistes. Ecrire un algorithme qui affiche le tarif aprs avoir saisi lge et le nombre daccidents dun automobiliste.
Accident 0 1 ou 2 36 7 et + Spcifications : Entre : age = (entier) accident = (entier) Sortie : Affichage du tarif =(caractre) Stratgie de rsolution : Initialisation des valeurs d'entre L'utilisateur rentre son ge ainsi que le nombre d'accidents subt s'il y a lieu. Test des tarifs en fonction du tableau de conditions : Affichage du tarif assurance suivant les conditions de l'utilisateur Moins de 25 ans Orange Rouge Pas assur Pas assur 25 ans et plus Vert Orange Rouge Pas assur

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

Professeur: DERASSE ric

Anne acadmique 2011-2012

I.E.P.S.C.F SECTION: BACHELIER EN INFORMATIQUE ET SYSTMES


orange Sinon Si l'utilisateur plus de 25 ans et 3 ou 6 accidents rouge Sinon Si l'utilisateur plus de 25 ans et 7 ou plus d' accidents assur Algorithme Tarif assurance variables : age, accident : entier ; 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 crire : (Vous avez le droit au tarif Vert ) ; sinon si ((age < 25 ET accident = 0) OU (age >= 25 ET (accident <= 2))) alors crire : (Vous avez le droit au tarif Orange ) ; sinon si (( age < 25 ET (accident <= 2)) OU (age >= 25 ET (accident <= 6 ))) alors crire : (Vous avez le droit au tarif Rouge ) ; sinon crire : (Desoler nous ne pouvons pas nous assurer. ) ; Fin Si Fin alors il aura un tarif alors il ne sera pas

Professeur: DERASSE ric

Anne acadmique 2011-2012

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: 2.1 - Lire une date afficher si elle bissextile Entres: age, accident : entier ; Sortie : Affichage du tarif ; *************************************************************************************** **/ int main (int argc, char * argv[]) { int age,accident; do { printf("Veuillez saisir votre age superieur a 15 ans:\n"); scanf("%ld", &age); printf ("Veuillez saisir le nombre d accident(s) :\n"); scanf ("%ld", &accident); } while (age < 16 || accident < 0); if (age >= 25 && accident == 0) { printf("Vous avez le droit au tarif Vert !!!\n\n"); } else if ((age < 25 && accident ==0) || (age >= 25 && accident <= 2)) { printf("Vous avez le droit au tarif Orange !!!\n\n"); }

Professeur: DERASSE ric

Anne acadmique 2011-2012

I.E.P.S.C.F SECTION: BACHELIER EN INFORMATIQUE ET SYSTMES


else if ((age < 25 && accident <= 2) || (age >= 25 && accident <= 6)) { printf("Vous avez le droit au tarif Rouge !!!\n\n"); } else { printf("Desoler nous ne pouvons pas vous assurer !!!\n\n"); } return 0; }

Professeur: DERASSE ric

Anne acadmique 2011-2012

I.E.P.S.C.F SECTION: BACHELIER EN INFORMATIQUE ET SYSTMES

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

Professeur: DERASSE ric

Anne acadmique 2011-2012

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: 2.2 - Vous dsirez 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). Entres : tel1 , tel2 : reel ; Sortie : minute : entier ; *************************************************************************************** **/ int main (int argc, char argv[]) { float tel1, tel2; int min; printf("Veuillez saisir le nombre de minute(s) consommee(s)\n\n"); scanf("%d",&min); printf("\nL offre Telecom1 revient a : %.2f Euro par mois !!!\n\n", tel1 = 10 + (min*0.50)); printf("L offre Telecom2 revient a : %.2f Euro par mois !!!\n\n", tel2 = 15 + (min*0.42)); if (tel1< tel2) { printf("L offre Telecom1 est plus avantageuse...\n"); } else printf("L offre Telecom2 est plus avantageuse...\n"); return 0; }

Professeur: DERASSE ric

Anne acadmique 2011-2012

I.E.P.S.C.F SECTION: BACHELIER EN INFORMATIQUE ET SYSTMES

Exercice 2.3 :
Complter le tableau suivant reprsentant la correspondance entre les conditions de continuit et les conditions darrt.

Condition darrt

Condition de continuit

Logique darrt Logique de continuit

Professeur: DERASSE ric

Anne acadmique 2011-2012

I.E.P.S.C.F SECTION: BACHELIER EN INFORMATIQUE ET SYSTMES

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

Professeur: DERASSE ric

Anne acadmique 2011-2012

I.E.P.S.C.F SECTION: BACHELIER EN INFORMATIQUE ET SYSTMES


Algorithme Saisie suite de nombre entre 0 et 20 variables : nombre, compteur : entier ; tableau[50] : entier ; Dbut : compteur 0 ; tant_que : ( tableau[compteur] = nombre ; compteur = compteur +1 ; crire : (Veuillez saisir un nombre entre 0 et 20 , compteur) ; lire : (nombre ) ; tant_que : ( ) faire ) faire

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

Professeur: DERASSE ric

Anne acadmique 2011-2012

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: 2.4 On demande lutilisateur de saisir une srie de nombres entiers entre 0 et 20 et les stocke dans un tableau de 50 lments Entres : nombre, compteur : entier tableau[50] : entier Sortie : *************************************************************************************** **/ int main (int argc, char*argv) { int nombre,compteur; int tableau[50]; compteur = 0; while (nombre != -1 && compteur !=50) { tableau[compteur] = nombre; compteur = compteur+1; printf("\n%2.d : veuillez saisir un nombre entre 0 et 20 !!! ==> ", compteur); scanf("%d", &nombre); while (nombre < 0 || nombre > 20) { printf("\n!!! Erreur de saisi : veuillez introduire une valeur comprise entre 0 et 20 !!! \n\n"); scanf("%d", &nombre); } } printf("\n-----------------------------------------------------------------\n"); printf(" -=- Merci vous avez rempli le tableau de ses 50 elements -=-"); printf("\n-----------------------------------------------------------------\n"); return 0; }

Professeur: DERASSE ric

Anne acadmique 2011-2012

I.E.P.S.C.F SECTION: BACHELIER EN INFORMATIQUE ET SYSTMES

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

Professeur: DERASSE ric

Anne acadmique 2011-2012

I.E.P.S.C.F SECTION: BACHELIER EN INFORMATIQUE ET SYSTMES


Algorithme Tableau date posterieures au 1 janvier 2000

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

Professeur: DERASSE ric

Anne acadmique 2011-2012

I.E.P.S.C.F SECTION: BACHELIER EN INFORMATIQUE ET SYSTMES


#include <stdio.h> #include <stdlib.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: 2.5 Ecrire un algorithme qui permet de saisir un tableau 3 x 4 dates postrieures au 1er janvier 2000 Entre : Tableau = tableau [3][4] :Entier Sortie : On affiche le tableau remplit : Entier *************************************************************************************** / void afficher(int tableau[][4], int tailleI, int tailleJ); int main(int argc, char** argv) { int tableau[3][4]; int i, j; for (i = 0; i < 3; i++) { for (j = 0; j < 4; j++) { do { printf("\n%d.%d.Veuillez entrer une date entre le 01 01 2000 et le 31 12 9999 :", i+1, j+1); scanf("%d", &tableau[i][j]); } while (tableau[i][j] > 31129999 || tableau[i][j] < 01012000); } } afficher(tableau, 3, 4); return 0; }

Professeur: DERASSE ric

Anne acadmique 2011-2012

I.E.P.S.C.F SECTION: BACHELIER EN INFORMATIQUE ET SYSTMES


void afficher(int tableau[][4], int tailleI, int tailleJ) { int i, j; for (i = 0; i < tailleI; i++) { for (j = 0; j < tailleJ; j++) { printf("| %8d ", tableau[i][j]); } printf("|\n"); } }

Professeur: DERASSE ric

Anne acadmique 2011-2012

I.E.P.S.C.F SECTION: BACHELIER EN INFORMATIQUE ET SYSTMES


#include <stdio.h> #include <stdlib.h> /************************************************************************************* Cours d'initiation l'informatique IEPSCF-UCCLE - E.Derasse (2011-2012) Auteurs : Christophe Ebely Gilbert Gomez Version : 18 JANVIER 2012 V 1.1 Exercice: 2.5 un tableau 3 x 4 dates postrieures au 1er janvier 2000 Entre : Tableau = T1[3][4] :Entier Lig, Col : Entier Sortie : On affiche le tableau remplit : Entier *************************************************************************************** / int main(int argc, char *argv[]) { int T1[3][4]; /* tableau 2 dimensions */ int Lig, Col; /* dimensions */ int I, J; /* indices courants */ Lig = 3; Col = 4; /* Saisie des donnes */ printf("Saisir une date posterieur a 01012000 : "); for (I=0; I<Lig; I++) for (J=0; J<Col; J++) { printf("\ndate[%d][%d] : ",I,J); scanf("%d", &T1[I][J]); } /* Affichage du tableau 2-dim */ printf("\nTableau de date :\n"); for (I=0; I<Lig; I++) { for (J=0; J<Col; J++) printf("%9d", T1[I][J]); printf("\n"); } /* Transfer des lments ligne par ligne */ for (I=0; I<Lig; I++) for (J=0; J<Col; J++) T1[I][J]; return 0;

Professeur: DERASSE ric

Anne acadmique 2011-2012

I.E.P.S.C.F SECTION: BACHELIER EN INFORMATIQUE ET SYSTMES


}

Professeur: DERASSE ric

Anne acadmique 2011-2012

I.E.P.S.C.F SECTION: BACHELIER EN INFORMATIQUE ET SYSTMES

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

Professeur: DERASSE ric

Anne acadmique 2011-2012

I.E.P.S.C.F SECTION: BACHELIER EN INFORMATIQUE ET SYSTMES


#include <stdio.h> #include <stdlib.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: 2.6 Affichage des tables de multiplication 1 10 Entres: nbre : entier Sorties: rsultat de la multiplication :entier ***********************************************************************/ int main(int argc, char * argv[]) { int nbre, i; do { } while (nbre < 0 || nbre > 10 ); for (i = 0; i < 10; i++) // boucle qui multiplie et affiche le nombre { printf("\n%d X %2d = %d\n", nbre, i+1, nbre*(i+1)); } return 0; } // nombre multiplier printf(" Veuillez entrer un nombre entre 0 et 10 : \n"); scanf("%d", &nbre);

Professeur: DERASSE ric

Anne acadmique 2011-2012

I.E.P.S.C.F SECTION: BACHELIER EN INFORMATIQUE ET SYSTMES

Chapitre III Les fonctions


Exercice 3.1 :
Reprendre les exercices du chapitre 2 et introduire les fonctions utiles.
Exercice 2.1 Tarif assurance

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

Professeur: DERASSE ric

Anne acadmique 2011-2012

I.E.P.S.C.F SECTION: BACHELIER EN INFORMATIQUE ET SYSTMES


Exercice 2.4 Saisie suite de nombre entre 0 et 20

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

// retourne la valeur saisie

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

Professeur: DERASSE ric

Anne acadmique 2011-2012

I.E.P.S.C.F SECTION: BACHELIER EN INFORMATIQUE ET SYSTMES

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

Professeur: DERASSE ric

Anne acadmique 2011-2012

I.E.P.S.C.F SECTION: BACHELIER EN INFORMATIQUE ET SYSTMES


#include <stdio.h> #include <stdlib.h> // nombre d'entiers qu'on desire entrer et comparer #define nombre_entiers 3 / *************************************************************************************** Cours d'initiation l'informatique IEPSCF-UCCLE - E.Derasse (2011-2012) Auteur(s) : Christophe Ebely Gilbert Gomez Feliz Version : 18 JANVIER 2012 V 1.0 Exercice: 3.2 - Ecrire une fonction qui retourne le plus grand de deux entiers passss en paramtres. Entre : 2 nombres dans la fonction : entier Sortie : Affichage la plus grande valeur : entier *************************************************************************************** / void tri(int nombre[]); int main (int argc,const char*argv[]) { int nombre[nombre_entiers] = {0}; int i, nombre_plus_grand; for (i = 0; i < nombre_entiers; i++) { printf("Veuillez entrer le %d nombre : ", i+1); scanf("%d", &nombre[i]); } tri(nombre); printf("%d est plus grand que ", nombre[0]); for (i = 1; i < nombre_entiers; i++) { if (i < (nombre_entiers - 1)) { printf("%d qui est plus grand que ", nombre[i]); } else { printf("%d. \n", nombre[i]); }

Professeur: DERASSE ric

Anne acadmique 2011-2012

I.E.P.S.C.F SECTION: BACHELIER EN INFORMATIQUE ET SYSTMES


}

Professeur: DERASSE ric

Anne acadmique 2011-2012

I.E.P.S.C.F SECTION: BACHELIER EN INFORMATIQUE ET SYSTMES


return 0; } void tri(int nombre[]) { int temp, i, j; for (j = 0; j < nombre_entiers-1; j++) { for (i = 0; i < nombre_entiers-1; i++) { if (nombre[i] < nombre[i+1]) { temp = nombre[i]; nombre[i] = nombre[i+1]; nombre[i+1] = temp; } } } }

Professeur: DERASSE ric

Anne acadmique 2011-2012

I.E.P.S.C.F SECTION: BACHELIER EN INFORMATIQUE ET SYSTMES

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

Professeur: DERASSE ric

Anne acadmique 2011-2012

I.E.P.S.C.F SECTION: BACHELIER EN INFORMATIQUE ET SYSTMES


#include <stdio.h> #include <stdlib.h> #include <time.h> #define val 3 #define val1 4 #define val2 5 #define val3 6 // Definit Code ASCII affiche 3(coeur) 4(carreau) 5(trefle) 6(pique) #define T_I 4 #define T_J 8 #define T_CARTE (T_I * T_J) // Definit le nombre de carte et de couleur. // TAILLE_I le nombre de couleur multiplier par TAILLE_J le nombre de carte / *************************************************************************************** Cours d'initiation l'informatique IEPSCF-UCCLE - E.Derasse (2011-2012) Auteur(s) : Christophe Ebely Gilbert Gomez Feliz Version : 18 janvier 2012 V 1.0 Exercice: 3.3 - Mlanger un jeu de 32 cartes. *************************************************************************************** / void afficher(int tabl_carte[][T_J]); int main () { int i, j, temp; int carte [T_I][T_J]; int *position; const MIN = 1, MAX = T_CARTE; srand(time(NULL)); position = malloc(T_CARTE * sizeof(int)); for(i = 0; i < MAX; i++) { position[i] = i + 1; } for(i = 0; i < T_I; i++) { for(j = 0; j < T_J; j++) {

Professeur: DERASSE ric

Anne acadmique 2011-2012

I.E.P.S.C.F SECTION: BACHELIER EN INFORMATIQUE ET SYSTMES


do { temp = (rand() % (MAX - MIN + 1)) + MIN; } while (position[temp] == 0); carte[i][j] = temp; position[temp] = 0; } } afficher(carte); free(position); return 0; } void afficher(int carte[][T_J]) { int i, j; for(i = 0; i < T_I; i++) { for(j = 0; j < T_J; j++) { if (i == 0) { printf("+---------------------+\n"); printf("| Carte | Position |\n"); printf("+---------------------+\n"); printf("| %d %c | %2d |\n", j+1, val, carte[i][j]); printf("+---------------------+\n"); } else { if (i == 1) { printf("+---------------------+\n"); printf("| Carte | Position |\n"); printf("+---------------------+\n"); printf("| %d %c | %2d |\n", j+1, val1, carte[i][j]); printf("+---------------------+\n"); }

Professeur: DERASSE ric

Anne acadmique 2011-2012

I.E.P.S.C.F SECTION: BACHELIER EN INFORMATIQUE ET SYSTMES

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"); } } } } } }

Professeur: DERASSE ric

Anne acadmique 2011-2012

I.E.P.S.C.F SECTION: BACHELIER EN INFORMATIQUE ET SYSTMES

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:

Fonction AffTab(T: tableau [ ]d'entiers,dernpos:Entier):vide


Variables: Dbut: i dernpos; Si (dernpos < 0) alors retourne; i:Entiers;

Ecrire(T[i]);
Tableau(T,dernpos-1); retourne; Fin

Professeur: DERASSE ric

Anne acadmique 2011-2012

I.E.P.S.C.F SECTION: BACHELIER EN INFORMATIQUE ET SYSTMES


Itrative

Fonction
Variable: Dbut:

AffTab(T: tableau [ ]d'entiers,dernirePosition:Entier):vide i: Entiers;

No <- dernirePosition
Tant que (i>=0) faire Ecrire (T[i]); i i-1; retourne;

Fin

Professeur: DERASSE ric

Anne acadmique 2011-2012

I.E.P.S.C.F SECTION: BACHELIER EN INFORMATIQUE ET SYSTMES


#include <stdio.h> #include <stdlib.h> /************************************************************************* Cours d'initiation l'informatique IEPSCF-UCCLE - E.Derasse (2011-2012) Auteur(s) : Christophe Ebely Gilbert Gomez Feliz Version : 18 janvier 2012 V 1.0 Exercice: 3.4 - Fonction qui affiche un tableau par une mthode itrative et rcursive. Entres: tableau de nombres. Sorties: tableau de nombres en sens inverse. **************************************************************************/ void remplir_tab(int tableau[],int taille_tab); void inverse_tab(int tableau[],int taille_tab,int i); void afficher_tab(int tableau[],int taille_tab); int main () { int i, taille_tab; int *tableau; do { printf("Combien de paires de nombres sohaitez-vous afficher [0-10]: "); scanf("%d", &taille_tab); } while ((taille_tab < 0 || taille_tab > 100) || (taille_tab % 2 != 0)); tableau = malloc(taille_tab * sizeof(int)); remplir_tab(tableau, taille_tab); for (i = 0; i < (taille_tab/2); i++) { inverse_tab(tableau, taille_tab, i); } afficher_tab(tableau, taille_tab); return 0; }

Professeur: DERASSE ric

Anne acadmique 2011-2012

I.E.P.S.C.F SECTION: BACHELIER EN INFORMATIQUE ET SYSTMES


void remplir_tab(int tableau[],int taille_tab) { int i; for (i = 0; i < taille_tab; i++) { printf("Veuillez entrer le %d nombre : ", i+1); scanf("%d", &tableau[i]); } } void inverse_tab(int tableau[],int taille_tab,int i) { int temp; temp = tableau[i]; tableau[i] = tableau[taille_tab -1 - i]; tableau[taille_tab -1 - i] = temp; } void afficher_tab(int tableau[],int taille_tab) { int i; for (i = 0; i < taille_tab; i++) { printf("| %d |", tableau[i]); } }

Professeur: DERASSE ric

Anne acadmique 2011-2012

I.E.P.S.C.F SECTION: BACHELIER EN INFORMATIQUE ET SYSTMES

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

Professeur: DERASSE ric

Anne acadmique 2011-2012

I.E.P.S.C.F SECTION: BACHELIER EN INFORMATIQUE ET SYSTMES


#include <stdio.h> #include <stdlib.h> / *************************************************************************************** Cours d'initiation l'informatique IEPSCF-UCCLE - E.Derasse (2011-2012) Auteur(s) : Christophe Ebely Gilbert Gomez Feliz Version : V 1.0 Exercice: 3.5 - Ecrire la fonction Fibonacci en rcursif terminal *************************************************************************************** / int fibo(int nombre) { int resultat; if(nombre==0) { resultat=0; } else if(nombre==1) { resultat=1; } else { resultat = fibo(nombre-1) + fibo(nombre-2) ; } return(resultat); } int main() { int nombre,i; printf("veuillez entrer la taille de la suite : "); scanf("%i", &nombre); for(i=0;i<nombre;i++) { printf("%i \t | ",fibo(i)); }

//fibo 0 = 0

//fibo de 1 = 1

Professeur: DERASSE ric

Anne acadmique 2011-2012

I.E.P.S.C.F SECTION: BACHELIER EN INFORMATIQUE ET SYSTMES


return 0; }

Professeur: DERASSE ric

Anne acadmique 2011-2012

I.E.P.S.C.F SECTION: BACHELIER EN INFORMATIQUE ET SYSTMES

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

Professeur: DERASSE ric

Anne acadmique 2011-2012

I.E.P.S.C.F SECTION: BACHELIER EN INFORMATIQUE ET SYSTMES


#include <stdio.h> #include <stdlib.h> /************************************************************************* Cours d'initiation l'informatique IEPSCF-UCCLE - E.Derasse (2011-2012) Auteur(s) : Christophe Ebely Gilbert Gomez Feliz Version : 18 janvier 2012 V 1.0 Exercice: 3.6 - Fonction qui retourne la somme de deux entiers. Entres: a, b : entier. Sorties: Somme a + b : entier. **************************************************************************/ int main(int argc, char *argv[]) { int resultat = 0, a = 0, b = 0; // On demande les nombres a et b : printf("Entrez le premier nombre : "); scanf("%d", &a); printf("\nEntrez le second nombre : "); scanf("%d", &b); // On fait le calcul : resultat = a + b; // Et on affiche l'addition l'cran : printf ("\n%d + %d = %d\n", a, b, resultat); return 0; }

Professeur: DERASSE ric

Anne acadmique 2011-2012

I.E.P.S.C.F SECTION: BACHELIER EN INFORMATIQUE ET SYSTMES

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

Professeur: DERASSE ric

Anne acadmique 2011-2012

I.E.P.S.C.F SECTION: BACHELIER EN INFORMATIQUE ET SYSTMES


#include <stdio.h> #include <stdlib.h> #include <time.h> /************************************************************************* Cours d'initiation l'informatique IEPSCF-UCCLE - E.Derasse (2011-2012) Auteur(s) : Christophe Ebely Gilbert Gomez Feliz Version : 18 janvier 2012 V 1.0 Exercice: 3.7 - Deviner un nombre entre 1 et 1000. Entres: nombre, valeur : entier. Sorties: resultat : entier. **************************************************************************/ int main ( int argc, char** argv ) { int valeur = 0, nombre = 0; const int MAX = 1000, MIN = 1; // Gnration du nombre alatoire srand(time(NULL)); valeur = (rand() % (MAX - MIN + 1)) + MIN /* La boucle du programme. Elle se rpte tant que l'utilisateur n'a pas trouv le nombre mystre */ do { // On demande le nombre printf("Saisir le nombre a trouver ? "); scanf("%d", &nombre); // On compare le nombre entr avec le nombre mystre if (valeur > nombre) printf("C'est plus !\n\n"); else if (valeur < nombre) printf("C'est moins !\n\n"); else printf ("Bravo, vous avez trouve le nombre mystere !!!\n\n"); } while (nombre != valeur); return 0; }

Professeur: DERASSE ric

Anne acadmique 2011-2012

I.E.P.S.C.F SECTION: BACHELIER EN INFORMATIQUE ET SYSTMES

Petite annonce alatoire :


Elaborer alatoirement des petites annonces contenant, un demandeur, une demande, un objet de la demande, un tat, une raison de la vente. Utilisera une fonction alatoire pour choisir les lments de lannonce.
#include <stdio.h> #include <stdlib.h> #include <time.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: Petite annonce alatoire ************************************************************************************** */ int objet() { int nbaleatoire; nbaleatoire = (rand() % 8) + 0; return nbaleatoire; } int statuts() { int nbaleatoire2; nbaleatoire2 = (rand() % 8) + 0; return nbaleatoire2; } int main () { srand ( time(NULL) ); char *tabstatut[]= { "Monsieur", "Madame", "Mademoiselle", "Adolescent", "Plombier", "Electricien", "Informaticien", "Agriculteur", };

Professeur: DERASSE ric

Anne acadmique 2011-2012

I.E.P.S.C.F SECTION: BACHELIER EN INFORMATIQUE ET SYSTMES


char *tabaction[]= { "vend", "achete", "loue", "recherche", "echange", "rencontre", "propose","repare", }; char *tabobjet[]= { "une voiture", "un portable", "une maison", "un ecran", "un tracteur", "moto", "ordinateur", "velo", }; char *tabetatobjet[]= { "utilse", "neuve", "epave", "rode", "jamais servi", "age", "parfait etat", "dans l etat", }; char *tabjustif[]= { "deces", "double emploi", "non utilise", "veufe", "celibataire", "depart etranger","demenagement","sante", }; printf printf printf printf printf return 0; } ("%s ", tabstatut[statuts()] ); (" %s ", tabaction[objet()] ); (" %s ", tabobjet[objet()] ); (" %s ", tabetatobjet[statuts()] ); (" raison %s \n", tabjustif[objet()] );

Professeur: DERASSE ric

Anne acadmique 2011-2012

I.E.P.S.C.F SECTION: BACHELIER EN INFORMATIQUE ET SYSTMES


#include <stdio.h> #include <stdlib.h> #define NB_PHRASE 20 // definit le nombre de phrase encodee /************************************************************************************* Cours d'initiation l'informatique IEPSCF-UCCLE - E.Derasse (2011-2012) Auteurs : Christophe Ebely Gilbert Gomez Version : 18 JANVIER 2012 V 1.1 Exercice: Petite annonce alatoire *************************************************************************************** / int main(char nb_param, char **param, char **env) { srand(time(NULL)) ; //On initialise l'algo de calcul alatoire avec une valeur unique (le temp change) char tab_phrase[NB_PHRASE][230] = { "Monsieur vend appartement en parfait etat cause double emploi", "Un vieux marin recherche un gros thon pour relation huileuse", "Usine de suppositoires recherche pilote d'essai pour experiences delicates", "Homme desire essayer votre sofa raison rien a faire.", "Dame 60 ans ayant actions en bourse Recherche homme jeune ayant bourses en action.", "Perdue : montre de dame dont le derriere est plaque or.", "Ecureil edente echangerait panache contre casse-noix.", "Monsieur vend piscine ronde 15 pouces de diamtre par 3 pouces de profondeur avec accessoires.", "Mademoiselle vend 2 frigidaires usags, tres propres et en bon etat de fonctionnement.Ideal pour chaleur ", "Homme propose service pour s occuper de vache qui ne fume pas et ne boit pas.", "Monsieur vend 5 insignes du Mouvement de liberation de la femme. Cause : mariage.",

Professeur: DERASSE ric

Anne acadmique 2011-2012

I.E.P.S.C.F SECTION: BACHELIER EN INFORMATIQUE ET SYSTMES


"Monsieur vend decapotable 1988. Excellent etat. Prix ridiculement eleve raison j adore marchander.", "Dame age cede lot de livres... auxquels ils manquent la plupart des pages, pas cher.Conviend a personne n aimant pas la lecture.", "Couple achetent maison en face d un lac, de preference non loin du cimetiere cause depression.", "Agriculteur vend ferme, vous aurez la grange aussi... si vous achetez avant la prochaine tempete.", "Explorateur qui prend sa retraite, recherche une femme pantouflarde Aventuriere s abstenir.", "Jeune blonde cherche jeune homme propre.. avec nez bouche.Raison adore se parfumer.", "Femme echange tente canadienne bon etat... contre oncle d Amerique, meme usage.", "Jeune homme vends son cercueil TOUT NEUF. Garanti jamais servi,tres confortable tres bien amenage.Raison je ne veux pas le garder toute ma vie ", "Femme vend robe de mariee portee une seule fois par erreur.", }; // le tableau de phrase (longueur max 230) unsigned int valeur_piocher = rand() % NB_PHRASE ; // On choisit la phrase au hasard (c'est sa la cl du tableau) printf("%s\n", tab_phrase[valeur_piocher]) ; return 0 ; }

Professeur: DERASSE ric

Anne acadmique 2011-2012

I.E.P.S.C.F SECTION: BACHELIER EN INFORMATIQUE ET SYSTMES


#include #include #include #include <stdio.h> <time.h> <stdlib.h> <string.h>

#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

Professeur: DERASSE ric

Anne acadmique 2011-2012

I.E.P.S.C.F SECTION: BACHELIER EN INFORMATIQUE ET SYSTMES


} return nb_ln; } char* chooser(char* file_name) { //initialize pointer FILE *file = NULL; //strings char string_choosed[255]="", line[255]=""; int rnd_number, nb_ln, count, length; //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 { //compte le nombre de line avec la fonction prcdente nb_ln = line_counter(file_name); //gnre un random de 0 nb_ln rnd_number=rand()%nb_ln; count=0; //tantque le fichier n'est pas fini, tant que pas d'erreur while (fgets(line, TAILLE_MAX, file) != NULL) { if (rnd_number == count) { strcpy(string_choosed, line); } count++; } fclose(file); //fermeture du fichier

Professeur: DERASSE ric

Anne acadmique 2011-2012

I.E.P.S.C.F SECTION: BACHELIER EN INFORMATIQUE ET SYSTMES


} //calcul de la longueur de la string length=strlen(string_choosed); //suppression du retour la ligne string_choosed[length]='\0'; return string_choosed; } int { main() char exit='a'; do { char demandeur[255]="", object[255]="", action[255]="",prix[255]=""; strcpy(demandeur, chooser("annonces_demandeur")); strcpy(action,chooser("annonces_actions")); strcpy(object, chooser("annonces_objects")); strcpy(prix, chooser("annonces_prix")); printf("\nAnnonce de %s :\n %s %s pour la somme de %s \n\n", demandeur, action, object, prix); printf("\nQuitter ? (y/n) : "); scanf("%c", &exit); } while(exit!='y'); return 0; }

Professeur: DERASSE ric

Anne acadmique 2011-2012