C++ calc.nombre décimal et console se ferme

Résolu/Fermé
mat08 Messages postés 322 Date d'inscription mercredi 11 août 2010 Statut Membre Dernière intervention 31 mai 2014 - Modifié par mat08 le 5/02/2012 à 11:25
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 5 févr. 2012 à 12:52
Bonjour, je suis en train de faire un petit petit programme en C++ avec CodeBlocks, jusque là tout va bien, mais quand je le lance hors codeblocks, je dois rentrer un chiffre à convertir (normal). Problème, lorsque je rentre ce chiffre et que je fais entrer, la console se ferme, alors j'ai essayé de mettre system("PAUSE"); avant return 0; mais ça me marque

"error : "system" was not declared in this scope".

Voilà mon premier problème, ensuite le second, je veux multiplier par un nombre décimal alors je fais

int resultat = 0;
int a = 0;
float b = 6.55;

cin >> a;

resultat = a * b;

mais lorsque je rentre mon chiffre avec codeblocks puisque hors codeblocks il se referme, il ne se multiplie pas par 6.55 mais par 6. Ce qui est incorrect.

J'espere que j'ai été clair, merci de votre aide !


A voir également:

2 réponses

Bonjour,

Pour la fonction system, il me semble qu'il faut inclure cstdlib, comme ceci :
#include <cstdlib>

Pour le second souci, vous demandez à saisir un int, un nombre entier. Mettez un double ou un float, et ça ira mieux :).
Mourir nuit gravement à votre santé.
1
mat08 Messages postés 322 Date d'inscription mercredi 11 août 2010 Statut Membre Dernière intervention 31 mai 2014 9
5 févr. 2012 à 10:46
Comment mettre un double ? Et c'est quoi un double ?
0
Bonjour

La fonction system est déclarée dans stdlib, il suffit donc d'ajouter
#include <stdlib.h>

au début de ton programme.

Pour ton second problème, c'est sûrement parce que tu mets le résultat de la multiplication dans un int. Change ta déclaration
float resultat = 0;
1
mat08 Messages postés 322 Date d'inscription mercredi 11 août 2010 Statut Membre Dernière intervention 31 mai 2014 9
5 févr. 2012 à 10:52
Merci cela fonctionne, par contre pour "float" ça ne fonctionne pas :(
0
Si, maintenant ça multiplie bien par 6.55. Par contre, le nombre a est toujours un entier. Peut-être voulais-tu qu'il soit lui aussi en float.

Si tu saisis 1, vois-tu bien le résultat 6.55 ? Si tu ne vois que 6, c'est peut-être que ce code est dans une fonction qui retourne un int, ou que tu recopies resultat dans une variable int.
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
Modifié par fiddy le 5/02/2012 à 12:56
La fonction system est déclarée dans stdlib, il suffit donc d'ajouter
#include <stdlib.h>

En C++, c'est plutôt cstdlib qu'il faut inclure comme dit par tiobet.

Après, la multiplication se fait bien par 6.55, mais puisque resultat est en int, il arrondit. Il faut donc mettre en double (ou éventuellement float).

Ce qui donnerait :
#include <iostream>  
#include <cstdlib>  
using namespace std;  
int main() {  
   double resultat = 0;   
   int a = 0;   
   double b = 6.55;   

   cin >> a;   

   resultat = a * b;  
     
   cout << "resultat=" << resultat << endl; 
   system("pause"); 
}  
0