Bonjour,<br><br>
Ayant fini le tutoriel de Mateo , j'ai decider de refaire toute les fonctions (ou du moins celle que j'utilise souvent), Après avoir fait quelques fonctions assez simple carré,puissance ... je passe Maintenant au printf .<br><br>
Malheuresement je ne comprend pas comment je peux ecrire du code sans cette fonction , j'aimerais donc quelques idées pour demarrer à coder cette fonction <br><br><div class="rmq information">Pour l'instant je vais simplement essayé de pouvoir encrire des chiffres , pour les caractère on verra plus tard </div><br><br>
MerciLe 28 février 2010 à 13:28:47
Bonjour,
Ayant fini le tutoriel de Mateo , j'ai decider de refaire toute les fonctions (ou du moins celle que j'utilise souvent), Après avoir fait quelques fonctions assez simple carré,puissance ... je passe Maintenant au printf .
Malheuresement je ne comprend pas comment je peux ecrire du code sans cette fonction , j'aimerais donc quelques idées pour demarrer à coder cette fonction
Pour l'instant je vais simplement essayé de pouvoir encrire des chiffres , pour les caractère on verra plus tard
il faut chercher le prototype de cette fonction qui est intégrer dans l'un des dossier de votre compilateur si ton compilateur donne toi l'accèsLe 28 février 2010 à 13:32:20
il faut chercher le prototype de cette fonction qui est intégrer dans l'un des dossier de votre compilateur si ton compilateur donne toi l'accès
En fait, pour recoder une ebauche de printf, tu vas devoir utiliser d'autre fonctions standards qui permettent d'ecrire du texte (genre puts, putc ...).<br>
Parce que si tu essais de recoder printf a partir de 0, ça va etre beaucoup trop dur.Le 28 février 2010 à 13:54:30
En fait, pour recoder une ebauche de printf, tu vas devoir utiliser d'autre fonctions standards qui permettent d'ecrire du texte (genre puts, putc ...).
Parce que si tu essais de recoder printf a partir de 0, ça va etre beaucoup trop dur.
C'est une fonction elliptique (je crois que ca s'appel comme ca). Fais une recherche dessus. Le mieux serai effectivement de trouver le prototype de la fonction.Le 28 février 2010 à 13:59:38
C'est une fonction elliptique (je crois que ca s'appel comme ca). Fais une recherche dessus. Le mieux serai effectivement de trouver le prototype de la fonction.
<p><strong>Citation : light-next</strong></p><blockquote>Après avoir fait quelques fonctions assez simple carré,puissance ... je passe Maintenant au printf .</blockquote><br>
En gros tu passes de extrémement simpliste à très compliqué. Ya pas mal de choses que tu n'as pas vues (dans le tuto de M@teo du moins) que tu dois connaître pour recoder un printf(), même basique et allégé.Le 28 février 2010 à 14:02:36
Citation : light-next
Après avoir fait quelques fonctions assez simple carré,puissance ... je passe Maintenant au printf .
En gros tu passes de extrémement simpliste à très compliqué. Ya pas mal de choses que tu n'as pas vues (dans le tuto de M@teo du moins) que tu dois connaître pour recoder un printf(), même basique et allégé.
printf est une fonction a arguments variables (qui demande de connaitre stdarg) et une fonction avec beaucoup de cas a traiter (%s, %d %f %0.6f ... \\ \n %% ... etc)<br>
Elle sera longue a refaire.<br><br>
Elle s'appuie sur la fonction fputc qui écrit un caractère. Certains étudiants d'écoles d'info ont ce TP a faire, de recoder printf : mais ils en chient déja pas mal <img src="/bundles/tinymce/vendor/tiny_mce/plugins/emotions/img/smile.png" alt=":)" class="smilies"><br>Le 28 février 2010 à 14:09:59
printf est une fonction a arguments variables (qui demande de connaitre stdarg) et une fonction avec beaucoup de cas a traiter (%s, %d %f %0.6f ... \\ \n %% ... etc)
Elle sera longue a refaire.
Elle s'appuie sur la fonction fputc qui écrit un caractère. Certains étudiants d'écoles d'info ont ce TP a faire, de recoder printf : mais ils en chient déja pas mal
Ha donc elle s'appuie elle meme sur fputc.<br>
Ca facilite un peu le travail.<br>
Mais rien que pour parser et traiter la premiere chaine (qui correspond au format), il y a deja de quoi s'amuser ...Le 28 février 2010 à 14:14:08
Ha donc elle s'appuie elle meme sur fputc.
Ca facilite un peu le travail.
Mais rien que pour parser et traiter la premiere chaine (qui correspond au format), il y a deja de quoi s'amuser ...
ok je ferai ça lorsque j'aurais un peu plus d'experience alors <img src="/bundles/tinymce/vendor/tiny_mce/plugins/emotions/img/clin.png" alt=";)" class="smilies"> .<br><br>
Pour ne pas crée de topic pour chaque fonction que je veux faire , je vais poster ici lorsque j'ai des difficultées pour créer tel ou tel fonction .<br><br>
En voici une <img src="/bundles/tinymce/vendor/tiny_mce/plugins/emotions/img/heureux.png" alt=":D" class="smilies"> . J'essaye de refaire la fonction sqrt Pour cela je me suis demander quel formule il faut que j'utilise , etant en terminal je ne le sais toujours pas <img src="/bundles/tinymce/vendor/tiny_mce/plugins/emotions/img/rire.gif" alt=":lol:" class="smilies"> . Bon donc je vais faire avec un peu de logique ce qui me donne ça :<br><br>
Fonction :<br><pre class="brush: c;">double racine( double racine )
{
double resultat = 0.000;
double i = 0.000;
double maximum = racine;
for( i = 0.000 ; i < maximum ; i += 0.001 )
{
if( i * i == racine)
{
resultat = i;
}
}
return resultat;
}
</pre> <br><br>
Prototype :<br><pre class="brush: c;">double racine(double naturel);
</pre><br><br>
Main.c :<br><pre class="brush: c;">printf("%f",racine(25));
</pre><br><br><div class="rmq attention">Malheuresement j'obtient 0.0000 au lieu de 5.00000 <img src="/bundles/tinymce/vendor/tiny_mce/plugins/emotions/img/mechant.png" alt=":colere2:" class="smilies">
</div><br><br><div class="rmq information">Ah oui , le nombre x sera en general plus grand que la racine de x , apart si celui si est inferieur à 1 donc pour la condition je la ferai plus tard</div>Le 28 février 2010 à 16:10:31
ok je ferai ça lorsque j'aurais un peu plus d'experience alors .
Pour ne pas crée de topic pour chaque fonction que je veux faire , je vais poster ici lorsque j'ai des difficultées pour créer tel ou tel fonction .
En voici une . J'essaye de refaire la fonction sqrt Pour cela je me suis demander quel formule il faut que j'utilise , etant en terminal je ne le sais toujours pas . Bon donc je vais faire avec un peu de logique ce qui me donne ça :
Fonction :
double racine( double racine )
{
double resultat = 0.000;
double i = 0.000;
double maximum = racine;
for( i = 0.000 ; i < maximum ; i += 0.001 )
{
if( i * i == racine)
{
resultat = i;
}
}
return resultat;
}
Prototype :
double racine(double naturel);
Main.c :
printf("%f",racine(25));
Malheuresement j'obtient 0.0000 au lieu de 5.00000
Ah oui , le nombre x sera en general plus grand que la racine de x , apart si celui si est inferieur à 1 donc pour la condition je la ferai plus tard
Déja, jamais de == sur un double. C'est la d'ou vient ton soucis.<br>
Car 5.0 * 5.0, est ce que, pour la machine, ça fait exactement 25, ou alors ça fait 25.000000000000000000000000001 ?<br><br>
Tu ne sais pas...<br><br>
Donc pas de ==<br><br>
Sinon, je te suggere plutot une approche dichotomique.Le 28 février 2010 à 18:24:04
Déja, jamais de == sur un double. C'est la d'ou vient ton soucis.
Car 5.0 * 5.0, est ce que, pour la machine, ça fait exactement 25, ou alors ça fait 25.000000000000000000000000001 ?
Tu ne sais pas...
Donc pas de ==
Sinon, je te suggere plutot une approche dichotomique.
<p><strong>Citation : Fvirtman</strong></p><blockquote>Déja, jamais de == sur un double</blockquote><br>
Tout d'un coup , j'ai l'impression que les doubles sont beaucoup moins flexible <img src="/bundles/tinymce/vendor/tiny_mce/plugins/emotions/img/heureux.png" alt=":D" class="smilies"> . Enfin si l'on peut pas comparer des doubles ...<br><br><span class="barre">Qu'est ce cette approche dichotomique ?</span><br><br>
J'ai pu voir sur wikipedia <img src="/bundles/tinymce/vendor/tiny_mce/plugins/emotions/img/pinch.png" alt=">_<" class="smilies"> , que c'est une serie de conditions de superieur / inferieur contrairement au egalité , cela permet de faire beaucoup moins de conditions ... c'est ce que j'ai compris<br><br>
Mais la à l'occurence même avec cette approche je vais à la fin faire une conditions d'egalité ... ce qui m'amenera encore au defaut du type double <img src="/bundles/tinymce/vendor/tiny_mce/plugins/emotions/img/triste.png" alt=":(" class="smilies"><br><br>
MerciLe 28 février 2010 à 19:37:39
Citation : Fvirtman
Déja, jamais de == sur un double
Tout d'un coup , j'ai l'impression que les doubles sont beaucoup moins flexible . Enfin si l'on peut pas comparer des doubles ...
Qu'est ce cette approche dichotomique ?
J'ai pu voir sur wikipedia , que c'est une serie de conditions de superieur / inferieur contrairement au egalité , cela permet de faire beaucoup moins de conditions ... c'est ce que j'ai compris
Mais la à l'occurence même avec cette approche je vais à la fin faire une conditions d'egalité ... ce qui m'amenera encore au defaut du type double
tu fais la dichotomie jusqu'a ce que ta borne max et min aient une différence plus petite qu'un espilon que tu détermines.<br><br>
La dichotomie, regarde le juste prix pour comprendre, a la fin quand ils évaluent la vitrine. C'est ça <img src="/bundles/tinymce/vendor/tiny_mce/plugins/emotions/img/smile.png" alt=":)" class="smilies">Le 28 février 2010 à 19:50:22
tu fais la dichotomie jusqu'a ce que ta borne max et min aient une différence plus petite qu'un espilon que tu détermines.
La dichotomie, regarde le juste prix pour comprendre, a la fin quand ils évaluent la vitrine. C'est ça
Pas facile à reduire ce min et max pour trouver le carré <img src="/bundles/tinymce/vendor/tiny_mce/plugins/emotions/img/clin.png" alt=";)" class="smilies"> j'aurai pu lui faire une boucle concernant tout les nombre qui existe <img src="/bundles/tinymce/vendor/tiny_mce/plugins/emotions/img/heureux.png" alt=":D" class="smilies"> . (je te jure j'ai essayé mais j'ai fermé mon programme bien avant la fin du traitement <img src="/bundles/tinymce/vendor/tiny_mce/plugins/emotions/img/rire.gif" alt=":lol:" class="smilies"> )Le 28 février 2010 à 20:08:25
Pas facile à reduire ce min et max pour trouver le carré j'aurai pu lui faire une boucle concernant tout les nombre qui existe . (je te jure j'ai essayé mais j'ai fermé mon programme bien avant la fin du traitement )
Ya un algorithme qui calcule la racine carrée d'un nombre. Par contre je saurai pas l'expliquer (chui nul en maths) donc je poste juste le code...<div class="spoiler2_hidden"><div class="spoiler3_hidden"><pre class="brush: c;">#include <stdio.h>
int main(void)
{
double N = 9781412; //on cherche la racine de N
double essai = N; //initialisation à n'importe quel nombre sauf 0
double dernierEssai; //cette variable sert à savoir si on est assez précis
do
{
dernierEssai = essai;
essai = ((N/essai) + essai)/2; //pour converger...
}while(dernierEssai != essai); //si ce tour de boucle n'a rien changé, la précision est maximale
printf("%f\n", essai);
return 0;
}
</pre></div></div>Le 28 février 2010 à 20:14:35
Ya un algorithme qui calcule la racine carrée d'un nombre. Par contre je saurai pas l'expliquer (chui nul en maths) donc je poste juste le code...
#include <stdio.h>
int main(void)
{
double N = 9781412; //on cherche la racine de N
double essai = N; //initialisation à n'importe quel nombre sauf 0
double dernierEssai; //cette variable sert à savoir si on est assez précis
do
{
dernierEssai = essai;
essai = ((N/essai) + essai)/2; //pour converger...
}while(dernierEssai != essai); //si ce tour de boucle n'a rien changé, la précision est maximale
printf("%f\n", essai);
return 0;
}
Moi non plus , je comprend pas du tout les calcul venant de la boucle <img src="/bundles/tinymce/vendor/tiny_mce/plugins/emotions/img/pinch.png" alt=">_<" class="smilies">Le 28 février 2010 à 20:34:27
Moi non plus , je comprend pas du tout les calcul venant de la boucle
Moi je saurais pas trop l'expliquer non plus. Je peux essayer de t'expliquer l'algorithme :<br><br>
Imagines que tu cherches la racine de 50 :<br><br>
tu fais une approximation (50/2 = 25 par exemple)<br>
ensuite tu calcules la moyenne de 50/25(=2) et de 25. <br>
On trouve (25+2) / 2 = 13.5<br><br>
tu recommences, cette fois-ci l'approximation est 13.5<br>
tu calcules la moyenne de 50/13.5(=3.7037037) et de 13.5. <br>
On trouve (3.7037037+13.5) / 2 = 8.60185185<br><br>
tu recommences avec 8.60185185...<br><br><br>
La variable dernierEssai sert juste à savoir si il faut s'arrêter.Le 28 février 2010 à 20:53:14
Moi je saurais pas trop l'expliquer non plus. Je peux essayer de t'expliquer l'algorithme :
Imagines que tu cherches la racine de 50 :
tu fais une approximation (50/2 = 25 par exemple)
ensuite tu calcules la moyenne de 50/25(=2) et de 25.
On trouve (25+2) / 2 = 13.5
tu recommences, cette fois-ci l'approximation est 13.5
tu calcules la moyenne de 50/13.5(=3.7037037) et de 13.5.
On trouve (3.7037037+13.5) / 2 = 8.60185185
tu recommences avec 8.60185185...
La variable dernierEssai sert juste à savoir si il faut s'arrêter.
Topic plus ou moins résolu <img src="/bundles/tinymce/vendor/tiny_mce/plugins/emotions/img/smile.png" alt=":)" class="smilies">Le 28 février 2010 à 22:05:26
Topic plus ou moins résolu
La fonction printf
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.