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

petit probleme :)

daughser
daughser
Niveau 8
17 août 2005 à 23:53:09

coucou tout le monde, je m´entraine sur les tableaux et les structures et j´ai fait un eptit truc tout bête sur la base du site de jyy.
Je voudrais avoir les resultats avec les virgules mais ils sont tronqués pourtant j´ai mis en double.

Jeté un oeil ; )

  1. include < stdlib.h>
  2. include < iostream>

using namespace std;

struct fraction
{ int num;
int denum;
};
int resultat ( int a, int b)
{
double r;
r=a/b;
return r;
}
int main()
{
struct fraction f[10];
int i;
for(i=0;i<10;i++)
{
f[i].num=i+1;
f[i].denum=i+2;

cout < < " Voici les 10 divisions et leur resultats" < < endl;
cout < < f[i].num < <" / " < <f[i].denum < < " = " <<resultat(f[i].num, f[i].denum)<<endl;
}

system("PAUSE");
return 0;
}

daughser
daughser
Niveau 8
17 août 2005 à 23:57:08

int resultat ( int a, int b)

j´ai corrigé par double resultat ( int a, int b) mais ca fait toujours pareil.

dnob700
dnob700
Niveau 10
18 août 2005 à 00:40:46

double résultat ( double a, double b)

devrait être parfait.

JeanYvesYves
JeanYvesYves
Niveau 10
18 août 2005 à 09:57:56

daughser > le probleme est que tu divises 2 int :

int a, int b :

a/b --> ça donne un int :)

apres, que tu le mettes dans un double par la suite, ça ne change rien, l´opération est faite !

Quand tu fais :

double r;
r=a/b;

l´ordi calcule d´abord a/b ( donc il tronque car c´est 2 int), puis ensuite il y met dans r : il cast alors le int ( déja tronqué donc) en double

fait comme te dit dnob :)

Ou alors :

r = a / ( (double)b);

la, tu cast d´abord b en double, tu fait donc int divisé par double --> ça donne un double, donc ça marche :)

ou alors, astuce :

r = a / ( 1.0*b);

multiplier par 1.0, c´est caster en double aussi, sans changer le résultat :-)

JeanYvesYves
JeanYvesYves
Niveau 10
18 août 2005 à 10:01:04

Autre probleme que je vois :

int resultat ( int a, int b)
{
double r;
r=a/b;
return r;
}

tu retournes un " int" ( --> int resultat(...) )
alors que pourtant, dans le corps de la fonction, tu crées un double r, et tu le retournes.
--> ne te prends tu pas un warning pour ça ?

corrige ainsi ( avec la correction du dessus aussi)

double resultat ( int a, int b)
{
double r;
r=a/(1.0*b);
return r;
}

le_duche
le_duche
Niveau 10
18 août 2005 à 13:35:22

ce qui serait plus intéressant à faire c´est:
double resultat(fraction p)
{
double r;
r = ( double)p.num/(double)p.denum;
return r;
}

ainsi, tu te rapproch un peu plus de l´idée des classes, et c´est plus interessant pcq tu ne dois pas décomposer toi meme le rationnel, mais c´est la fonction resultat qui le fait toute seule.

note: tu peux raccourcir l´écriture en écrivant:
double resultat(fraction p)
{
return ( double)p.num/(double)p.denum;
}

JeanYvesYves
JeanYvesYves
Niveau 10
18 août 2005 à 14:17:50

tres juste :oui:

le_duche
le_duche
Niveau 10
18 août 2005 à 14:57:33

moi j´aurais directement fait
double resultat(fraction* p)
{
double r;
r = ( double)p->num/(double)p->denum;
return r;
}

est-ce que c´est mieux ?
est ce que ca fait gagner du temps ou juste de la mémoire ?

JeanYvesYves
JeanYvesYves
Niveau 10
18 août 2005 à 15:37:47

du temps, clairement !
un pointeur, c´est 4 octets, alors que dans ce cas, tu as une fraction qui structure qui fait 2 int -> 8 octets.

Bon, pour une structure aussi petite, ce n´est pas bien grave, mais sinon, c´est sur que passer par adresse ou par référence est bien plus rapide si tu n´as pas explicitement besoin d´une copie :)

daughser
daughser
Niveau 8
18 août 2005 à 16:11:57

Merci tout le monde :)
j´ai tout compris

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