CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

manipulation d'entier en c++

BOBYMAW
BOBYMAW
Niveau 7
11 septembre 2004 à 18:55:40

c une question conne mais je me souviens plus comment ont tronque un décimal pour avoir avoir un entier en c++.
J´ai une division et je veu juste les entiers. Qu´elle est la syntaxe?

Ptival
Ptival
Niveau 10
11 septembre 2004 à 18:56:35

Resultat = ( int)Dividende/Diviseur;

Non ?

Giga-Nova
Giga-Nova
Niveau 9
11 septembre 2004 à 19:02:48

parle le fracais ce sera mieu pour nous

bon si je comprend tu veux faire en faite une division du genre

230/12 ? ?
si c´est ca

  1. include < stdio.h>
  2. include < stdlib.h>
  3. include < math.h>

int main();
{
int a,b,q;

printf ( "a = : " );
scanf ( "%d",&); / /%d c pour les entier ( sans virgule) %f c pour les décimal
printf ( "b= : " );
scanf ( "%d",b);

q = a/b

printf ( "a/b =:%d");
getch();

return(0);
}

voila

Giga-Nova
Giga-Nova
Niveau 9
11 septembre 2004 à 19:04:50

Méga Faute de ma part

  1. include < stdio.h>
  2. include < stdlib.h>
  3. include < math.h>

int main();
{
int a,b,q;

printf ( " a = : " ) ;
scanf ( " %d",&); / / %d c pour les entier ( sans virgule) %f c pour les décimal
printf ( " b= : " ) ;
scanf ( " %d",&); / /j´ai OUBLIER le &. PS ( ca aurait fait très mal au pc sinon)

q = a/b

printf ( " a/b =:%d");
getch();

return(0);
}

voila

Ptival
Ptival
Niveau 10
11 septembre 2004 à 19:20:40

C´est pas plutôt :

printf ( "a/b =:%d", b);

? ??

Et je parle français, c´est le cast ( int) qui passe en entier, il a pas demandé à ce qu´on lui fasse tout le code...Il veut pas forcément que l´utilisateur entre les trucs...

Ptival
Ptival
Niveau 10
11 septembre 2004 à 19:22:06

Et un ; après q = a/b aussi :)

Mais bon, dans l´absolu, tu mets ( int) devant ta division et ça le caste en entier...

double Dividende, Diviseur;
int Quotient;

Quotient = ( int)Dividende/Diviseur;

MrGoTo
MrGoTo
Niveau 8
11 septembre 2004 à 19:48:44

La conversion d´un float ou autre en entier lui fait perdre sa partie decimale.
La solution est donc simple.
int res; / * Le resultat est un entier */
res = a/b; / * Avec a et b des nombres decimaux */

Cependant si tu veux convertir ta variable c´est en effet le cast qu´il faut utiliser.
int division(int a, int b); / * Le prototype de la fonction */
float nb1 = 3.1415, nb2 = 9.4321;
division((int)nb1, ( int)nb2);
Et voilà..

Ptival
Ptival
Niveau 10
11 septembre 2004 à 20:06:38

Si tu veux le résultat par défaut, tu castes comme ça :

res = ( int)(nombre1/nombre2);

Si tu veux le résultat par excès, tu castes comme ça :

res = ( int)nombre1/(int)nombre2;

dnob700
dnob700
Niveau 10
11 septembre 2004 à 20:28:53

t´es sur de ta deuxième affirmation ? si c´est vrai c´est interessant, mais je ne vois pas trop comment, si nombre1 et nombre2 sont déjà des entier le cast n´aura d´effet que sur le résultat ( je ne sais pas si le compilo attend des parenthèse) mais je ne vois pas pourquoi ça ferai un résultat par excès.

kokoala
kokoala
Niveau 7
11 septembre 2004 à 21:00:35

res=(int)(nb1/nb2);
ou
res=(int)nb1/nb2;
ou
res=nb1/(int)nb2;

donnent la même chose.

MrGoTo
MrGoTo
Niveau 8
11 septembre 2004 à 21:04:04

Mais si res est un int même pas besoin de caster car il va pas se preoccuper de la partie decimale du resultat.

dnob700
dnob700
Niveau 10
11 septembre 2004 à 21:14:06

oui, mais il fera un warning, donc vaut mieux caster, c´est plus propre.

Kouic
Kouic
Niveau 9
11 septembre 2004 à 21:22:45

Tiens, je vais mettre mon grain de sel !
La question portant sur le C++, ne faudrait il pas utiliser ´static_cast´ plutot que le cast a la C ?

:p

MrGoTo
MrGoTo
Niveau 8
11 septembre 2004 à 21:23:11

warning C4244: ´=´ : conversion from ´float ´ to ´int ´, possible loss of data
C´est ce qui se passe aussi avec un cast sauf qu´on dit au compilateur que c´est voulut.

LGV
LGV
Niveau 28
11 septembre 2004 à 22:26:09

" res=nb1/(int)nb2; donne le meme resultat"

absolument pas, si tu castes nb2 mais que nb1 est un float, ton int sera à nouveau promu en float... donc double cast, dont 1 masqué

et pour les arrondis, si le static_cast<int>(x) donne le floor, il suffit de faire static_cast<int>(x+0.5f) pour avoir le ceil

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Création de sites web
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment