0% ont trouvé ce document utile (0 vote)
37 vues4 pages

Contrôle de Programmation SMP S4

Le document contient la description de trois exercices de programmation. L'exercice 1 demande de calculer la somme de deux nombres et d'afficher le résultat si positifs. L'exercice 2 demande d'écrire un programme utilisant while ou do-while pour additionner des nombres saisis. L'exercice 3 demande de manipuler des tableaux pour générer et trier des combinaisons.

Transféré par

Kamal Verde
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
37 vues4 pages

Contrôle de Programmation SMP S4

Le document contient la description de trois exercices de programmation. L'exercice 1 demande de calculer la somme de deux nombres et d'afficher le résultat si positifs. L'exercice 2 demande d'écrire un programme utilisant while ou do-while pour additionner des nombres saisis. L'exercice 3 demande de manipuler des tableaux pour générer et trier des combinaisons.

Transféré par

Kamal Verde
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Université Cadi Ayyad Année universitaire 2012/2013

Faculté des Sciences Semlalia


Département de Physique

Contrôle de Programmation
Filière SMP S4
(Durée: 2h)
Exercice 1: (5 points)

1) Ecrire un algorithme qui permet de lire deux nombres réels a et b et d’afficher leur somme
dans le cas où les deux variables sont strictement positives.
2) Ecrire sur la feuille d’examen les affichages attendus pour les programmes suivants :

a) b) c)
main() main() main()
{ { {
int i; int a,i=5; int i,j;
for(i=0;i<10;i++); a=(2,i,i+1); for(i=0,j=0;i<2,j<4;i++,j++)
printf("%d\n",i*i); printf("%d\n",a); printf("%d %d\n",i,j);
} } }

Exercice 2: (4 points)
Soit le programme suivant :
#include<stdio.h>
main( )
{
int i, n, som = 0 ;
for(i=0;i<4;i++)
{
printf("Donner un entier:");
scanf("%d",&n);
som +=n;
}
printf("somme = %d\n",som);
}
Ecrire un programme réalisant exactement la même chose, en employant à la place de l’instruction for :
a) une instruction while
b) une instruction do … while

Exercice 3: (11 points)


1) Ecrire le programme qui permet de déclarer un tableau A[4] de 4 entiers et un tableau T[1000] de 1000
entiers ; et de réaliser les opérations suivantes :
2) Affecter à tous les éléments du tableau T la valeur -1.
3) lire au clavier 4 chiffres (à choisir parmi : 0, 1, 2, 3 ...9) et les enregistrer dans le tableau A[4]. Afficher
ensuite les éléments du tableau A.
4) Trouver toutes les combinaisons à deux chiffres que l’on peut faire
avec les 4 chiffres saisis précédemment. Compter et afficher ces combinaisons.
Par exemple : si on a saisi un tableau A[4]={ 7, 1, 3, 5} on va avoir les 16 combinaisons suivantes :
(7,7) (7,1) (7,3) (7,5) (1,7) (1,1) (1,3) (1,5) (3,7) (3,1) (3,3) (3,5) (5,7) (5,1) (5,3) (5,5)
5) Trouver toutes les combinaisons à trois chiffres : que l’on peut
faire avec les 4 chiffres saisis précédemment. Transformer chacune de ces combinaisons (A[i],A[j],A[k])
en un nombre entier a=A[i]*100+A[j]*10+A[k], puis enregistrer ces nombres dans T. Compter le nombre
de combinaisons qu’on notera par NC.
6) Trier le tableau T en ordre croissant.
7) On veut affecter des valeurs aux éléments du tableau T qui n’ont pas été remplis par les combinaisons
précédentes (question 5). Pour cela, parcourir la suite de nombres 0, 1, 2 … 999 ; et pour chaque nombre
vérifier s’il existe dans T ou pas. S’il n’existe pas, alors le copier dans T. S’il existe déjà, passer à la valeur
suivante.
8) Si on affiche le tableau T final après le tri, quel résultat obtient-on ? Répondre avec une phrase (sans le
programmer).

[Link] page facebook


Corrigé Contrôle de programmation SMP S4
Session Mai 2013

NB : Prière de compter toute autre réponse correcte


Exercice 1 : (5pts)
1) Algorithme somme
DebutDeclaration
Variable Som, a, b : réel
FinDeclaration
DebutAlgorithme
2 pts
Ecrire("Entrer les nombres a et b: ")
pop
Lire (a,b)
ts
Si (a>0 ET b>0) alors
DebutSi
Som <- a+b
Ecrire(" Leur somme est :", Som)
FinSi
FinAlgorithme

2)
a) b) c)
100 6 0 0
1 pts
1 1
1 pts
pop 1 pts 2 2
pop
ts pop 3 3
ts
ts

Exercice 2: (4pts)

a) En employant while: b) En employant do…while:

#include<stdio.h> 2 pts #include<stdio.h>


main( ) pop main( ) 2 pts
{ ts { pop
int i=0, n, som = 0 ; int i=0, n, som = 0 ; ts
while(i<4) do
{ {
printf("Donner un entier:"); printf("Donner un entier:");
scanf("%d",&n); scanf("%d",&n);
som +=n; som +=n;
i++ ; i++ ;
} }while(i<4) ;
printf("somme = %d\n",som); printf("somme = %d\n",som);
} }

[Link] page facebook


Exercice 3: (11pts)
#include<stdio.h>
main()
{
int A[4],T[1000];; 0.5 pts
int i,j,k,L,N=4,tmp,exist; popts
///affectation de -1 a T
for(i=0;i<1000;i++) T[i]=-1; 0.5 pts
popts
///lecture tab A:
for(i=0;i<N;i++)
do
1.5 pts { printf("\nEntrez chiffre %dieme elem du tab A : ",i);
popts scanf("%d",&A[i]);
}
1 pts si pas de
do…while while(A[i]<0 || A[i]>9);

///affichage de A
printf("\n");
for(i=0;i<N;i++) printf("%d\t",A[i]); 0.5 pts
puts("\n"); popts

///combin a deux
for(i=0;i<N;i++)
1.5 pts
for(j=0;j<N;j++)
popts
printf("(%d,%d)\t",A[i],A[j]);
puts("\n");

///combin a trois
NC=0;
for(i=0;i<N;i++)
for(j=0;j<N;j++)
for(k=0;k<N;k++)
2.5 pts
{ popts
T[NC]=A[i]*100+A[j]*10+A[k];
NC++;
}
printf("\nNC=%d",NC);
puts("\n");
///tri croissant
for(i=0;i<NC-1;i++)
for(j=i+1;j<NC;j++)
1 pts {
popts if(T[i]>T[j]) tmp=T[i],T[i]=T[j],T[j]=tmp;}

[Link] page facebook


puts("\n");

///completer T de 0 à 999
k=NC;
for(i=0;i<1000;i++)
{
for(exist=1,j=0;j<NC;j++)
if(i==T[j]) exist =0; 3 pts
if(exist) popts
{
T[k]=i;
k++;
}
}
puts("\n");
}

0.5 pts // Si on affiche le tableau T final après le tri, On aura un tableau


popts allant de 0 jusqu'à 999.

[Link] page facebook

Vous aimerez peut-être aussi