- Convertir un langage C en C++
- Convertir youtube en mp3 avec audacity - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Convertir epub en kindle - Guide
- Langage binaire - Guide
- Convertir audio en texte word - Guide
12 réponses
Quel est le but supposé de cet exercice?
Avec les doubles, au delà d'une certaine valeur, on n'a pas asez de précision pour comparer b-a à 1
Il faut plutôt faire fabs(b-a-1) < 1e-15 par exemple ...
De plus ajouter 1 à quelque chose de trop grand ne changera rien.
Et que vient faire le C++ dans cet exercice?
Tu avais mis un ';' au lieu de '{' sur la ligne du main.
Le reste n'était pas considéré comme faisant partie du main.
C++ s'attend à ce que ça soit des fonctions.
Tu as fait la même erreur avec main() et while (...). Ce sont des énoncés de bloc ou de contrôle. Le ';' dit qu'il n'y a aucune instruction dans le bloc en question.
27 nov. 2022 à 13:04
Avec std::cout par défaut les flottants sont affichés comme si on avait fait un printf("%g") pour avoir l'affichage équivalent à "%f", il faut préciser std::fixed; Pour plus "ressembler" à du C++, ça donne:
#include <iostream> int main() { auto a{1.}; auto b{2.}; while ( b - a == 1 ) { a = 10 * a; b = a + 1; } std::cout << "a= " << ' ' << std::fixed << a; }
Mais en fait, ton premier code est tout à fait compilable en C++. Ici on est dans le cas où le C++ ne semble rien changer (à part un cout remplaçant vaguement le printf). C'est donc le pire de l'anti-pédagogie de comparer les langages avec cet exemple. Le C et le C++ sont en fait extrêmement différents!
27 nov. 2022 à 16:31
D'accord, je comprends mieux . Merci beaucoup .
Et par exemple, si on transformait ce langage en d'autres langages comme Python par exemple, cela serait il pareil ?
C'est en dehors de l'exercice de base, mais si je le transforme en Python , cela donnerait :
a = 1 b = 2 while b-a==1: a = 10*a b = a+1 print(a)
Est il juste ?
Modifié le 26 nov. 2022 à 11:25
Bonjour,
Merci de m'avoir répondu .
Le but de cet exercice est de transformer un langage C en C++, car ma classe et moi travaillons sur les langages informatiques et comment les traduire .
Je suis réellement désolé mais je ne comprends pas . Le code que vous avez donné, il faut le placer où ?
J'ai essayé de faire le programme C en C++, mais il y a de nombreuses erreurs que je n'arrive pas à résoudre :
#include <iostream> int main(); double a = 1; double b = 2; while (b-a ==1); { a = 10 * a; b = a + 1; } cout<<("%s%lf","a",a); return 0;
Du coup, je ne sais pas quoi taper pour que ça affiche le bon résultat .
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionEn C++, on n'a pas besoin du format à la base.
Il faut écrire :
std::cout << a << std::endl;
Il me semble que ça donnait 1.0e+16
Je viens de voir que le while se termine par ';'. il faut l'enlever.
Modifié le 26 nov. 2022 à 17:13
J'ai recommencé le code avec vos indications. Il semble bon mais il y a toujours des erreurs :
main.cpp:13:5: error: expected unqualified-id before ‘while’ 13 | while (b-a ==1) | ^~~~~ main.cpp:18:10: error: ‘cout’ in namespace ‘std’ does not name a type 18 | std::cout<<a<< std::endl; | ^~~~ In file included from main.cpp:8: /usr/include/c++/9/iostream:61:18: note: ‘std::cout’ declared here 61 | extern ostream cout; /// Linked to standard output | ^~~~ main.cpp:19:5: error: expected unqualified-id before ‘return’ 19 | return 0; | ^~~~~~ main.cpp:20:1: error: expected declaration before ‘}’ token 20 | } | ^
J'ai essayé de multiples façons et elles sont toujours présentes . Je n'arrive pas à avoir la bonne valeur .
Tu as sans doute enlevé le ';' sur la ligne avant le while. Peux-tu poster ton code?
Voici le mien:
#include <iostream> int main() { double a = 1; double b = 2; while (b - a == 1) { a = 10 * a; b = a + 1; } std::cout << a << std::endl; return 0; }
Modifié le 1 déc. 2022 à 12:29
Mon code était :
#include <iostream> int main(); double a = 1; double b = 2; while(b - a == 1) { a = 10 * a; b = a + 1; } std::cout << a << std::endl; return 0;
Je comprends pourquoi il y avait des erreurs .
Merci beaucoup . Cela signifie donc que le programme en C au début est correctement traduit en C++ maintenant ?
Modifié le 27 nov. 2022 à 10:46
Bonjour, merci beaucoup pour vos explications, je comprends mieux mes erreurs .
J'avais une dernière question à vous poser :
Les deux programmes sont bons, certes, mais ce ne sont pas les mêmes résultats en C et C++ . Cela signifie t-il que pour chaque langages différents, comme Python, Java, etc. les résultats ne sont pas les mêmes ? Et donc, qu'est ce que cela signifie ?
> il me renvoie une valeur : a= 10000000000000000.000000
Et tu reçois 1e+16 en C++. Mystère? Il y a combien de 0 après le 1 dans la forme en C? Justement 16 ...
La valeur est la même. C'est le format d'affichage qui change.
Ça veut dire qu'à partir de 10^16, ça ne sert plus à rien d'ajouter 1. C'est trop petit par rapport au nombre.
Modifié le 1 déc. 2022 à 12:33
D'accord, je comprends mieux . Merci beaucoup .
Et par exemple, si on transformait ce langage en d'autres langages comme Python par exemple, cela serait il pareil ?
C'est en dehors de l'exercice de base, mais si je le transforme en Python , cela donnerait :
a = 1 b = 2 while b - a == 1: a = 10 * a b = a + 1 print(a)
Est-il juste ?