Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

TP Langage C

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 19

Les TP sont numérotés 1 2 … , cela ne veut pas dire que vous devez faire un tp

par séance. Si le temps vous le permet vous pouvez passer au tp suivant.


Je vais faire le même tirage aux étudiants mais sans la partie droite(le prog C).
C’est à eux de traduire l’algorithme en un programme C. Quand ils terminent et
leur programme tourne, ils pourront s’ils le veulent recopier leur programme dans
la partie vierge de leur tirage.
Les premiers TP c’est les exemples du cours, donc ne pas les laisser prendre leur
cours.
Le TP 2 on leur donne le programme C ils ne font que la saisie.
Après ces Tp d’initiation, on peut passer aux exercices de difficultés progressives
du polycopié.
Vous remarquerez, que dans mes programmes j’ajoute chaque fois une lecture
d’un entier quelconque. C’est le moyen que j’ai trouvé pour figer la console pour
que je puisse voir les résultats. Si vous avez un moyen meilleur, bien sure enlevez
cette instruction.

0
TP1 le if …else…

Traduire l’algorithme suivant en utilisant le // nnnnn.cpp : Defines the entry point for the
if …..else…. console application.
//
Lettre : caractère
#include "stdafx.h"
Début
lire (lettre) ; int _tmain(int argc, _TCHAR* argv[])
si lettre = 'P' ou lettre = 'p' {
alors écrire ( 'PRINTEMPS') char lettre ;
sinon int x;
si lettre = 'E' ou lettre ='e' printf("donner un caractere") ;
alors écrire ('ETE') scanf("%c", &lettre);
sinon si lettre = 'A' ou lettre = 'a' /*printf("lettre= %c",lettre)*/;
if ((lettre == 'P' )|| (lettre == 'p' ))
alors printf("PRINTEMPS");
écrire ('AUTOMNE') else if ((lettre == 'E') || (lettre =='e'))
sinon printf("ETE");
si lettre = 'H' ou lettre = 'h' else if((lettre == 'A')||(lettre == 'a'))
alors puts(" AUTOMNE");
écrire ('HIVER') else if((lettre == 'H') || (lettre == 'h'))
sinon printf("HIVER\n");
écrire (' Pas de saison qui else
printf(" Pas de saison qui convienne\n");
convienne')
printf("\n donner un entier \n") ;
fsi scanf("%d",&x);
fsi return 0;
fsi }
fsi
Fin

TP2 : continue et break

// exercice1.cpp : Defines the entry point // exercice2.cpp : Defines the entry


for the console application. point for the console application.
// //
#include "stdafx.h"
#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])
int _tmain(int argc, _TCHAR* argv[]) {
{ int i;
int i; for (i = 0; i < 5; i++)
for (i = 0; i < 5; i++) {
{ if (i == 3)
printf("i = %d\n",i); continue;
if (i == 3) printf("i = %d\n",i);
break; }
}
printf("valeur de i a la sortie de la
printf("valeur de i a la sortie de la
boucle = %d\n",i); boucle = %d\n",i);
scanf("%d",i);/*cette instruction pour scanf("%d",i); /*cette instruction pour
laisser la console ouverte*/ laisser la console ouverte*/

return 0; return 0;
} }
i=0 i=0
i=1 i=1
i=2 i=2
i=3 i=4
valeur de i a la sortie de la boucle = 3 valeur de i a la sortie de la boucle = 5

1
TP3 : switch

Traduire l’algorithme suivant en utilisant le // tp3.cpp : Defines the entry point for the
switch de C (1- sans break , 2- avec break) console application.
//
Lettre : caractère
#include "stdafx.h"
Début
lire (lettre) ;
int _tmain(int argc, _TCHAR* argv[])
si lettre = 'P' ou lettre = 'p'
{
alors écrire ( 'PRINTEMPS')
char lettre ;
sinon
int x;
si lettre = 'E' ou lettre ='e'
printf("donner un caractere") ;
alors écrire ('ETE') scanf("%c", &lettre);
sinon si lettre = 'A' ou lettre = 'a' switch (lettre)
alors { case 'P': printf("PRINTEMPS \n");break;
écrire ('AUTOMNE') case 'p': printf("PRINTEMPS \n");break;
sinon case 'E': printf("ETE \n");break;
si lettre = 'H' ou lettre = 'h' case 'e': printf("ETE \n");break;
alors case 'A': puts("AUTOMNE \n");break;
écrire ('HIVER') case 'a': puts("AUTOMNE \n");break;
sinon case 'H': printf("HIVER \n");break;
écrire (' Pas de saison qui case 'h': printf("HIVER \n");break;
convienne') default:printf("Pas de saison qui
fsi convienne \n");
fsi }
fsi scanf("%d",&x);
fsi
Fin return 0;
}

Tp4 : while
Traduire l’algorithme saisissant au clavier un // whilee.cpp : Defines the entry point for
entier entre 1 et 10 : the console application.//
#include "stdafx.h"
i : entier int _tmain(int argc, _TCHAR* argv[])
{
début int a;
Ecrire (‘Entrez un entier entre 1 et 10 :’ ) ; do
Lire (a) ; {
Tant que (a <= 0) ou (a > 10) printf("\n Entrez un entier entre1 et 10: ");
Faire scanf("%d", &a);
Ecrire ('Entrez un entier entre 1 et 10 :') ; }
Lire (a) while ((a <= 0) || (a > 10));
Fait ; Ecrire ('merci de m''avoir obei , votre printf("\n merci de m''avoir obei,votre
valeur est ', a) ; valeur est %d\n", a);
printf(" tapez 0 pour fermer");
Fin scanf("%d",&a);
return 0;
}

Entrez un entier entre 1 et 10 : 12


Entrez un entier entre 1 et 10 : 52
Entrez un entier entre 1 et 10 : 46
Entrez un entier entre 1 et 10 : 87
Entrez un entier entre 1 et 10 : 9
merci de m''avoir obéi , votre valeur est 9
tapez 0 pour fermer

2
Tp5 : for
// pourr.cpp : Defines the entry
calculer n! point for the console application.
//
#include "stdafx.h"
n, i, fact : entier;
Début int _tmain(int argc, _TCHAR*
Fact := 1 ;lire(n) ; argv[])
Pour i = 1 à n pas 1 {
faire int n, i, fact;
fact := fact * i; printf(" \n n ? ");
fait; scanf("%d",&n);
écrire (n, " ! " , " = ", fact); fact = 1;
fin for (i = 1; i <=n; i++)
fact = fact* i;
printf("%d ! = %d \n",n,fact);
scanf("%d",&n);
return 0;
}
ou
// pourr.cpp : Defines the entry
point for the console application.
//
#include "stdafx.h"
int _tmain(int argc, _TCHAR*
argv[])
{
int n, i, fact;
printf(" \n n ? ");
scanf("%d",&n);
for (i=1,fact=1;i<=n; fact *=
i,i++);
printf("%d ! = %d \n",n,fact);
scanf("%d",&n);
return 0;
}

Vous pouvez reprendre les programmes du « if else » ou « switch » en répétant l’entrée d’une lettre P
A E H majuscule ou minuscules.

3
TP N°6

Exercice 3.11

Soit un étudiant dont on connaît le nom le prénom, le matricule, la matière et les différentes notes de T.P,
T.D et épreuve de synthèse.
Ecrire un algorithme qui:
1/
- lit le nom le prénom et le matricule sur une ligne,
- la matière sur une autre ligne,
- lit les notes de T.P, T.D et d'épreuve de synthèse données au point près (entier)
- calcule la moyenne de cet étudiant selon la formule :
NF = ( TP1+TP2 )/2 + ( TD1+TD2+TD3)/3 + ES
- Affiche le résultat de l’étudiant comme suit:
_______________________________________________________
NOM : …………..… PRENOM: …………………MATRICUL: ………...
TD: ……………. TP: …………….. ES: ……………..
Sa moyenne à la matière …………. est:…………………../20
_______________________________________________________

2/- Généralise le traitement 1 pour plusieurs matières en indiquant


à l’utilisateur s’il veut ou non calculer la moyenne pour une autre matière.

3/- Généralise le traitement 1et 2 pour plusieurs étudiants en indiquant


à l’utilisateur s’il veut ou non calculer la moyenne pour un autre étudiant.

Solution
1/
Nom, prenom, matiere : caractère(20) ;
Matri, TD1, TD2, TD3,TP1, TP2, ES: entier ;
NF : réel
Début
Lire(nom, prenom, matri) ;
lire( matiere) ;
Lire(TP1, TP2) ; lire(TD1, TD2, TD3) ;
Lire(ES) ; NF = (TP1+TP2)/2 + (TD1+TD2+TD3)/3 + ES;
Ecrire('__________________________________________________');
Ecrire(' NOM : ' , nom, ' PRENOM : ',prenom, ' MATRICULE : ',matri);
Ecrire(' TD: ', TD1, TD2, TD3, ' TP: ', TP1, TP2, ' ES: ', ES);
Ecrire(' Sa moyenne à la matière', matiere , 'est: ', NF/3, ' /20' );
ecrire('___________________________________________________')
Fin

4
2/
Nom, prenom, matiere : caractère(20) ;
Matri, TD1, TD2, TD3,TP1, TP2, ES: entier ;
NF : réel ; rep : caractere(3) ;
Début
Lire(nom, prenom ,matri) ; rep := ‘oui’ ;
Tant que rep=’oui’ ou rep = ‘OUI’
faire
lire( matiere) ;
Lire(TP1, TP2) ; lire(TD1, TD2, TD3) ;
Lire(ES) ; NF = (TP1+TP2)/2 + (TD1+TD2+TD3)/3 + ES;
Ecrire('__________________________________________________')
Ecrire(' NOM : ' , nom, ' PRENOM : ',prenom, ' MATRICULE : ',matri);
Ecrire(' TD: ', TD1, TD2, TD3, ' TP: ', TP1, TP2, ' ES: ', ES);
Ecrire(' Sa moyenne à la matière', matiere, 'est: ', NF/3, ' /20’);
écrire('__________________________________________________');
Ecrire(' Voulez vous calculer la moy pour une autre matière? oui/non')
Lire(rep)
fait
Fin

3/
Nom, prenom, matiere : caractère(20) ;
Matri, TD1, TD2, TD3,TP1, TP2, ES: entier ;
NF : réel ; rep : caractère(3) ;
Début
rep := ‘oui’ ;
Tant que rep=’oui’ ou rep = ‘OUI’
Faire
Lire(nom, prenom ,matri) ;
Tant que rep=’oui’ ou rep = ‘OUI’
Faire
lire( matiere) ;
Lire(TP1, TP2) ; lire(TD1, TD2, TD3) ;
Lire(ES) ; NF = (TP1+TP2)/2 + (TD1+TD2+TD3)/3 + ES;
Ecrire('_________________________________________________');
Ecrire(' NOM :' , nom, ' PRENOM : ', prenom, ' MATRICULE ' ,matri);
Ecrire(' TD: ', TD1, TD2, TD3, ' TP: ', TP1, TP2, ' ES: ', ES);
Ecrire(' Sa moyenne à la matière' , matiere, 'est:' , NF/3, ' /20’);
Ecrire('_________________________________________________');
Ecrire(' Voulez vous calculer la moyenne pour une autre matière?
oui/non');
Lire(rep)
Fait ;
Ecrire(' Voulez vous calculer la moyenne pour un autre étudiant? oui/non');
Lire(rep)
Fait
Fin

5
1/ #include "stdio.h"
int main()
{
char nom[20], prenom[20], matiere[20] ;
int matri, TD1, TD2, TD3,TP1, TP2, ES;
float NF;
printf("donner le nom le prenom le matricul\n");
scanf("%s%s%d\n",&nom, &prenom, &matri) ;
printf("donner la matiere \n");
scanf( "%s",&matiere) ;
printf("Donner les 6 notes\n");
scanf("%d%d",&TP1, &TP2) ; scanf("%d%d%d",&TD1, &TD2, &TD3) ;
scanf("%d",&ES) ;
NF = (TP1+TP2)/2 + (TD1+TD2+TD3)/3 + ES;
printf("___________________________________________________________\n");
printf(" NOM : %s PRENOM :%s MATRICULE :%d\n\n ",nom,prenom
,matri);
printf(" TD: %d %d %d TP: %d %d ES: %d \n\n ", TD1, TD2,
TD3,TP1,TP2,ES);
printf(" Sa moyenne a la matiere %s est: %f/20\n\n ", matiere,NF/3);
printf("___________________________________________________________");
}
EXECUTION
Donner le nom le prenom le matricul
bbbbbb kkkkkk 1236
Donner la matière
Math
Donner les 6 notes
10 12 13 10 14 15
___________________________________________________________

NOM : bbbbbb PRENOM :kkkkkk MATRICULE :1236


TD: 13 10 14 TP: 10 12 ES: 15
Sa moyenne a la matiere math est: 12.666667/20
___________________________________________________________

2/ #include "stdio.h"
int main()
{
char nom[20], prenom[20], matiere[20];
int matri, TD1, TD2, TD3,TP1, TP2, ES, rep;
float NF;
rep =1 ;
printf("donner le nom le prenom le matricul\n");
scanf("%s%s%d",&nom, &prenom, &matri) ;
while (rep)
{ printf("donner la matiere \n");
scanf( "%s",&matiere) ;
printf("Donner les 6 notes\n");
scanf("%d%d",&TP1, &TP2) ; scanf("%d%d%d",&TD1, &TD2, &TD3) ;
scanf("%d",&ES) ;
NF = (TP1+TP2)/2 + (TD1+TD2+TD3)/3 + ES;
printf("___________________________________________________________\n");
printf(" NOM : %s PRENOM :%s MATRICULE :%d\n\n
",nom,prenom,matri);
printf(" TD: %d %d %d TP: %d %d ES: %d \n\n ", TD1, TD2,
TD3,TP1,TP2,ES);
printf(" Sa moyenne a la matiere %s est: %f/20\n\n ", matiere,NF/3);
printf("___________________________________________________________");
printf("\n Voulez vous calculer la moy pour une autre matiere? 0/1 ");
scanf("%d", &rep);
}
printf("FIN");
}
6
EXECUTION
Donner le nom le prenom le matricul
bbbbbb kkkkkk 1236
Donner la matière
Math
Donner les 6 notes
10 12 13 10 14 15
___________________________________________________________

NOM : bbbbbb PRENOM :kkkkkk MATRICULE :1236


TD: 13 10 14 TP: 10 12 ES: 15
Sa moyenne a la matiere math est: 12.666667/20
___________________________________________________________
Voulez vous calculer la moy pour une autre matiÞre? 0/1 1
Donner la matière
Chimie
Donner les 6 notes
10 10 10 10 10 10
___________________________________________________________
NOM : nnnn PRENOM :lllll MATRICULE :4563
TD: 10 10 10 TP: 10 10 ES: 10
Sa moyenne a la matiere chimie est: 10.000000/20
___________________________________________________________
Voulez vous calculer la moy pour une autre matiÞre? 0/1 1
Donner la matière
Mecanique
Donner les 6 notes
11 11 11 11 11 11
___________________________________________________________
NOM : ffffff PRENOM :gggggg MATRICULE :5555
TD: 11 11 11 TP: 11 11 ES: 11
Sa moyenne a la matiere mecanique est: 11.000000/20
___________________________________________________________
Voulez vous calculer la moy pour une autre matiÞre? 0/1 0
FIN

3/ #include "stdio.h"
int main()
{
char nom[20], prenom[20], matiere[20];
int matri, TD1, TD2, TD3,TP1, TP2, ES, rep;
float NF;
rep =1 ;
while (rep)
{ printf("donner le nom, le prenom et le matricul \n");
scanf("%s%s%d",&nom, &prenom, &matri) ;
while (rep)
{ printf("donner la matiere \n");
scanf( "%s",&matiere) ;
printf("Donner les 6 notes\n");
scanf("%d%d",&TP1, &TP2) ; scanf("%d%d%d",&TD1, &TD2, &TD3) ;
scanf("%d",&ES) ;
NF = (TP1+TP2)/2 + (TD1+TD2+TD3)/3 + ES;
printf("___________________________________________________________\n");
printf(" NOM : %s PRENOM :%s MATRICULE :%d\n\n
",nom,prenom,matri);
printf(" TD: %d %d %d TP: %d %d ES: %d \n\n ", TD1, TD2,
TD3,TP1,TP2,ES);
printf(" Sa moyenne a la matiere %s est: %f/20\n\n ", matiere,NF/3);
printf("___________________________________________________________");

printf("\n Voulez vous calculer la moy pour une autre matiere? 0/1 ");
scanf("%d", &rep);
}

7
printf(" Voulez vous calculer la moyenne pour un autre étudiant? 0/1 ");
scanf("%d",&rep) ;
}
printf("FIN");
}

EXECUTION
Donner le nom le prenom le matricul
bbbbbb kkkkkk 1236
Donner la matière
Math
Donner les 6 notes
10 12 13 10 14 15
___________________________________________________________

NOM : bbbbbb PRENOM :kkkkkk MATRICULE :1236


TD: 13 10 14 TP: 10 12 ES: 15
Sa moyenne a la matiere math est: 12.666667/20
___________________________________________________________
Voulez vous calculer la moy pour une autre matiÞre? 0/1 1
Donner la matière
Chimie
Donner les 6 notes
10 10 10 10 10 10
___________________________________________________________

NOM : bbbbbb PRENOM :kkkkkk MATRICULE :1236


TD: 10 10 10 TP: 10 10 ES: 10
Sa moyenne a la matiere chimie est: 10.000000/20
___________________________________________________________

Voulez vous calculer la moy pour une autre matiÞre? 0/1 0


Voulez vous calculer la moyenne pour un autre étudiant? 0/1 1
Donner le nom le prenom le matricul
ffffff gggggg 5555
Donner la matière
Mecanique
Donner les 6 notes
11 11 11 11 11 11
___________________________________________________________

NOM : ffffff PRENOM :gggggg MATRICULE :5555

TD: 11 11 11 TP: 11 11 ES: 11

Sa moyenne a la matiere mecanique est: 11.000000/20


___________________________________________________________
Voulez vous calculer la moy pour une autre matiÞre? 0/1 0
Voulez vous calculer la moyenne pour un autre étudiant? 0/1 0
FIN

8
TP 7

Les tableaux-1-
// tableau1.cpp : Defines the entry point for
Tableau à 1 dimensions : the console application.
//
lecture et affichage d’un tableau tab (m).

1- Affichage des n éléments d’un tableau, avec n ≤ 20. #include "stdafx.h"


/*#include <stdio.h>*/;
tab : tableau(20) entier; int _tmain(int argc, _TCHAR* argv[])
{
i : entier; int tab[20];
Début int i,n;
Lire(n) ; printf("n <20 ? \t");
Pour i = 1 à n pas 1 scanf("%d",&n);
printf("les %d valeurs du tableau? \n",n);
Faire for (i = 0; i < n; i++)
lire(tab(i)) scanf("%d" , &tab[i]);
fait ;
for (i = 0; i < n; i++)
Pour i = 1 à n pas 1 printf("tab(%d) = %d\n",i,tab[i]);
scanf("%d",n);
faire
Écrire( 'tab(',i,')=',tab(i)) return 0;
fait }
Fin
2-

// tableau2.cpp : Defines the entry point for


the console application.
//

#include "stdafx.h"

int _tmain(int argc, _TCHAR* argv[])


{
#define N 8
char tab[N] = "exemple";
int i;

for (i = 0; i < N; i++)


printf("tab[%d] = %c\n",i,tab[i]);
scanf("%d",i);

return 0;
}

tab[0] = e
tab[1] = x
tab[2] = e
tab[3] = m
tab[4] = p
tab[5] = l
tab[6] = e
tab[7] =

essayez le avec N=7 pb car il faut tjs


prévoir une position en plus pour un tableau
caractères.

9
TP 8

Les tableaux-2-
// tableau3.cpp : Defines the entry point
for the console application.
//
Tableau à 2 dimensions :
lecture et affichage d’un tableau tab (m x n). #include "stdafx.h"

Tab : tableau(10,10) entier ; i,n : entier ; int _tmain(int argc, _TCHAR* argv[])
{int i, j,M,N,f;
Début int tab[10][10];
Lire (m, n) ; printf("nbre lignes? nbre colonne?\n");
(* lecture du tableau tab *) scanf("%d%d",&M, &N);
Pour i =1 à m printf("M=%d N=%d\n",M,N);
Faire printf(" lecture du tableau lig/lig\n");
for (i=0; i<M; i++)
Pour j =1 à n for (j=0; j<N; j++)
faire scanf("%d" , &tab[i][j]);
lire(tab(i,j)) puts("lecture terminee\n\n");
fait /* affichage du tableau tab élément par
élément*/
fait ; for (i = 0 ; i < M; i++)
(* affichage du tableau tab *) for (j = 0; j < N; j++)
Pour i =1 à m printf("tab( %d ,%d) =
Faire %d\n",i,j,tab[i][j]);
Pour j =1 à n
printf("\n");/*saut de ligne*/;
faire
écrire ('tab(', i, ',' , j, ')=',tab (i, j)) /* affichage du tableau tab ligne par
fait ligne*/
fait ; for (i = 0 ; i < M; i++)
{
Fin
for (j = 0; j < N; j++)
printf("%d \t",tab[i][j]);
printf("\n");
}
scanf("%d",&M);
return 0;
}
Résultats de l’exécution
nbre lignes? nbre colonne
2 3
M=2 N=3
lecture du tableau lig/lig
4 5 6
7 8 9
lecture terminee

tab( 0 ,0) = 4
tab( 0 ,1) = 5
tab( 0 ,2) = 6
tab( 1 ,0) = 7
tab( 1 ,1) = 8
tab( 1 ,2) = 9

4 5 6
7 8 9

10
Arrivé ici, si je ne vous ai rien envoyé, faites les exos suivants de la série :

Exercice4-3

Ecrire l'algorithme qui calcule le produit scalaire ainsi que la somme de deux vecteurs à N valeurs réelles
données en entrée avec N 20.

Exercice4-6

Soit un vecteur V à N valeurs entières données en entrée. Ecrire l'algorithme qui recherche la plus grande
valeur (en valeur absolue) de ce vecteur et l'indice correspondant.

Exercice N° 4.13

Ecrire l'algorithme qui étant donné N :


Construit la table de Pythagore d’orde N xN

Exercice N° 4.23

Ecrire l'algorithme qui étant donné:


- un vecteur V à n valeurs réelles trié par ordre croissant de ses valeurs,
- une valeur "val" de type réel ;
a) recherche la valeur val dans ce vecteur,
b) supprime val de V si elle y existe
c) insère val dans V si elle n'y existe pas.
Dans (b) et (c) l'ordre croissant des valeurs de V doit être conservé.

11
// exercice4-3.cpp //
Exercice4-3
#include "stdio.h"
V, W, S: tableau(20)reel; int main()
i,n:entier ; PS : reel; {
float V[20], W[20], S[20]; int i,n ;
Début float PS;
lire(n); printf("donner n ");
pour i=1 à n faire lire( v(i) ) fait; scanf("%d",&n);
pour i=1 à n faire lire( w(i) ) fait; printf("n= %d \n",n);
PS := 0; printf("donner les %d valeurs de v",n );
for (i=0;i<n ;i++) scanf("%f",&V[i]);
pour i=1 à n faire printf("donner les %d valeurs de w",n );
PS := PS + V(i)*W(i); for (i=0;i<n ;i++) scanf("%f",&W[i]);
S(i) := V(i)+W(i)
fait; PS= 0;
for (i=0;i<n ;i++)
écrire ('somme des deux vecteurs V et W: ’);
{ PS = PS + V[i]*W[i];
pour i=1 a n faire écrire(S(i)) fait; S[i] = V[i]+W[i];
écrire ('produit scalaire = ', PS) }
Fin printf("somme des deux vecteurs V et W:
\n");
for (i=0;i<n ;i++) printf("%f\t ",S[i]);
printf("\n produit scalaire = %f ",PS);

// exercice4-6.cpp //
Exercice4-6
#include "stdio.h"
V: tableau(20)entier; #include "math.h"
i, n, max, ind, vabs :entier ; int main()
Début {
Lire(n); pour i=1 à n faire lire(v(i)) fait; int v[20]; int i, n, max, ind, vabs ;
max := v(1); ind := 1;
pour i=2 à n printf("donner le nombre d''élément" );
scanf("%d",&n);
faire vabs := v(i);
si vabs > max alors printf("donner les %d valeurs de v",n );
max := vabs; ind := i for (i=0;i< n;i++) scanf("%d",&v[i]);
fsi
printf("les %d valeurs de v sont :",n );
fait; for (i=0;i< n;i++)
écrire('max=',max, ' indice du max=',ind) printf("\n %d",v[i]);
Fin
max = abs(v[0]); ind = 1;
for (i=0;i< n;i++)
{ vabs = abs(v[i]);
if(vabs > max )
{ max = vabs;
ind = i+1;}
}
printf("max=%dindice du max= %d\n",max,ind);
scanf("%d",&i);
}

12
Exercice 4.13 // exercice4-13.cpp ////
A:tableau ( 50, 50) entier;
i, j, n : entier; #include "stdio.h"
int main()
Début
{
lire(n); int A[100][100];
pour i=1 à n int i, j, n;
faire pour j= 1 à n printf("donner n");
faire scanf("%d",&n);
A(i,j) := i * j for(i=1;i<=n;i++)
fait for(j=1;j<=n;j++)
fait; A[i][j] = i * j;
pour i=1 à n for(i=1;i<=n;i++)
{
faire pour j = 1 à n for(j=1;j<=n;j++)
faire printf("%d \t", A[i][j] );
écrire( A(i ,j) ) printf("\n"); /*impression lig/lig*/
fait }
fait;
Fin }
Exercice N° 4.23 #include "stdio.h"
int main()
V:tableau(50)reel; val : reel; {
float v[100];
n, i : entier; trouv : booleen
int i,n,k,trouv; float val;
Début printf("donner val");
lire(n) ; pour i=1 à n faire lire( V(i) ) fait; scanf("%f",&val);
i := 1; trouv := faux; lire(val) ; printf("donner n");
tant que i  n et non trouv scanf("%d",&n);
faire si val > V(i) alors i := i+1 printf("donner v ");
sinon trouv := vrai for(i=1;i<=n;i++)
fsi scanf("%f\n", &v[i]);
for(i=1;i<=n;i++)
fait;
printf("%f \n", v[i] );
i =1; trouv =0;
SI trouv while ((i <= n )&& (! trouv))
alors (* val ≤ v(i) *) if (val > v[i])
i = i+1;
si val = V(i) else trouv = 1;
alors (*val existe dans V à la position i if (trouv) /* val ≤ v(i) */
il faut la supprimer *) if (val == v[i] )
pour k= i à n-1 { printf("%f existe dans V a la position
% %d il faut la supprimer\n ",val,i);
faire V(k) := V(k+1) fait; for( k= i ;k <= n-1;k++)
n := n-1 v[k] = v[k+1];
n = n-1 ;
sinon (* val n’existe pas dans V }
il faut l’insérer à la position i *) else
pour k = n à i pas -1 { printf("%f n''xiste pas dans V il faut
faire V(k+1) := V(k) fait; l''insérer a la position %d\n",val,i);
V(i) := val ; for (k = n;k >= i; k--)
v[k+1] = v[k];
n := n+1
v[i] = val ;n = n+1;
fsi }
else
sinon (*val n’existe pas dans V insertion à la { printf("%f n''existe pas dans V
fin de V*) insertion à la fin de V\n",val);
n := n+1; V(n) := val n = n+1;
FSI; v[n] = val;
}
pour i=1 à n faire écrire (V(i)) fait; printf("le vecteur v est :\n ");
for(i=1;i <= n;i++)
printf("\n%f ", v[i] );
Fin }

13
TP 9

Les tableaux d’enregistrements

On considère les informations suivantes concernant un étudiant : #include "stdio.h"


- Nom et prénom qui sont des chaines de 10 caractères au int main()
plus, {
- Le numéro qui est un entier, int i,n,an;
- Date de naissance sous la forme J/ M/ A
Définir une structure de données qui permet de représenter un
étudiant quelconque. On l’appellera "ETUDIANT" . struct date {
En supposant un échantillon de N étudiants en mémoire, structuré int j;
dans un tableau T, écrire l’algorithme qui permet d’afficher le int m;
nom et prénoms des étudiants nés avant une année donnée. int a;
Traduire cet Algorithme en C et exécutez-le. };

i,n,an: entier; struct etudiant


{ char nom[10];
Type date = enregistrement char pren[10];
J, m, a : entier
int num;
fin
struct date dn;
etudiant = enregistrement };
nom , pren: caractere ;
num : entier ; struct etudiant tab[20] ;
dn : date printf("nbre d''etudiant ? ");
fin ; scanf("%d",&n);
tab : tableau(20) etudiant; printf("n= %d \n",n);
printf(" lecture des informations des %d étudiants \n",n);
Début for (i=0; i<n; i++)
écrire(' nbre d''etudiant ? ');
scanf("%s %s %d %d %d %d" , &tab[i].nom,
lire(n);
écrire('n=' ,n); &tab[i].pren, &tab[i].num, &tab[i].dn.j, &tab[i].dn.m,
écrire(' lecture des informations des' ,n, 'etudiants'); &tab[i].dn.a);
pour i=1 à n printf("lecture terminee\n\n");
faire
lire(tab(i).nom, tab(i).pren, tab(i).num, /* affichage du tableau tab élément par élément*/
tab(i).dn.j, tab(i).dn.m, tab(i).dn.a);
fait; for (i = 0 ; i < n; i++)
printf("%s %s %d %d %d %d \n" , tab[i].nom,
écrire('lecture terminee'); tab[i].pren, tab[i].num, tab[i].dn.j, tab[i].dn.m,
tab[i].dn.a);
(* affichage du tableau tab élément par élément*)

Pour i =1 à n printf("donner annee ");


Faire scanf("%d ",&an);
écrire(tab(i).nom, tab(i).pren, tab(i).num, printf("les etudiants nes avant %d sont :",an);
tab(i).dn.j, tab(i).dn.m, tab(i).dn.a); for (i = 0 ; i < n; i++)
fait; { if (tab[i].dn.a<an)
printf("%s %s \n" , tab[i].nom, tab[i].pren);
écrire('donner l''annee '); }
lire(an);
écrire('an= ', an);
}
pour i = 1 à n
faire les etudiants nes avant 2004 sont :
si (tab(i).dn.a < an) Xxxxx pppp 1236 12 11 2001
alors Hhhhh jjjjjj 14478 10 12 2000
écrire ( tab(i).nom, tab(i).pren); Uuu iijjhyy 11447 01 01 1999
fsi ; Gggg tttt 148 9 9 1996
fait ; Oooo pppppp 11145 5 12 1995
fin

14
TP 10

Les fonctions

1/ Écrire une fonction de nom "insiste" qui affiche oh que tu es suivi d’un compliment(donné)
un certain nombre(donné) de fois suivi de ! 6 fois.
Exemple oh que tu es compliment compliment ….nombre fois et !!!!!!
Utiliser cette fonction, pour écrire le programme qui affiche : oh que tu es belle belle belle belle
belle !!!!!!
// fonction2.cpp//
/* affiche "oh que tu es belle belle belle belle belle !!!!!! " */

#include "stdafx.h"
void insiste(int nombre, char *compliment)
{
int i;
printf("Oh que tu es ");
for (i=1;i<=nombre;i++)
printf("%s ",compliment);
printf("!!!!!!\n");

int main()
{
int i;
insiste(5,"belle");
/* affiche "oh que tu es belle belle belle….10fois et !!!!!! " */
return 0;
}

Fonction2 version2

// fonction2.cpp//
// "return" peut être omis //
#include "stdafx.h"
void insiste(int nombre, char * compliment)
{
int i;
printf("Oh que tu es ");
for (i=0;i<nombre;i++)
printf("%s ",compliment);
printf("!!!!!!\n");

int main()
{
int i=3;char j[]="fatigant ";

insiste(i*2,j);
/* affiche "oh que tu es fatigant fatigant….6 fois et !!!!!! " */

15
TP 11
Ecrire une fonction PRODUIT qui calcule le produit de deux nombres réels a et b donnés .
Utiliser cette fonction pour écrire le programme qui :
1/ calcule x = 2*4.5 et affiche : x = …….
2/ calcule y = 2 + ( sin(x) + 1.25*x ) * (2*x ) et affiche : y = …….
3/ affiche : le double de ………….. est ………
Valeur de y 2*y

Fonction3 : on a été obligé d’ajouter la bibliothèque de math : #include "math.h"

#include "stdafx.h"
#include "math.h"
float produit(float a, float b)
{
float z;
z = a*b;
return(z);
}

int _tmain(int argc, _TCHAR* argv[])


{
float x,y,z;
x= produit(2,4.5); printf("x= %f",x);
y= 2+produit(sin(x)+produit(1.12,x),produit(2,x));printf("y= %f",y);
printf("le double de %f est %f\n",y,produit(y,2));
scanf("%f",&x);
return 0;
}

16
TP 12
Traduire l’algorithme du cours suivant
&x1 et &x2 paramètres (adresses) effectifs transmis à la place
delta,x1,x2,a,b,c,v1,v2 : reel; des paramètres formels pointeurs x et y .
exist : booléen; // equationdeg2.c //
fonc val ( nombre : réel ) : réel ;
#include "stdio.h"
début si nombre > 0 #include "math.h"
alors val := nombre float x1,x2,a,b,c,v1,v2 ; int exist;
sinon val := - nombre
fsi float valabs ( float nombre )
fin; {float res; /* res objet local à valabs
*/
proc racines(x,y : reel ); if (nombre > 0)
delta : reel; res=nombre;
else
debut res=-nombre;
exist := vrai ; return(res);
delta:=b 2 -4*a*c; }
si delta < 0
alors void racines(float *x,float *y ) /*les
exist := faux ; paramètre x et y sont des pointeurs sur
réels donc des adresses sinon il ne
écrire('pas de solutions réelles distinctes')
transmet pas les résultats au pg appelant*/
sinon
x:=(-b+ delta )/ (2*a); { float delta ; /* delta objet local à
racines */
y:=(-b- delta )/ (2*a) exist =1 ; delta = (b*b) -4*a*c; /*a,b,c
fsi et exist sont des objets globaux */
fin; printf("\n delta= %f ",delta);
if (delta <= 0)
DEBUT(* début de l'algorithme principal *) { exist = 0;
printf("pas de solutions réelles
lire(a,b,c);
distinctes");
racines(x1,x2) ; }
si exist else
alors {*x =(-b+ sqrt(delta))/ (2*a);
v1:= valn(x1); *y =(-b-sqrt(delta))/ (2*a);}
v2:= valn(x2) ; /* on utilise *x et *y car x et y sont des
si v1 > v2 alors pointeurs sur réel et *x , *y sont les
écrire ('x1>x2') places mémoires pointées par x et y */
sinon }
écrire ('x2>x1') int main ()
fsi
fsi { printf("donner (a,b,c)");
FIN(* de l’algorithme*) scanf("%f%f%f",&a,&b,&c);
racines(&x1,&x2); /*l'appel se fait avec
des adresses on met
& car x1 et x2 sont
des réels*/
printf("\n x1= %f x2= %f",x1,x2);
printf("\n exist= %d ", exist);
if (exist)
{ v1= valabs(x1);
v2= valabs(x2) ;
printf("\n v1= %f v2= %f",v1,v2);
if (v1 > v2) printf ("\n x1 > x2");
else printf("\n x2>x1");
}
}

17
18

Vous aimerez peut-être aussi