Vous êtes sur la page 1sur 4

Université Virtuelle de Tunis Année universitaire 2015-2016

Correction Devoir Surveillé N°1


Exercice 1 (8 pts)
Soit le code C suivant :
#include<stdlib.h>
#define Nmax 50
typedef char TAB[Nmax] ;
int main()
{ TAB t ;
int i, n, nb ;
char c ;
do {printf(\n Donner le nombre d’éléments du tableau) ;
scanf(%d,n) ;}while ((n<0)||(n>Nmax)) ;

for(i=0 ; i>n ; i++)


{ printf(\n Donner le %d ème caractère , i+1) ;
scanf( %d,t[i]) ;} ;

printf(\n Donner le caractère) ;


scanf( %c, &c) ;
nb=0;
for(i=1 ; i<n ; i++)
{if (t[i] =c)
{nb++ ;} ; } ;
printf(\n\n\t le nombre de %c est %d\n, c, nb) ;
system(pause) ;}
1. Indiquer et expliquer les différentes erreurs syntaxiques et logiques dans ce programme
scanf(%d,n)  scanf(%d,&n)
for(i=0 ; i>n ; i++)  for(i=0 ; i<n ; i++)
scanf( %d,t[i])  scanf( %c,&t[i])
for(i=1 ; i<n ; i++)  for(i=0 ; i<n ; i++)
if (t[i] =c)  if (t[i] ==c)
2. Corriger ces erreurs, compiler ce programme et donner le résultat de son exécution.

Ce programme permet d’afficher le nombre d’occurrence d’un caractère donné dans un tableau de caractères.

Bon Travail
Exercice 2 (12 pts)
On s’intéresse, dans cet exercice, à un ensemble de n articles (n ne dépasse pas 30) où chaque article est
caractérisé par son code, son libellé, son prix unitaire et le nom de son fournisseur. Un même article de code
donné peut exister plusieurs fois dans l’ensemble des articles, s’il peut être fourni par plusieurs fournisseurs.
Nous voulons écrire un algorithme qui permet de
a. Saisir l’ensemble des articles,
b. Supprimer tous les articles d’un fournisseur donné,
c. Compter et afficher les noms des différents fournisseurs d’un article donné par ordre croissant des
prix.
d. Afficher le nouvel ensemble des articles.

Algorithme Exercice 2
Debut
Constante Nmax =30
Type Article = Structure
code : Entier
prix_un : Réel
nom_frs : chaine de caractère
Fin Structure
Type TAB=Tableau [1..Nmax] de Article
Variable
t, t_ar : TAB
i, n, code, n_ar, indmax : entier
nom : chaine de caractères

/*Saisie du nombre d’articles*/


répéter
Ecrire(Donner le nombre d’articles)
Lire(n)
jusqu’à (n dans [0..Nmax])

/*Remplissage du Tableau*/
Pour i de 1 à n faire
Ecrire(Donner le code, prix et nom frs du , i, ème article)
Lire(t[i].code, t[i].prix_un, t[i].nom_frs )
Fin Pour

/*Recherche des articles du frs*/


Ecrire(Donner le nom du fournisseur)
Lire(nom)
i1
Tantque ((i<=n) faire
Tantque ((i<=n) && (t[i].nom_frs ≠ nom)) faire
ii+1
Fin Tantque

Si (i<=n) alors
/*Décalage à gauche pour supprimer le ième article*/
Pour j de i à n-1 faire
t[j]t[j+1]
Fin Pour
n<n-1
FinSi
Fin Tantque

/*Saisie nom frs d’un article donné*/


Ecrire(Donner le code de l’article)
Lire(code)

n_ar1
Pour i de 1 à n faire
Si (t[i].code=code) alors
t_ar[n_ar]t[i]
n_arn_ar+1
FinSi
Fin Pour
/* Trier t_ar selon l’ordre croissant des prix*/
Pour i de 1 à n_ar faire
indmax i
Pour j de i+1 à n_ar faire
Si t_ar[j]<t_ar[indmax] Alors
indmaxj
FinSi
FinPour
Si(indmax ≠i)
aux  t_ar[indmax]
t_ar [indmax]  t_ar [j]
t_ar [j] aux
FinSi
FinPour
Ecrire(Le nombre de fournisseurs de l’article ,code,  est : , n_ar)
/*Affichage des noms des fournisseurs*/
Pour i de 1 à n_ar faire
Ecrire(Le , i, ème fournisseur est : , t_ar[i].nom_frs)
Fin Pour

/*Affichage des articles*/


Pour i de 1 à n faire
Ecrire(Le , i, ème article est : , t[i].code)
Fin Pour

Fin