Vous êtes sur la page 1sur 6

Examen 2023/2024

(Algorithmique et Initiation a la Programmation - S.N.


Correction)

1 Exercice
Écrire un algorithme qui permet de calculer et d’afficher la première valeur de k produisant
une somme S strictement superieur á 2 et en déduire sa position dans les termes de S.
1 1 1 1
S= + + + ··· +
3 8 13 k

1
§ Solution :

1 Variables : s,k : reel


2 Debut :
3 s := 1/3
4 k := 8
5 Tantque (s <= 2)
6 s := s + 1/k
7 k := k + 5
8 FinTantque
9 Ecrire("la position cherche de k est :",((k-3)/5)+1)
10 Fin

2 Exercice
Sans recopier le programme ci-dessous sur la feuille d’examen, donner uniquement le résultat
de son éxecution.
Donner le résulat du programme ci-dessous :

2
#include <stdio.h>

main()
{
float A1[4] = {2, 4, 6}, A2[4] = {1, 3};
float B1[4], B2[4], B3[4];
int i;

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


{
if( i%2 == 1){
B1[i] = A1[i]++;
B2[i] = A1[i]/2;
B3[i] += B2[i]/2;
}
else
{

1 Informatique-1 © Compil’Court
B1[i] = ++A2[i];
B2[i] = A2[i]/2;
B3[i] += B2[i] * 2;
}
printf("%f\t%f\t%f\n", B1[i], B2[i], B3[i]);
}
}

§ Solution :
Expliquant d’abord les étapes.

Les variables sont initialisées à :

A1[4] = {2, 4, 6, 0} A2[4] = {1, 3, 0, 0}

B1[4] = {0, 0, 0, 0} B2[4] = {0, 0, 0, 0} B3[4] = {0, 0, 0, 0}


— Pour i = 0 :
On a : i % 2 ! = 1.
Donc on aura les changements suivants selon chaque instruction.
B1[i] = ++A2[i];

A1 = {3, 4, 6, 0}
A2 = {2, 3, 0, 0}
B1 = {2, 0, 0, 0}
B2 = {0, 0, 0, 0}
B3 = {0, 0, 0, 0}

B2[i] = A2[i]/2;

A1 = {3, 4, 6, 0}
A2 = {2, 3, 0, 0}
B1 = {2, 0, 0, 0}
B2 = {1, 0, 0, 0}
B3 = {0, 0, 0, 0}

B3[i] += B2[i] * 2;

A1 = {3, 4, 6, 0}
A2 = {2, 3, 0, 0}
B1 = {2, 0, 0, 0}
B2 = {1, 0, 0, 0}
B3 = {2, 0, 0, 0}

L’instruction suivante pour afficher :


printf("%f\t%f\t%f\n", B1[i], B2[i], B3[i]);

© Compil’Court Informatique-1 2
2.000000 1.000000 2.00000

— Pour i = 1 :
On a : i % 2 == 1.
Donc on aura les changements suivants selon chaque instruction.
B1[i] = A1[i]++;

A1 = {3, 5, 6, 0}
A2 = {2, 3, 0, 0}
B1 = {2, 4, 0, 0}
B2 = {1, 0, 0, 0}
B3 = {2, 0, 0, 0}

B2[i] = A1[i]/2;

A1 = {3, 5, 6, 0}
A2 = {2, 3, 0, 0}
B1 = {2, 4, 0, 0}
B2 = {1, 2.5, 0, 0}
B3 = {2, 0, 0, 0}

B3[i] += B2[i] / 2;

A1 = {3, 5, 6, 0}
A2 = {2, 3, 0, 0}
B1 = {2, 4, 0, 0}
B2 = {1, 2.5, 0, 0}
B3 = {2, 1.25, 0, 0}
L’instruction suivante pour afficher :
printf("%f\t%f\t%f\n", B1[i], B2[i], B3[i]);

4.000000 2.500000 1.25000

— Pour i = 2 :
On a : i % 2 ! = 1.
Donc on aura les changements suivants selon chaque instruction.
B1[i] = ++A2[i];

A1 = {3, 5, 6, 0}
A2 = {2, 3, 1, 0}
B1 = {2, 4, 1, 0}
B2 = {1, 2.5, 0, 0}
B3 = {2, 1.25, 0, 0}

3 Informatique-1 © Compil’Court
B2[i] = A2[i]/2;

A1 = {3, 5, 6, 0}
A2 = {2, 3, 1, 0}
B1 = {2, 4, 1, 0}
B2 = {1, 2.5, 0.5, 0}
B3 = {2, 1.25, 0, 0}

B3[i] += B2[i] * 2;

A1 = {3, 5, 6, 0}
A2 = {2, 3, 1, 0}
B1 = {2, 4, 1, 0}
B2 = {1, 2.5, 0.5, 0}
B3 = {2, 1.25, 1, 0}

L’instruction suivante pour afficher :


printf("%f\t%f\t%f\n", B1[i], B2[i], B3[i]);

1.000000 0.500000 1.00000

— Pour i = 3 :
On a : i % 2 == 1.
Donc on aura les changements suivants selon chaque instruction.
B1[i] = A1[i]++;

A1 = {3, 5, 6, 1}
A2 = {2, 3, 1, 0}
B1 = {2, 4, 1, 0}
B2 = {1, 2.5, 0.5, 0}
B3 = {2, 1.25, 1, 0}

B2[i] = A1[i]/2;

A1 = {3, 5, 6, 1}
A2 = {2, 3, 1, 0}
B1 = {2, 4, 1, 0}
B2 = {1, 2.5, 0.5, 0.5}
B3 = {2, 1.25, 1, 0}

B3[i] += B2[i] / 2;

© Compil’Court Informatique-1 4
A1 = {3, 5, 6, 1}
A2 = {2, 3, 1, 0}
B1 = {2, 4, 1, 0}
B2 = {1, 2.5, 0.5, 0.5}
B3 = {2, 1.25, 1, 0.25}

L’instruction suivante pour afficher :


printf("%f\t%f\t%f\n", B1[i], B2[i], B3[i]);

0.000000 0.500000 0.25000

3 Exercice
Une association humanitaire d’une application informatique pour faire le suivi des victimes
suite à l’agression contre Gaza.
Pour cela on doit un programme C qui permet de géer des informations sur les victimes
telles que nom, prénom, ville, catégorie (homme ou femme), date d’agression sur la victime
(jours/mois/année).
Le programme permet de :
— Saisir à partir du clavier les informations de 50 victimes.
— Afficher le nombre de victimes femmes nbvf et celui des hommes nbvh .
— Afficher les noms et les prénomes des victimes de la ville de Jabaliya.
— Afficher le nombre de victimes nbv du mois de décembre 2023.

3
§ Solution :

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

struct Victime {
char nom[50];
char prenom[50];
char ville[50];
char categorie; // ’h’ pour homme, ’f’ pour femme
int jour;
int mois;
int annee;
};

int main() {
struct Victime victimes[50];
int nbv_f = 0, nbv_h = 0, nbv_decembre = 0, i;

for (i = 0; i < 50; i++) {


printf("Saisir les informations de la victime %d:\n", i + 1);
printf("Nom: \n");
scanf("%s", victimes[i].nom);
printf("Prenom: \n");
scanf("%s", victimes[i].prenom);
printf("Ville: \n");
scanf("%s", victimes[i].ville);
printf("Categorie (h/f): \n");
scanf(" %c", &victimes[i].categorie);

5 Informatique-1 © Compil’Court
printf("Date d’agression (jour mois annee): \n");
scanf("%d %d %d", &victimes[i].jour, &victimes[i].mois, &victimes[i].annee);

if (victimes[i].categorie == ’f’) {
nbv_f++;
} else if (victimes[i].categorie == ’h’) {
nbv_h++;
}

if (victimes[i].mois == 12 && victimes[i].annee == 2023) {


nbv_decembre++;
}
}

printf("Nombre de victimes femmes : %d\n", nbv_f);


printf("Nombre de victimes hommes : %d\n", nbv_h);

printf("Victimes de la ville de Jabaliya:\n");


for (i = 0; i < 50; i++) {
if (strcmp(victimes[i].ville, "Jabaliya") == 0) {
printf("%s %s\n", victimes[i].nom, victimes[i].prenom);
}
}

printf("Nombre de victimes du mois de decembre 2023 : %d\n", nbv_decembre);

return 0;
}

© Compil’Court Informatique-1 6

Vous aimerez peut-être aussi