pour reccuperer le reste d'une division entiere - C - Programmation
Marsh Posté le 03-10-2004 à 18:32:27
pas besoin d'une fonction pour ca, le processeur calcul egalement le reste de la division entiere
utilise l'operateur % (modulo)
Marsh Posté le 03-10-2004 à 18:37:45
printf ("Entrez un nombre s'il vous plait:\n" ); ->
puts ("Entrez un nombre s'il vous plait:" );
Marsh Posté le 03-10-2004 à 18:40:50
merci pour l'info du puts, je vais regarder le %
(un petit exemple???)
Marsh Posté le 03-10-2004 à 18:44:01
div fonctionne très bien. mais quand on voit ton code ça fait peur.
Marsh Posté le 03-10-2004 à 18:46:35
je n'ai surement pas la même expérience que toi Taz (moi aussi defois, j'ai peur) mais j'essaye de faire les chose bien pourtant ! :-)
Marsh Posté le 03-10-2004 à 18:48:08
# struct div_t { // le type structure pour pouvoir recuperer le quotient et le reste
# int quot;
# int rem;
# };
c'est quoi ce machin ?
%d\n",div (a,2));
t'as vu ce que ça retourne div ? et toi tu veux que printf bouffe ça comme un int ?
Marsh Posté le 03-10-2004 à 18:51:08
1- la structure div_t est définie dans stdlib.h, pourquoi tu la redéfinis?
2- une définition de structure dans une fonction?
3- bordel t'as écrit toi même que la sortie de div() est de type div_t, alors pourquoi tu essaies d'imprimer du div_t comme si c'était de l'entier?
Citation : printf(" la division est de : %d\n",div (a,2)); |
Dans tous les cas t'aurais au moins pu regarder la MSDN, il y a un exemple d'utilisation
Code :
|
Il est sûrement pas magnifique et Taz va gueuler, mais quand même il m'a pas l'air bien compliqué
Marsh Posté le 03-10-2004 à 18:53:10
%d\n",div (a,2)); mais il le bouffe !
il divise a par 2 et il l'affiche!
le probleme est pour le reste de la division:
sinon, comment faut faire pour utiliser div???
j'ai lu que ca retournait le quotient et le reste dans un type struct div_t (c'est pour ca que je l'ai fait).
Marsh Posté le 03-10-2004 à 18:56:09
Merci masklinn,
je ne cherchais pas forcement a la redefinir, mais seulement a l'utiliser (c'est pour ca que j'ai inclus le stdlib
Marsh Posté le 03-10-2004 à 19:01:16
Taz a écrit : bien essayer masklin, mais atoi, c'est mal |
je sais, c'est pourquoi je précise que c'est un exemple de la MSDN, je l'ai juste copié collé
c'est aussi pourquoi je précise que le code est tout sauf beau
Citation : je ne cherchais pas forcement a la redefinir, mais seulement a l'utiliser (c'est pour ca que j'ai inclus le stdlib |
dans stdlib sont définis à la fois div() et la structure div_t, c'est tout marqué dans la doc (MSDN), suffit de lire
Citation : div returns a structure of type div_t, comprising the quotient and the remainder. The structure is defined in STDLIB.H. |
Marsh Posté le 03-10-2004 à 19:46:07
Code :
|
Marsh Posté le 03-10-2004 à 19:49:05
l'intérêt de div (et ses copains ldiv, lldiv, modf) c'est qu'ils retourne les 2 résultat de la division, en exécutant qu'une seule fois l'opération
Marsh Posté le 03-10-2004 à 19:54:09
parce que l'instruction asm div calcul egalement le modulo (je crois que ca depend du cpu?) , c'est ca ?
Marsh Posté le 03-10-2004 à 19:58:09
oui. toute façon, tu prends ton cerveau, quand tu fais une division, tu as toujours les 2 résultats à la fois
Marsh Posté le 03-10-2004 à 20:01:48
evidemment, seulement j'ai vu ca dans une doc intel, je me permet pas de presupposer que c'est un cas general
dans ce cas l'operateur % comme l'operateur / font appel a div
Marsh Posté le 05-10-2004 à 00:29:23
cris56 a écrit : parce que l'instruction asm div calcul egalement le modulo (je crois que ca depend du cpu?) , c'est ca ? |
Ben oui, en toute logique, obtenir le reste de la division donne 0 travail supplémentaire au CPU, donc c'est implémenté par défaut.
Marsh Posté le 05-10-2004 à 01:02:08
disons qu'il y a pas de raccourci mathématique permettant d'offrir une instruction donnant uniquement le reste (plus rapidement).
Marsh Posté le 20-12-2010 à 22:04:15
Bonjour,
Je me suis intéressé au C car on m'a dit qu'il allait très vite. Or la fonction lldiv qui permet de récupérer le quotient et le reste de la division d'un entier par un autre prend exactement 2 fois plus de temps qu'une simple division. Je l'ai testé sur deux PC différents. Autrement dit : faire une division via / (pour récupérer le quotient) suivie par un % (pour récupérer le reste) prend le même temps que lldiv.
Pourquoi, alors que quelqu'un le faisait très justement remarquer, la CPU effectue de toute manière la division et permet donc de récupérer à la fois le quotien eet le reste?
Comme je n'ai pas envie de me mettre à l'assembleur, si quelqu'un pourrait me donner une réponse cela me serait d'un grand secours.
Merci d'avance.
Marsh Posté le 03-10-2004 à 18:26:48
Bonjour a vous tous !
je suis novice en c, et je cherche a recupperer le reste et le quotient d'une division entiere, j'ai lu qu'il faut utiliser la librairie stdlib.h pour pouvoir utiliser div_t div (int x, int y);
je n'arrive pas a faire fonctionner mon machin !!!
quelqu'un pourrait t'il m'aider pour une chose aussi simple que ca?
Voici mon code:
Merci d'avance! TAUVIN