Rechercher : dans
Par :

Comparaison en C++

Dernière réponse le 17 nov 2003 à 21:40:01 alocmoa, le 16 nov 2003 à 16:34:29 
 Signaler ce message aux modérateurs

Voilà,

J'aimerais pouvoir comparer un nombre à sa partie entière( cad pouvoir dire si un nombre est décimal ou entier). Comment puis-je faire. Ca fait un moment que je tourne en rond sur cette question et là je craque !

merci

Meilleures réponses pour « comparaison en C++ » dans :
Les chaînes de caractères en C++ Voir Qu'est-ce qu'une chaîne de caractères ? Une chaîne de caractères (appelée string en anglais) est une suite de caractères, c'est-à-dire un ensemble de symboles faisant partie du jeu de caractères, défini par le code ASCII. En langage C++, une...
Langage C++ - Les opérateurs Voir Qu'est-ce qu'un opérateur ? Les opérateurs sont des symboles qui permettent de manipuler des variables, c'est-à-dire effectuer des opérations, les évaluer, etc. On distingue plusieurs types d'opérateurs : les opérateurs de calcul les opérateurs...
[Linux] Vérifier la réussite de la gravure d'un cd VoirVérifier la réussite de la gravure d'un cd Rappel Principe Fonctionnement Rappel Sous Linux il existe un logiciel vous permettant directement de vérifier l'intégrité d'un fichier par comparaison. C'est md5sum qui permet de calculer la...
La compilation et les modules en C et en C++ VoirCet article a pour vocation d'introduire les notions de bases de la compilation en C et en C++ et de la programmation modulaire. Il permet de mieux comprendre les messages d'erreur du compilateur. Les notions abordées ici sont indépendantes du...
Comparatif des différentes versions de Windows (XP/Vista 64/32) VoirSOMMAIRE Introduction Les versions de Windows testées Descriptif de la machine test 1. Les performances "matérielles" a. Le processeur b. La mémoire "Random Acces Memory" (RAM) c. Le Multithreading 2. Les périphériques de stockage a. Les...
Télécharger Visual C++ Express VoirVisual C++ Express est une version "gratuite" et allégée de Visual Studio ; l'utilisation requiert l'inscription sur le site de Microsoft. Cet environnement de développement permet de créer des application Win32 ou du .NET C.
Langage C++ - Les types de données VoirLes types de données Les données manipulées en langage C++, comme en langage C, sont typées, c'est-à-dire que pour chaque donnée que l'on utilise (dans les variables par exemple) il faut préciser le type de donnée, ce qui permet de connaître...
Langage C - Les types de données VoirLes types de données Les données manipulées en langage C sont typées, c'est-à-dire que pour chaque donnée que l'on utilise (dans les variables par exemple) il faut préciser le type de donnée, ce qui permet de connaître l'occupation mémoire (le...
Les structures en langage C VoirDifférence entre une structure et un tableau Un tableau permet de regrouper des éléments de même type, c'est-à-dire codés sur le même nombre de bits et de la même façon. Toutefois, il est généralement utile de pouvoir rassembler des éléments de...

1

Bob, le 16 nov 2003 à 16:52:29

Tu castes ton "float" dans un "unsigned int" comme suit:

...
float valeur1 ;
unsigned int valeur2;
valeur 1 = 3.141592
unsigned int valeur2 = (unsigned int)valeur2;
...

puis reste à comparer 2 entiers.

Répondre à Bob

2

alocmoa, le 16 nov 2003 à 17:07:07

Le but c'est de comparer un nombre (décimal ou entier) avec la partie entiere de ce même nombre.

Répondre à alocmoa

3

Bob, le 16 nov 2003 à 17:11:41

Bah ça change pas grand chose t'affecte une variable supplémentaire pour contenir sa partie entiere du style:

float valeur1;
float valeur2;
valeur 2 = (float)(unsigned int)valeur1;

ou bien

float valeur1;
unsigned int valeur2;
float valeur3;
valeur2 = (unsigned int)valeur1;
valeur3 = (float)valeur2;

Répondre à Bob

4

alocmoa, le 16 nov 2003 à 17:17:56

Voilà le code que je génère

float m=0;
float M;
M= (float)(unsigned int)m;

cout<<"entrer un nombre decimal"<<endl;
cin>>m;

if (m!=M)
cout<<"la partie entiere superieure est:"<<int(m)+1<<endl;
else
cout<<"la partie entiere superieure est:"<<M<<endl;


Le truc c'est qu'il me sort 3 pour 2,6 mais pour 2 il me sort 3

Quel est le problème dans mon code ??

Répondre à alocmoa

8

dje-dje, le 17 nov 2003 à 17:12:26

C'est le résultat que tu dois trouver:la partie entière supérieur d'un nombre c'est 1+partie entiere. La partie entière de 2 c'est 2 donc la partie entiere superieur de 2 c'est 3.. .

Répondre à dje-dje

9

dje-dje, le 17 nov 2003 à 17:13:59

Bref si tu ne veux pas la partie entierer superieur, tu n'aoute pas 1 à m dans ton "cout"

Répondre à dje-dje

5

Bob, le 16 nov 2003 à 17:21:29

La 1ère méthode que j'ai donnée c'était plutôt du "expérimental" essaie la 2nde elle me parait plus sur.

Répondre à Bob

6

dje-dje, le 17 nov 2003 à 17:01:22

J'ai trouvé ca dans une autre réponse:
"
n:reel;
s:entier;
début
lire(n);
s=n div1; {div fait la division entière d'1 nbre qlcq}
afficher ('la partie entière de ',,'est ',s);
"

le div est "%" en langage C

Répondre à dje-dje

7

dje-dje, le 17 nov 2003 à 17:04:48

Desole j'ai pas fini:
une fois que tu as le nombre et sa partie entiere, tu soustrait l'un à l'autre. Si ils sont égaux le nombre est entier, sinon il ne l'est pas

Répondre à dje-dje

10

phneveu, le 17 nov 2003 à 20:34:35

Je suis peut-être à côté de la plaque mais il semble que ce petit bout de code doit marcher (du moins il marche sous VC 6 et sur ma machine) :

BOOL IsDecimal(double dNum)
{
ASSERT(dNum <= double(UINT_MAX));
UINT uNum = dNum;
double diff = (double)uNum - dNum;
return (!diff ? TRUE : FALSE);
}

Répondre à phneveu

11

 phneveu, le 17 nov 2003 à 21:40:01

Erratum :
Evidemment, il fallait lire dans le message n°10,

return (diff ? TRUE : FALSE);

et non, comme écrit stupidement :

return (!diff ? TRUE : FALSE);

Mille excuses.

Répondre à phneveu