begin process at 2010 03 21 11:22:02
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Maths & Algorithmes

 > ORDINATEUR DEVIN

ORDINATEUR DEVIN


 Information sur la source

Note :
6 / 10 - par 3 personnes
6,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Maths & Algorithmes Niveau :Débutant Date de création :27/05/2004 Date de mise à jour :27/05/2004 13:47:17 Vu / téléchargé :2 222 / 170

Auteur : bonmau

Ecrire un message privé
Commentaire sur cette source (12)
Ajouter un commentaire et/ou une note

 Description

L'ordinateur devine le nombre que vous avez choisi(N compris entre 1 et 100) en vous demandant simplement si ce nb est présent ou non dans une série de tableaux qui vous sont présentés.Le secret du truc est le suivant:le nb est exprimé en binaire,si le bit n° x est à 1,le nb figure dans le tableau n° x,il ne figure pas dans les autres tableaux.Il y a 7 tableaux(N<127),si par ex: N=5, 5 est présent dans les tableaux 1 et 3,en effet(en commençant par la droite): 0 0 0 0 1 0 1=5.Il ne reste plus qu'à faire une conversion binaire-décimal pour annoncer le nb choisi.
Le programme utilise VisualC++ 6.0 et les MFC,tant pis pour les nombreux MFCphobes!Une particularité:je me sers de la commutation entre 2 vues d'une même fenêtre(voir fonction SwitchToView()).
Tout est dans le dossier"zippé".



 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

L'INFORMATIQUE AU SECOURS DES MATHS
JOUR DE LA SEMAINE

 Sources de la même categorie

Source avec Zip TRANSFORMER UN ENTIER EN DEUX NOMBRES COMPOSÉ DES MEMES CHIF... par thebroyeur
CALCULE LOG(X) par tagtog
Source avec Zip Source avec une capture ALGORITHME DE TRI D'UN TABLEAU PAR ORDRE CROISSANT OU DÉCROI... par Thuzhen
Source avec une capture CALCUL DE VARIANCE par Minilogus
Source avec une capture GÉNÉRATEUR DE CLÉS SUR 26 DIGITS AU FORMAT HEXADÉCIMAL par besilent

Commentaires et avis

Commentaire de Saros le 28/05/2004 08:14:29

En tout cas ça marche bien...
On peut voir le truc dans le fait que les tableaux commencent toujours par des 2^n... Mais en tout cas bien trouvé...
Saros

Commentaire de Kirua le 29/05/2004 01:42:52

marrant ton truc, pr compiler j'ai dû mettre les MFC en liaison dynamique, mais soit (c parce qu'il me manquait des fichiers .lib, pas bien grave et pas de ta faute).

tu fais à un moment, ds une switch, n += 0; tu peux virer cette ligne non? ;-) et tu fais aussi: n += pow(2, i);
pour les puissances de deux, me souviens plus du nom mais y a une fonction tte faite, et tu pourrais utiliser des rotations de bits. malheureusement, autant je reconnais ces opérations qd je les lis, autant je ne sais pas les écrire moi-même, alors je ne te serai pas d'un grand secours, mais sache juste qu'il y a franchement moyen d'améliorer ce pow, surtout que pow retourne un double, donc tu dois caster le retour normallement:

n += (int) pow(2,i);

de plus, ta switch (je suis tjs autour de la ligne 125) ne gère que deux case... c'est pas la peine de faire une switch pr ça :)

regarde l'opérateur ternaire:

((condition) ? valeur de retour si true : valeur de retour si false)

en pratique,

     switch(bit[i])
{case 0:      //conversion binaire-decimal
           N+=0;
       break;
          case 1:
       N+=(int)pow(2,i);
       break;
}

peut s'écrire:

n += (bit[i]) ? (int)pow(2,i) : 0 ;

et comme je te disais, change le pow(2,i), faut pas faire comme ça, mais je sais pluuuus :( dsl :p

Commentaire de Saros le 30/05/2004 18:05:51

En C (2^i) s'écrit (1 &gt;&gt; i) ou (1 &lt;&lt; i) je ne sait plus trop. C'est bien à ça que tu fais allusion ?

Commentaire de Kirua le 31/05/2004 01:03:35

oui c'est ça, les opérateurs de rotation de bits. il y a aussi une fonction dans &lt;cmath&gt; qui le fait pr que ce soit plus "clair" (pr des lecteurs non-avertis).

Commentaire de bibije le 02/06/2004 14:40:36

pourquoi vs ne mettez jamais d' exe ds vos prog ??? pfff...jen ai trop marre moi....lol
sinon voila koi...lol
bon courage :)

Commentaire de StanOfSky le 09/06/2004 23:47:55

c po une rotation de bit qu'il faut faire mais juste un décalage...

i &lt;&lt; 5 decale les bits du nombre i de 5 crans vers la droite donc multiplie par 2^5
i &gt;&gt; 5 decale les bits du nombre i de 5 crans vers la gauche donc divise par 2^5

&lt;&lt; &gt;&gt; | & ^ etc... sont des fonctions basiques sur les bits (fau faire un ti peu de logique avant de se lancer dans la prog ou alors de l'asm ;) )

++

Commentaire de Kirua le 10/06/2004 07:44:15

vers la gauche ou vers la droite, ça dépend du type d'encodage (big/little endian).

alors l'opéro &lt;&lt;, il faut d'office une multiplication, ou d'office un décalage vers la droite? (et pq ça va vers la drotie qd les flèches st vers la gauche? :p)

Commentaire de Saros le 10/06/2004 10:14:37

lol
Il s'est juste embrouillé dans les mots droite/gauche, mais à part ça c'est bien i &lt;&lt; 5 qui multiplie par 2^5 et vice-versa.
Et puis :
"alors l'opéro &lt;&lt;, il faut d'office une multiplication, ou d'office un décalage vers la droite? "
J'ai pas compris...

Commentaire de Kirua le 10/06/2004 14:49:31

ben parce que selon que c'est du little ou du big endian, le bit de poids fort est pas du même côté. exemple:

si ceci est en big, 10010
alors 01001 en little est le même nombre, mais les bits sont pas ds le même ordre!

donc si tu dis:

101 &lt;&lt; 2, ça donnera tjs 10100, ou bien selon le système de codage ça donnera soit 10100, soit 00101 ?

Commentaire de Saros le 10/06/2004 19:40:07

Hum... selon la MSDN, il disent bien que '&lt;&lt;' multiplie et que '&gt;&gt;' divise. Donc à mon avis, ça dépend pas du système...
Saros

Commentaire de Kirua le 10/06/2004 20:10:29

ok, ça me va, mais si ça vient de la MSDN, je pense que c'est surtout valable pr le duo wintel, on change pas une équipe qui gagne du pognon ^^

Commentaire de StanOfSky le 11/06/2004 21:59:29

huhuhu ouai je me suis un peu embrouillé avec droite et gauche :p
101101 &gt;&gt; 1 -&gt; 10110
101101 &lt;&lt; 1 -&gt; 1011010

vala

&gt;&gt; &lt;&lt; fonctionne sur tout les nombres entier ou pas, mais ne fait un multiplication ou division que sur les entier vu le format de codage binaire d'un entier...
a noter que le format d'un entier signé est le complément à 2 (ba normalement)

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,452 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales