===== Interaction avec l'utilisateur ===== ==== Discriminant ==== Écrivez le programme permettant de calculer les racines d'un polynôme de second degré en utilisant la méthode du discriminant ( Δ=b²-4ac pour p(x)=ax²+bx+c ). Nous ne nous intéressons qu'aux racines réelles. Le programme doit donc demander a, b et c, puis afficher les racines s'il y en a. Dans le cas où il y a une seule racine, le programme ne doit afficher qu'une seule valeur. Pour ce programme, vous aurez besoin des fonction //sqrt// (racine carrée) et/ou //pow// (puissance). Ces fonctions sont disponibles dans la bibliothèque qui est accessible quand vous compilez avec l'option supplémentaire '-lm' ---- ==== Calcul de valeurs de polynômes ==== Écrivez un programme qui récupère les coefficients d'un polynôme de degré //n// en ligne de commande. Ce programme demandera ensuite des valeurs numériques en boucle. Si l'utilisateur fourni une valeur (//x//), le programme affiche la valeur de //P(x)//. Si l'utilisateur appuie sur //Entrée// sans fournir de valeur, la boucle se termine (et donc le programme aussi). == La puissance d'UNIX == Si vous créez un fichier texte contenant une valeur de x pour chaque ligne, vous pouvez alors utiliser une redirection pour alimenter les valeurs x de votre programme (caractère '**<**'). La syntaxe pour le polynôme //x²-1// est la suivante : ./programme 1 0 -1 < fichier_de_valeurs_x Toujours en utilisant les redirection, vous pouvez stocker les résultats dans un fichier au lieu de les afficher (caractère '**>**'). La syntaxe est alors : ./programme 1 0 -1 > fichier_de_resultats < fichier_de_valeurs_x ---- ==== Jeu du + ou - ==== Écrivez un programme qui demande à l'utilisateur de deviner un nombre pris au hasard, par propositions successives. Au tout début, choisi un nombre au hasard à l'aide de la fonction //rand()// (cette fonction est présente dans //stdlib.h//, lisez le manuel pour plus de détails). Ensuite, il demande une proposition à l'utilisateur et indique si la proposition était supérieure ou inférieure au nombre à deviner. Le programme continue à demander une valeur jusqu'à ce que la proposition de l'utilisateur soit correcte. Il affiche alors le nombre de tentatives. == A propos des valeurs aléatoires == Sur tout système numérique (et donc déterministe), il n'est pas possible de générer des valeurs réellement aléatoires, on utilise plutôt des générateurs pseudo-aléatoires. Souvent, on utilise l'heure et la date pour initialiser le générateur, sinon, la séquence pseudo-aléatoire sera toujours identique. Cette initialisation est effectuée par la fonction //srand()//. La syntaxe est alors la suivante : #include ... ... srand(time(NULL)); Cette technique ne doit être utilisée que lorsque le programme a été debuggé, il est en effet beaucoup plus difficile de debugger un programme lorsqu'on veut que ce dernier aie un comportement aléatoire