Vous utilisez un navigateur obsolète, veuillez le mettre à jour.
En poursuivant votre navigation sur le site, vous acceptez l’utilisation de cookies par OpenClassrooms pour vous proposer des services et offres adaptées à vos centres d’intérêts. Notre politique de cookies.
Accepter
C'est pour cette raison que je suis passé par ofstream et ifstream
(et aussi parce que je ne voulais pas chercher plus loin ayant trouvé cette solution )
PS : Je pense que dans l'énoncé de l'exercice il faudrait ajouter une astuce, ou une piste, pour la conversion d'un entier en chaîne (j'ai un peu galéré mais j'ai trouvé ma solution quand même).
Ca serait vraiment bien pour aider un peu un débutant qui patauge à ce niveau...
cherche atoi, et itoa.
Ou pas. itoa n'existe pas en C89/99, et atoi est déconseillé si mes souvenirs sont justes.
Il faut juste apprendre à se servir des FAQs -- vous savez, c'est l'histoire d'apprendre à pêcher, ou de donner de la nourriture (avariée ici)
Voilà, je propose un petit exercice pour les débutants (comme moi), en effet, il suffit de connaitre la partie 1 du tuto (ceci-dit, on peut parfaitement utiliser la P.O.O).
Voici l'énoncé,
l'utilisateur devra fournir deux nombres, puis le programme devra calculer le PGCD de ces deux nombres. Voici un cours extrait du code:
Citation : code c++
if (nombre1 > nombre2)
{
nombre3 = nombre1 % nombre2;
//si nombre 3 est égal à 0
if (nombre3 == 0)
{
//alors pgcd est égal à nombre2
pgcd = nombre2;
}
else.....
Bien sur, j'ai trouvé une solution mais elle n'est pas la meilleure loin de là!!! Personnellement, j'ai utilsé l'algorithme d'Euclide donc à vous de voir. On peu même ne pas du tout utiliser le code ci-dessus (car je le rappelle, je ne suis rendu qu'à la partie 1 ^^)
Je vous souhaite bonne chance (pour ceux qui ne savent plus quel est le pgcd, go to google ).
#include <iostream>
#include <cmath>
using namespace std;
int reste(int a, int b)
{
return(a - b * (floor(a / b)));
}
int pgcd(int a, int b)
{
if (b)
return pgcd(b, reste(a, b));
return a;
}
int main()
{
int a, b;
cout << "PGCD" << endl;
cin >> a >> b;
cout << pgcd(a, b);
return 0;
}
@Metallica-z80
Tu te compliques la vie pour pas grand chose ...
#include <iostream>
using namespace std;
inline int pgcd(int a, int b) // Je sais, c'est inutile de mettre inline et les f() récursives sont à prendre avec précaution
{
return b ? pgcd(b, a%b) : a;
}
int main()
{
int a, b;
cout << "PGCD" << endl;
cin >> a >> b;
cout << pgcd(a, b);
return 0;
}
Je pense qu'il faut laisser cet exercice aux débutants ...
Et là je dis oufff... Enfin un exo pour les vrais débutants.
🍊 - Étudiant - Codeur en C | Zeste de Savoir apprenez avec une communauté | Articles- ♡ Copying is an act of love.
C'est parce que j'ai adapté celui que j'avais fait sur ma calculatrice et c'est vrai que je n'ai pas profité de toutes les possibilités du C++, je modifie mon code sans plus tardé.
Le concept étant d'avoir quelque chose d'amusant, la conformance stricte ne me semble pas importante. Mais, pour te faire plaisir, j'édite mon message en corrigeant cette "erreur" et nombreuses autres découvertes en compilant.
Bah, c'est plus que de la conformance stricte là... c'est pas comme si c'était un truc borderline :/.
M'enfin, je comprends bien ton intention, mon message était plus à titre informatif qu'autre chose... on est sur un topic d'exercices pour débutant, autant éviter de leur donné de mauvaises idées!
Je pense que le mieux serait de faire un exo ou on doit calculer le PGCD de plusieurs nombres. La seule utilité est la gestion du nombre variable de paramètre ... Je trouve l'idée sympa mais sans plus ...
PS: WTF ?! Je suis @rthur59 Vive les bug du sdz ...
🍊 - Étudiant - Codeur en C | Zeste de Savoir apprenez avec une communauté | Articles- ♡ Copying is an act of love.
Pourquoi utiliser fabs alors que cette fonction prend comme argument et retourne un nombre flottant ?
Ça peut entrainé des pertes de précisions ...
Autant utiliser abs() qui elle est définie dans stdlib.h (donc cstdlib)
🍊 - Étudiant - Codeur en C | Zeste de Savoir apprenez avec une communauté | Articles- ♡ Copying is an act of love.
Je suis désolé, je suis un débutant en C++ (j'ai juste fini le cours de M@teo21 et Nanoc et lu quelques autres tuto, je lis quelques livres, etc ... mais ça ne fait pas de moi un amateur).
Donc je dois rajouter cstdlib dans mes en-têtes et remplacer fabs par abs ?
Oui, de la même façon que floor(a/b) est strictement équivalent à a/b ; puisque ce sont des entiers. Au passage, avec ces deux modifications, il est possible de supprimer le header <cmath>.
Il serait aussi possible de stocker le PGCD dans une variable, pour éviter de le calculer deux fois.
Au passage, @che, j'espère que tu as remarqué que ma "solution" était une dédicace pour toi, cf. l'exercice du triangle de pascal.
Ok merci. Effectivement, j'ai fait ces modifications et ça doit être bon maintenant
EDIT : En fait en y pensant, ce serait cool de faire une "section" du premier message avec des petits exo bateaux pour les débutants. Non pas que les exercices déjà présents soient complètement inaccessibles mais c'est vraiment pas facile pour les débutants (je suis débutant, et à part le Tic Tac Toe, le Site du Zéro (exercice du polymorphisme) et le Puissance 4, je n'ai pas réussi les autres exercices).
@equinoxe: J'avais remarquer qu'il m'etait famillier C'est sympa, j'adore ce genre de codes ... c'est amusant a coder
On devrait peut-etre faire un concour ou un atelier autour de l'obfuscation, ca changerait et ca pourait etre sympa ...
@@rthur59: Ne t'en fait pas abs est pas très connu du fait qu'elle ne ce trouve pas dans le header math, ton code etait correcte, c'etait juste une amélioration de la précision ... On ne te te blâme pas, ce sont des remarques constructives. Pour t'apprendre ou te rapeller qq-chose
🍊 - Étudiant - Codeur en C | Zeste de Savoir apprenez avec une communauté | Articles- ♡ Copying is an act of love.
Oui et non ... L'atelier de la ligne de code la plus incompréhensible est fini il me semble. Et le concours d'Obfuscation d'uknow de l'année dernière était une pure merveille
Le concours de la ligne de code la moins interprétable était beaucoup moins bien(selon moi), on a pas vraiment le droit de mettre tout un programme sur une ligne mais le dernier code était pas mal ...
🍊 - Étudiant - Codeur en C | Zeste de Savoir apprenez avec une communauté | Articles- ♡ Copying is an act of love.