You are on page 1of 15

Examen

Bocal bocal@42.fr

Rsum: Ce document est votre sujet dexamen

Table des matires


I
I.1
I.2
I.3

Dtails administratifs
Consignes gnrales . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Le Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Types dexercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

II.1
II.2
II.3
II.4
II.5
II.6
II.7
II.8
II.9
II.10

Exercices
Exercice
Exercice
Exercice
Exercice
Exercice
Exercice
Exercice
Exercice
Exercice
Exercice

II

00
01
02
03
04
05
06
07
08
09

max . . . . . .
str_capitalizer
ft_strdup . . .
union . . . . .
pgcd . . . . . .
str_maxlenoc .
g_diam . . . .
death_race . .
time_lord . . .
half_life_3 . .

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

2
2
3
4
5
5
6
7
8
9
10
11
12
13
14

Chapitre I
Dtails administratifs
I.1

Consignes gnrales
Aucune forme de communication nest permise.
Ceci est un examen, il est interdit de discuter, dcouter de la musique, de faire
du bruit, ou de faon plus gnrale de produire toute nuisance pouvant dranger
les autres tudiants ou perturber le bon droulement de lexamen.
Vos tlphones portables et autres appareils technologiques doivent tre teints
et rangs hors datteinte. Si un tlphone sonne, toute la range concerne est
limine et doit sortir immdiatement.
Votre rpertoire home contient deux dossiers : "rendu" et "sujet".
Le rpertoire "sujet" contient le sujet de lexamen. Vous avez d le trouver, puisque
vous tes en train de lire ce document.
Le rpertoire "rendu" est un clone de votre dpot de rendu ddi cet examen.
Vous y ferez vos commits et vos pushs.
Seul le contenu que vous avez push sur votre dpot de rendu sera corrig. Le
dpt cessera daccepter les pushs lheure prcise de fin de lexamen, nattendez
donc pas le dernier moment pour pusher.
Vous ne pouvez excuter les programmes que vous avez compils vous-mme que
dans votre dossier "rendu" et ses sous-dossiers. Cela est interdit (et dailleurs impossible) ailleurs.
Chaque exercice doit tre ralis dans le rpertoire correspondant au nom indiqu
dans len-tte de chaque exercice.
Vous devez rendre, la racine du repertoire "rendu", un fichier nomm "auteur"
comprenant votre login suivi dun retour la ligne. Si ce fichier est absent ou mal
format, vous ne serez pas corrig. Le fichier auteur nest PAS rtrovalidable.
Par exemple :
$> cat -e ~/rendu/auteur
xlogin$

Examen

Certaines notions ncessaires la ralisation de certains exercices sont dcouvrir


dans les mans.
Cest un programme qui soccupe du ramassage, et de la correction. Vous devez
donc respecter les noms, les chemins, les fichiers et les rpertoires. . .
Les exercices stipuleront toujours les fichiers ramasss :
Lorsquun exercice demande des fichiers particuliers, ils seront nomms explicitement. Par exemple "fichier1.c fichier1.h".
Sinon, quand les noms / le nombre de fichiers sont laisss votre discrtion,
lexercice stipulera quelque chose de la forme "*.c *.h".
Lorsquun Makefile est requis, cela sera toujours explicitement prcis.
En cas de problme technique, de question sur le sujet, ou tout autre souci, vous
devez vous lever en silence et attendre quun surveillant vienne vous. Interdiction
absolue de parler vos voisins ou dappeler oralement le surveillant.
Tout matriel non explicitement autoris est implicitement interdit.
La correction ne sarrte pas forcment au premier exercice faux. Voir la section
Types dexercices.
Toute sortie de la salle est dfinitive.
Un surveillant peut vous expulser de la salle sans pravis sil le juge ncssaire.
Vous avez le droit des feuilles blanches et un stylo. Pas de cahier de notes, de
pense-bte ou autres cours. Vous tes seuls face votre examen.
Pour toute question aprs lexamen, crez un ticket sur le dashboard (dashboard.42.fr).

I.2

Le Code
Des fonctions utiles ou des fichiers supplmentaires sont parfois donns dans un
sous-rpertoire de ~/sujet/. Si ce dossier nexiste pas ou bien sil est vide, cest
que nous ne vous fournissons rien. Ce dossier sera gnralement nomm misc, mais
cela peut varier dun examen lautre.
La correction du code est automatise. Un programme testera le bon fonctionnement des exercices : la "Moulinette".
Lorsquun exercice vous demande dcrire un programme avec un ou plusieurs
fichiers nomms, votre programme sera compil avec la commande gcc -Wall
-Wextra -Werror ficher1.c fichier2.c fichiern.c -o nom_programme.
Lorsquun exercice vous demande dcrire un programme et laisse les noms et
le nombre de fichiers votre discrtion, votre programme sera compil avec la
commande : gcc -Wall -Wextra -Werror *.c -o nom_programme.
3

Examen
Enfin, lorquun exercice vous demande de rendre une fonction (et donc un seul fichier nomm), votre fichier sera compil avec la commande gcc -c -Wall -Wextra
-Werror votrefichier.c, puis nous compilerons notre main et linkerons lxcutable.
Les fonctions autorises sont indiques dans len-tte de chaque exercice. Vous
pouvez recoder toutes les fonctions qui vous semblent utiles votre guise. Lutilisation dune fonction qui nest pas autorise est assimile de la triche, et sera
sanctionne par un -42, sans appel.
Toute fonction non autorise explicitement est implicitement interdite.

I.3

Types dexercices

Il y a plusieurs types dexercices possibles, et ils ne sont pas tous corrigs de la mme
faon. Voici des explications :
Exercice obligatoire - Un exercice de ce type arrte immdiatement la correction sil nest pas russi. Comprendre par l que vous devez absolument le raliser
si vous voulez des points pour les exercices daprs.
Exercice rtrovalidable - Si vous ne rendez rien pour cet exercice, la correction
ne sarrte PAS, et vous pourrez obtenir les points de cet exercice quand mme si
vous russissez un exercice non-bonus plus loin dans lexamen. Cependant, si vous
rendez quoi que ce soit, et que vous chouez lexercice, la correction sarrte
immdiatement. Vous devez donc dcider entre tenter lexercice et risquer de perdre
les points de ceux daprs, ou ne pas le tenter, et faire directement un exercice plus
difficile.
Exercice bonus - Un exercice de ce type narrte jamais la correction sil est rat.
Il ne permet pas, par contre, dobtenir les points pour les exercices davant.

Chapitre II
Exercices
II.1

Exercice 00 - max
Exercice : 00
max

Dossier de rendu : ex00/


Fichiers rendre : max.c
Fonctions Autorises :
Remarques : Exercice rtrovalidable

crire la fonction suivante :


int

max(int* tab, unsigned int len);

Le premier paramtre est un tableau dint, le deuxime est le nombre dlments


contenus dans ce tableau.
La fonction renvoie le plus grand nombre trouv dans le tableau.
Si le tableau est vide, la fonction renvoie 0.

Examen

II.2

Exercice 01 - str_capitalizer
Exercice : 01
str_capitalizer

Dossier de rendu : ex01/


Fichiers rendre : str_capitalizer.c
Fonctions Autorises : write
Remarques : Exercice rtrovalidable

crire un programme qui prend en paramtre une ou plusieurs chanes de caractres,


et qui, pour chaque argument, met le premier caractre de chaque mot (sil sagit dune
lettre, videmment) en majuscule et le reste en minuscule, et affiche le rsultat sur la
sortie standard suivi dun \n.
On appelle "mot" une portion de chane de caractres dlimite soit par des espaces
et/ou des tabulations, soit par le dbut / fin de la chane. Si un mot a une seule lettre,
elle devra tre mise en majuscule.
Sil ny a aucun paramtre, le programme devra afficher \n.
Exemple :
$> ./str_capitalizer | cat -e
$
$> ./str_capitalizer "Premier PETIT TesT" | cat -e
Premier Petit Test$
$> ./str_capitalizer "DeuxiEmE tEST uN PEU moinS facile" "
UN DeRNier 0123456789pour LA rouTE
E " | cat -e
Deuxieme Test Un Peu Moins Facile$
Attention C'est Pas Dur Quand Meme$
Aller Un Dernier 0123456789pour La Route
E $
$>

attention C'EST pas dur QUAND mEmE" "ALLer

Examen

II.3

Exercice 02 - ft_strdup
Exercice : 02
ft_strdup

Dossier de rendu : ex02/


Fichiers rendre : ft_strdup.c
Fonctions Autorises : malloc
Remarques : Exercice rtrovalidable

Reproduire lidentique le fonctionnement de la fonction strdup (man strdup).


Votre fonction devra tre prototype de la faon suivante :
char

*ft_strdup(char *src);

Examen

II.4

Exercice 03 - union
Exercice : 03
union

Dossier de rendu : ex03/


Fichiers rendre : union.c
Fonctions Autorises : write
Remarques : Exercice rtrovalidable

crire un programme nomm union qui prend en paramtre deux chanes de caractres et qui affiche, sans doublon, les caractres qui apparaissent dans lune ou dans lautre.
Laffichage se fera dans lordre dapparition dans la ligne de commande.
Laffichage doit etre suivi dun retour la ligne.
Si le nombre de paramtres transmis est diffrent de 2, le programme affiche \n.
Exemple :
$>./union zpadinton "paqefwtdjetyiytjneytjoeyjnejeyj" | cat -e
zpadintoqefwjy$
$>./union ddf6vewg64f gtwthgdwthdwfteewhrtag6h4ffdhsd | cat -e
df6vewg4thras$
$>./union "rien" "cette phrase ne cache rien" | cat -e
rienct phas$
$>./union | cat -e
$
$>
$>./union "rien" | cat -e
$
$>

Examen

II.5

Exercice 04 - pgcd
Exercice : 04
pgcd

Dossier de rendu : ex04/


Fichiers rendre : pgcd.c
Fonctions Autorises : printf, atoi, malloc, free
Remarques : Exercice rtrovalidable

crire un programme qui prend deux chanes de caractres reprsentant des nombres
entiers positifs non nuls en paramtre.
Les entiers reprsents par les paramtres tiennent dans un int.
Afficher le plus grand diviseur commun ces deux nombres suivi de \n. Le PGCD
est toujours un entier positif non nul.
Si le nombre de paramtres est diffrent de 2, le programme affiche seulement \n.
Exemple :
$>
2$
$>
6$
$>
7$
$>
1$
$>
$

./pgcd 42 10 | cat -e
./pgcd 42 12 | cat -e
./pgcd 14 77 | cat -e
./pgcd 17 3 | cat -e
./pgcd | cat -e

Examen

II.6

Exercice 05 - str_maxlenoc
Exercice : 05

str_maxlenoc
Dossier de rendu : ex05/
Fichiers rendre : str_maxlenoc.c
Fonctions Autorises : write, malloc, free
Remarques : Exercice rtrovalidable

crire un programme qui prend en paramtres n chanes de caractres et qui affiche,


suivie dun retour la ligne, la plus grande chane de caractres incluse dans toutes les
chanes passes en paramtres. Si plusieurs chanes correspondent, on affichera celle qui
apparat en premier dans le premier paramtre. A noter que "" est forcment dans toutes
les chanes.
Si aucun paramtre nest transmis, le programme doit afficher \n.
Soit A et B des chanes de caracteres. On dit que A est inclus dans B si A est une
sous-chane de B ou si A et B sont identiques.
Exemples :
$>./str_maxlenoc
a
$>./str_maxlenoc
u
$>./str_maxlenoc
$
$>./str_maxlenoc
os
$>./str_maxlenoc
$

ab bac abacabccabcb
bonjour salut bonjour bonjour
xoxAoxo xoxAox

oxAox oxo

A ooxAoxx oxooxo Axo | cat -e

bosdsdfnjodur atehhellosd afkuonjosurafg headfgllosf fghellosag afdfbosnjourafg


| cat -e

10

Examen

II.7

Exercice 06 - g_diam
Exercice : 06
g_diam

Dossier de rendu : ex06/


Fichiers rendre : *.c, *.h
Fonctions Autorises : write, malloc, free
Remarques : Exercice rtrovalidable

crire un programme qui prend en paramtre une chane de caractres. Cette chane
reprsente un graphe et est compose dune suite dartes entre les noeuds de ce graphe.
Les artes sont spares par un espace. Les noeuds sont reprsentes par des nombres
et les arte par deux noeuds spars par -. Par exemple, sil existe une arte entre le
noeud 2 et le noeud 3, les reprsentations possibles de cette arte sont "2-3" et "3-2".
Le programme devra afficher le nombre de noeuds du plus long chemin, suivi dun
\n, en sachant quil est impossible de passer par un noeud plus dune fois.
Si le nombre de paramtres transmis est diffrent de 1, le programme affiche \n.
Exemple :
$>./g_diam "17-5 5-8 8-2 2-8 2-8 17-21 21-2 5-2 2-6 6-14 6-12 12-19 19-14 14-42" | cat -e
10$
$>./g_diam "1-2 2-3 4-5 5-6 6-7 7-8 9-13 13-10 10-2 10-11 11-12 12-8 16-4 16-11 21-8 21-12 18-10 18-13
21-18" | cat -e
15$

11

Examen

II.8

Exercice 07 - death_race
Exercice : 07

death_race
Dossier de rendu : ex07/
Fichiers rendre : secret
Fonctions Autorises : Tout ce que vous voulez
Remarques : Exercice bonus

Vous trouverez dans lannexe du sujet un excutable death_race ainsi que sa source
(censure), race.c.
Vous devez rendre un fichier secret contenant la phrase secrte qui vous est donne
par lexcutable death_race fourni, sans aucun caractre ou saut de ligne supplmentaire.

12

Examen

II.9

Exercice 08 - time_lord
Exercice : 08

time_lord
Dossier de rendu : ex08/
Fichiers rendre : secret
Fonctions Autorises : Tout ce que vous voulez
Remarques : Exercice bonus

Vous trouverez un excutable nomm time_lord dans le rpertoire misc/ de cet


examen. Quand vous excutez ce binaire, il affiche le nombre de secondes restantes avant
dafficher la phrase secrte. Quand le nombre de secondes est dpass, le binaire affiche
la phrase secrte (sans aucun caractre supplmentaire). Votre travail consiste trouver
cette phrase secrte par nimporte quel moyen. Vous devez copier la phrase secrte telle
quelle sans AUCUN caractre supplmentaire dans un fichier nomm secret. Vous devez
rendre ce fichier avec la bonne phrase pour valider cet exercice.

13

Examen

II.10

Exercice 09 - half_life_3
Exercice : 09

half_life_3
Dossier de rendu : ex09/
Fichiers rendre : secret
Fonctions Autorises : Tout ce que vous voulez, y compris les prieres vaudou
Remarques : Exercice bonus

Vous trouverez en annexe de ce sujet un binaire half_life_3. Vous devez lactiver,


et pour a, il vous faut une cl.
Vous devez rendre un fichier secret contenant une cl accepte par ce binaire, sans
saut de ligne ni caractre supplmentaire.

14

You might also like