Permutation de 2 variable (avec condition) [C][NEW] - C - Programmation
Marsh Posté le 11-09-2007 à 18:37:51
/ et %
Marsh Posté le 11-09-2007 à 19:03:19
C'est à dire? sous quel forme d'écriture?
merci
car pour le reste numerateur%denominateur ne marche pas? Sinon le quotient rationnel c'est juste la division avec les chiffres significatifs c'est à dire
printf("\nQuotient rationnel de votre division : %f\n", numerateur/denominateur);
Marsh Posté le 11-09-2007 à 20:51:53
zondervan a écrit : Bonjour tout le monde, je dois faire pour m'entrainer un petit programme qui affiche le quotient et le reste de la division entière de deux nombres entiers entrés au clavier ainsi que le quotient rationnel de ces nombres. |
Les nombres doivent être entiers et non réels.
Division entière
Quotient : q = a / b |
(on peut aussi utiliser idiv()...)
Division réelle (rationnelle, je suppose...)
|
en forçant un des opérandes en réel avec un cast (double).
Marsh Posté le 12-09-2007 à 18:09:14
Ok merci j'y suis arrivé, voici le resultat final, sa peut toujour interresser
#include <stdio.h>
#include <stdlib.h>
int main(void)
{int denominateur, numerateur, division, reste;
float rationnel;
printf("\nRentrez le numerateur de votre division\n" );
scanf("%d", &numerateur);
printf("\nRentrez le denominateur de votre division\n" );
scanf("%d", &denominateur);
division=numerateur/denominateur;
reste=numerateur % denominateur;
rationnel=(float)numerateur/denominateur;
printf("\nLe quotient de %d/%d est egale a %d", numerateur, denominateur, division);
printf("\nLe reste de %d/%d est egale a %d\n", numerateur, denominateur, reste);
printf("Le quotient rationnel de %d/%d est egale a %f", numerateur, denominateur, rationnel);
system("pause" );
return 0;
}
Marsh Posté le 12-09-2007 à 18:38:48
En même temps je rencontre un problème sur un programme qui permute et affiches 3 variable ABC de types entier au clavier tel que A devient B, B devient et C devient A : Attention c'est le contenu des variables qui doit etre modifié et cette ligne doit rester identique avant et aprés le changement : printf("\nA=%d,B=%d,C=%d\n", A,B,C);
#include <stdio.h>
#include <stdlib.h>
int main(void)
{int A;
int B;
int C;
printf("\nVeuillez saisir votre variable A : \n" );
scanf("%d", &A);
printf("\nVeuillez saisir votre variable B :\n" );
scanf("%d", &B);
printf("\nVeuillez saisir votre variable C :\n" );
scanf("%d", &C);
printf("\nA=%d,B=%d,C=%d\n", A,B,C);
A=C;
B=C;
C=A;
printf("\nA=%d,B=%d,C=%d\n", A,B,C);
system("pause" );
return 0;
}
donc voila sa serait sympa de m'aider car j'arrive pas a faire que C devient A puisqu'il est déja associé à B
merci
Marsh Posté le 12-09-2007 à 19:12:44
Il faut une variable intermédiaire...
Et STP, relis les règles du forum et apprend à utiliser les balises code...
Marsh Posté le 12-09-2007 à 19:30:57
ok désolé pour les balises je voulais pas recréer un message, sinon qu'entends tu par variable intermediaire
merci
Marsh Posté le 12-09-2007 à 19:42:38
zondervan a écrit : ok désolé pour les balises je voulais pas recréer un message, sinon qu'entends tu par variable intermediaire |
|
Tu fais ça 3 fois et tu retrouves les emplacements initiaux...
Marsh Posté le 12-09-2007 à 21:38:19
zondervan a écrit : ok désolé pour les balises je voulais pas recréer un message, sinon qu'entends tu par variable intermediaire |
C'est évident => si tu écrits "A=C" ben tu perds le A initial. Comment tu fais pour le retrouver ensuite ???
Sinon la magie du Xor permet de permuter 2 variables sans passer par une variable intermédiaire. C'est amusant à lire mais sans plus
int a=10; |
C'est pas compliqué à démontrer mais ça n'offre aucun intérêt particulier (ni de rapidité ni de codage)
Marsh Posté le 13-09-2007 à 09:25:43
et surtout ça fait genre astuce de ha><><0Rz ... ie truc inutile et illsisible pour les colélgues ou par toi même dans 10 ans.
Marsh Posté le 14-09-2007 à 00:26:49
Joel F a écrit : truc inutile et illsisible pour les colélgues ou par toi même dans 10 ans. |
J'ai déjà dit que cela n'avait aucun intérêt hormis la curiosité. Mais d'où sors-tu que ce soit illisible ? A ce moment là on peut appliquer ce qualificatif à la plupart des codes non commentés !!!
// Permutation de variables via xor bit à bit |
Un petit commentaire dans le code et ta critique tombe à l'eau. Non. en fait, la seule remarque intelligente que tu aurais pu faire, c'est de préciser que ça ne marche pas si on applique l'algo pour permuter une variable avec elle-même
int a=10; |
Marsh Posté le 14-09-2007 à 17:52:57
Sve@r a écrit : |
Enfin bon, o_O , le clarity of intent, ca passe largement au dessus de tout ça.
C'ets illisible dans le sens ou ca te distrait du vrai profit de la lecture de code aka
savoir ce qu'il se passe fonctionellement dans ton code. Ca plus le fait que sur 100
codeux, y en a pas mal qui savent même pas que ^ == xor ... tu vas donc les voir
passer x temps à se gratter la tete sur ce snippet. Remarque, effet de bord non négligeable,
ca te permet de trier les bons des mauvais
Et j'en rajoute uen couche, , l'interet est nul, on me souffle dans mon oreillette que à part
si tu fais du dev sur DSP ou autre truc à contrainte forte, se toucher le mulot poru pondre ça, ca merite le kick ban sodo gravier. Je milite donc pour l'arret du montrage de swap avec ^
Marsh Posté le 15-09-2007 à 19:59:11
vous pouvez m'expliquer comment cela fonctionne Permutation de variables via xor bit à bit
a=a^b;
b=a^b;
a=a^b;
car j'en avais besoin pour un programme en permutant 2 variable mais sans variable intermédiaire
merci
Marsh Posté le 15-09-2007 à 20:18:31
En numérotant les variables au fur et à mesure qu'elles s'écrasent ça devient plus évident, mais y'a rien de magique, essaye sur un bout de papier avec des nombres de 4-5 bits tu verras vite ce qu'il se passe :
a2 = a^b;
b2 = a2^b = a^b^b = a;
a3= a2^b2 = a^b^a = b;
Marsh Posté le 15-09-2007 à 20:27:52
ok merci ^^et sinon y'a aucune autre méthode pour permuter 2 variable mais sans variable intermédiaire
Marsh Posté le 15-09-2007 à 20:36:54
zondervan a écrit : ok merci ^^et sinon y'a aucune autre méthode pour permuter 2 variable mais sans variable intermédiaire |
Peut être, mais
- C'est une problème de math ou d'algorithme
- Quel intérêt ?
Marsh Posté le 15-09-2007 à 21:36:47
ReplyMarsh Posté le 15-09-2007 à 23:01:31
merci du renseignements mais dans mon énoncé il précise bien deux variables de type int donc là sa passe!
merci quand même
Marsh Posté le 16-09-2007 à 15:03:02
zondervan a écrit : OK merci beaucoup, |
Question d'habitude...
Marsh Posté le 11-09-2007 à 18:34:01
Bonjour tout le monde, je dois faire pour m'entrainer un petit programme qui affiche le quotient et le reste de la division entière de deux nombres entiers entrés au clavier ainsi que le quotient rationnel de ces nombres.
voici donc mon programme
#include <stdio.h>
#include <stdlib.h>
int main(void)
{float numerateur;
float denominateur;
printf("\nBonjour, veuillez saisir le numerateur de votre division\n" );
scanf("%d", &numerateur);
printf("\nBonjour, veuillez saisir le denominateur de votre division\n" );
scanf("%d", &denominateur);
printf("Quotient de votre division : %.0f", numerateur/denominateur);
printf("\nReste de votre division : %f\n", ???? );
printf("\nQuotient rationnel de votre division : %f\n", ???? );
system("pause" );
return 0;
}
Cependant je ne sais pas comment faire le reste de la division et le quotient rationnel de ma division.
merci de votre aide :
Message édité par zondervan le 15-09-2007 à 19:53:19