Chris_27 Bah c'est une sorte de power mais sans les nombre a virgule ![]()
Donc elle calcule la puissance et comme elle ne fait pas que des nombre naturel je ne peut pas avoir des nombre genre -5 alors j'ai fait une condition qui interdit les nombre négatives mais du coup je renvoie quoi dans cette condition ![]()
Gleuh Je sais mais je voulais dire je renvoie quoi sur une fonction int si je peut pas utilisé cout ![]()
Oups je pense que je vous ai embrouille
Pour faire simple par quoi remplacer le cout ?
J'ai dis *précisément*
Ta fonction, elle prend deux entrées, pourquoi ? La valeur de retour c'est un entier, pourquoi ? comment la sortie est-elle reliée à l'entrée ?
Est-ce que c'est ta fonction qui va faire l'affichage ? si oui, quel est l'intérêt de retourner une valeur ?
iLIKEto, c'est a toi de definir le comportement dans une condition d'erreur. Il y a plusieurs facon de traiter le probleme. Soit tu renvoies une valeure fixe, soit tu renvoie n'importe quoi (undefined behavior), soit tu crash l'application (c'est bien fait pour l'utilisateur), soit tu envoie une exception (tu ne sais probablement pas ce que c'est a ce niveau de ton apprentissage)
J'oubliais un autre point important :
Les valeurs passées en entrée seront elles modifiées par ta fonction ?
Ta fonction, elle prend deux entrées, pourquoi ?
Le premier ^le 2 eme
La valeur de retour c'est un entier, pourquoi ?
Personnellement j'ai encore jamais vue a^b = obiwan kenobi ![]()
comment la sortie est-elle reliée à l'entrée ?
J'ai pas trop compris la question mais je pense que la sorti c'est a^b ![]()
Est-ce que c'est ta fonction qui va faire l'affichage ?si oui, quel est l'intérêt de retourner une valeur ?
Tu viens de me faire comprendre mon erreur merci ![]()
Les valeurs passées en entrée seront elles modifiées par ta fonction ?
Heu oui , tu viens de me faire réaliser l’utilité des const 2 fois merci
godrik
Grâce a Chris j'ai gérer l'erreur sur la fonction man
http://pastebin.com/pQZ4fZqH
Mais j'avoue que laissé les utilisateur galéré me plais beaucoup plus ![]()
« je pense que la sorti c'est a^b »
oui, c'est la réponse attendue à la question.
De fait, les questions sur les entrées et la sortie forment un bloc de questions auxquelles il faut répondre d'un seul coup normalement.
« Les valeurs passées en entrée seront elles modifiées par ta fonction ?
Heu oui , tu viens de me faire réaliser l’utilité des const 2 fois merci »
haha... c'est précisément à cause de ça que j'ai mis la question dans un deuxième message. Oui... et non.
Ici, tu manipules des types de base. Donc soit tu dois modifier la valeur et dans ce cas il faut passer l'argument par référence (int& par exemple), soit tu ne modifies pas et dans ce cas il faut utiliser le passage par copie (int). Comme il s'agit d'une copie (parce que le type est primitif), que tu mettes const ou pas n'a pas d'incidence. Même si tu modifiais la copie, ça ne changerait pas la valeur que tu donnes à la fonction. ![]()
"soit tu ne modifies pas et dans ce cas il faut utiliser le passage par copie (int). Comme il s'agit d'une copie (parce que le type est primitif), que tu mettes const ou pas n'a pas d'incidence. Même si tu modifiais la copie, ça ne changerait pas la valeur que tu donnes à la fonction. "
le pire dans tous sa c'est que d et g sont des copie et j'ai malgré tous changé les valeur
je crains qu'il ni y a plus d'espoir je vais acheter une corde et je reviens ![]()
« le pire dans tous sa c'est que d et g sont des copie et j'ai malgré tous changé les valeurs »
mais c'est valide et sans impact pour la suite. Tu ne veux pas que ta fonction modifie les valeurs initiales, tu as passé les arguments par copie, donc ta fonction ne modifie pas les valeurs initiales.
Après, ce n'est pas très propre. ![]()
C'est bien tu avances prudement mais sûrement.
Juste encore deux trois trucs à corriger dans l'ordre :
1) Bordel à cul vas tu indenter ton code un jour ou l'autre ?! :D
2) Tu devrais prendre dès maintenant de ne rédiger ton code qu'en anglais.
3) Maintenant que tu connais les fonctions je te conseille de faire une fonction getInt et getFloat qui te permettent de choper l'entrée utilisateur, vérifier si c'est bien le type attendu et retourner le résultat (ou pas).
4) Maintenant que tu es un peu plus à l'aise avec les fonctions essaye de refaire la fonction pow rapide en utilisant la récurrence comme le mentionne la version officielle... (http://fr.wikipedia.org/wiki/Exponentiation_rapide#Algorithme)
pourquoi sa pas très propre ? ![]()
Car j'ai laissé la copie et modifier l'original ou bien ?
Après j'ai arrêté le tuto du sdz
donc je dois continué a apprendre les tableaux les pointeur la poo et c'est tous ? je serai prêt a apprendre une ATI genre direct x ( je sais c'est du gros poisson
)
tbop2 pour l'indentation je vois sa comme un jour lointain .... bon ok le prochain code sera indentai ![]()
2
bonne idée je vais utilisé google translate comme sa je pourrai apprendre ![]()
3
je te promet rien ![]()
4
je fais sa de suite ![]()
tbop2: ça pue le code::blocks ou équivalent, et l'indentation pue du cul avec cette veine de softs.
iLIKEto:
« pourquoi sa pas très propre ? »
disons que, en temps normal (et pour éviter les bugs dans des fonctions un peu grosses), on évite de modifier les copies de façon à toujours avoir accès aux valeurs passées en argument. ![]()
« google translate »
nan, ça ça marche pas. Mieux vaut un code en bon français qu'un code en franglais.
tbop2: en vrai, c'est vraiment un niveau au dessus et pas prioritaire la récursivité (point 4). ![]()
A ok mais sa reste un peu flou enfin on verra sa avec la pratique ![]()
Et sinon la récurrence c'est quoi a peu près ![]()
le lien que tu ma donné c'est de l'Exponentiation rapide or il y a déjà l'Exponentiation rapide rapide dans mon code ![]()
Genre si il me donne x^8 je dois faire ((x^2)^2)^2 et si il me donne x^6 je dois faire x*((x^2)^2) ? ![]()
"donc je dois continué a apprendre les tableaux les pointeur la poo et c'est tous"
Je veut pas te décourager mais le C++ ça met des années a apprendre, disons un an pour baragouiner, 2 ans pour être à l'aise et bien plus pour maîtriser. C'est vraiment un travail de patience mais tu semble bien parti, le plus important est de pratiquer.
Sinon après une lecture rapide de ton code plusieurs choses:
1)Je plussoie tbop2 pour l'indentation c'est vraiment horrible à lire
2)Ce n'est pas une exponentiation rapide, tu ne décompose la puissance qu'une fois(ex: pour 2^8 tu fais (2^2)^4 et non ((2^2)^2)^2). De toute façon sans récurrence c'est plutôt délicat une exponentiation rapide.
3)Le "(puissance-1)/2;" a la ligne 26 peut être remplacé par puissance / 2, c'est une division entière.
x^6 = x^2 * ((x2)^2) désolé mal conté ![]()
hyrulink2
Oui je sais que c'est long mais j'aimerai bien avoir un programme a suivre
3
heu c'est un nombre impair donc je fais comme ils disent sur le wiki ![]()
La récurrence c'est très simple: c'est le fait d’appeler la fonction A dans la fonction A elle-même mais il faut une condition d'arrêt.
Exemple pour factiorielle:
!n =
1 si n = 1 ou 0
n * !(n - 1) sinon
En code sa se traduit par:
int fact(int n)
{
return n > 1 ? n * fact(n - 1) : 1;
}
"nan, ça ça marche pas. Mieux vaut un code en bon français qu'un code en franglais. "
Ce qui n'est pas faux... Après faut bien se lancer un jour ! Le code c'est pas non plus une dissertation, quand tu connais get et set tu as presques déjà la moitié du vocabulaire nécessaire (lol)
"tbop2: en vrai, c'est vraiment un niveau au dessus et pas prioritaire la récursivité (point 4)."
Je sais tu as bien raison mais iLIKEto a été assez motivé pour comprendre l'algorithme original et le transposer en itératif assez rapidement alors qu'il avait la version récursive devant les yeux... il peut encore nous épater.
Cela dit avant le 4 ya 1, 2 et 3 qui sont tout à fait abordables.
"le lien que tu ma donné c'est de l'Exponentiation rapide or il y a déjà l'Exponentiation rapide rapide dans mon code"
Et tu as interprété ce même lien hier à ta sauce. Regarde la définition.... elle utilise la définition dans la définition. Cela s'appelle la récurrence, si tu traduis littéralement la définition en langage C++ tu vas avoir un algorithme récursif.
En vrai, comme a dit Chris_27 la récursivité c'est quand même un cran au-dessus (quoi que je sais qu'il y en a qui pige ça bizarrement plus intuitivement que l'itératif).