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

Exercice France-IOI, chapitre 2

-pedrolan-
-pedrolan-
Niveau 7
04 novembre 2006 à 16:53:08

Bonjour.

Je suis entrain de faire les exercices de France-IOI et rendu au chapitre 2, au premier exercice, je bloque :(

Ecrivez un programme qui lit un nombre en entrée et qui affiche "pair" si le nombre est pair, et "impair" sinon.

J´imagine que l´entrée doit être un entier...

Quelqu´un pourrait-il me mettre sur la voie svp? ^^

J´ai tenté de cette manière, mais sans bon résultat:
http://rafb.net/paste/results/4m9XB556.html

:merci: pour votre aide :)

godrik
godrik
Niveau 30
04 novembre 2006 à 17:12:16

heu... Je ne suis pas sur que la parité ait un sens pour les nombres négatifs.
Un nombre x est pair s´il peut s´écrire sous la forme:
x = 2a
avec a entier
il est impair s´il peut s´écrire sous la forme
x = 2a +1
avec a entier

Regardes a la main se que fait ton programme si on lui donne 5 en parametre. Celka devrait t´aider a comprendre ce qui se passe.

-pedrolan-
-pedrolan-
Niveau 7
04 novembre 2006 à 18:28:47

Merci beaucoup j´ai compris :-d
Donc voilà, avec un modulo dans une fonction récursive: ^^

http://rafb.net/paste/results/YmdVUP23.html

Merci :ok:

Bon cette fois France-IOI m´indique des erreurs de mémoire...

"Votre programme a échoué à la suite d´un accès mémoire en dehors des zones réservées, ou d´un dépassement de la limite de mémoire."

Dans la fonction apparemment...
Je ne vois pas du tout ce qui peut provoquer ces dépassements...

-pedrolan-
-pedrolan-
Niveau 7
04 novembre 2006 à 18:43:35

J´ai oublié de préciser:

LIMITES DE TEMPS ET DE MEMOIRE

* Temps : 1 s sur une machine à 1Ghz.
* Mémoire : 1000 Ko.

godrik
godrik
Niveau 30
04 novembre 2006 à 18:59:43

if (Nombre%2 == 0) return PAIR;
if (Nombre%2 == 1) return IMPAIR;
else ScanNumber(Nombre);

Dans quel cas tu fais un appel récursif ?

system("pause");
heu... si tu met ton programme ne pause, il y a des chances qu´il ne se termine pas

dnob700
dnob700
Niveau 10
04 novembre 2006 à 19:44:37

"heu... Je ne suis pas sur que la parité ait un sens pour les nombres négatifs.
Un nombre x est pair s´il peut s´écrire sous la forme:
x = 2a
avec a entier "

et -x = 2* -2

je ne vois pas trop le problème pour les entiers négatifs, qui se répartissent tout aussi naturellement entre pair et impair que les naturels.

-pedrolan-
-pedrolan-
Niveau 7
04 novembre 2006 à 20:44:18

godrik > Si le reste de la division euclidienne Nombre/2 ne donne ni un ni deux je réappelle la fonction avec comme argument Nombre.

Aussi pour la pause, j´enlève cette fonction ainsi que le header stdlib biensûr quand je soumets mon code à France-IOI, là j´ai pasté le code que j´ai utilisé pour vérifier mon programme.

dnob700 > Quand j´entre un nombre négatif mon programme plante...

godrik
godrik
Niveau 30
04 novembre 2006 à 21:18:13

dnob: oui ca s´étend bien. Mais je ne l´ai jamais vu fait (ou alors je ne m´en rappele pas)

"Si le reste de la division euclidienne Nombre/2 ne donne ni un ni deux."
Quel sens ca a ? dans quel cas ca arrive ?

-pedrolan-
-pedrolan-
Niveau 7
04 novembre 2006 à 21:25:00

Ah oui... en y réfléchissant c´est vrai que ça ne peux pas arriver, à moins que le reste soit 0...
Donc pas besoin de récursivité?

-pedrolan-
-pedrolan-
Niveau 7
04 novembre 2006 à 21:28:44

En effet, c´était cela qui donnait des erreurs à la correction de fr-ioi. :-d
Merci beaucoup ^^

DantePC
DantePC
Niveau 10
04 novembre 2006 à 23:19:58

Salut. Sinon, il existe aussi une autre technique qui consiste à vérifier ´l´état´ du bit de poids faible. Si celui si est à 1, le nombre est impair, sinon il est pair. Pour celà, il faut masquer les autres bits avec l´oppérateur & bit à bit. Exemple :

http://rafb.net/paste/results/nA4dIG40.html

Pseudo supprimé
Pseudo supprimé 05 novembre 2006 à 01:06:24

return nombre&1;

Pseudo supprimé
Pseudo supprimé 05 novembre 2006 à 01:07:21

Ah, mince, quelqu´un avait déjà eu la même idée...

]Itachi[
]Itachi[
Niveau 10
05 novembre 2006 à 01:32:54

opérateur_modulo%

]Itachi[
]Itachi[
Niveau 10
05 novembre 2006 à 01:35:34

int x;
cout >> x;

if(x%2 == 0)
{
cout << "\nPaire !\ n";
}
else
{
cout << "\nImpaire !\ n";
}

]Itachi[
]Itachi[
Niveau 10
05 novembre 2006 à 01:36:33

p´tite erreur :

cin >> x (ligne 2)

-pedrolan-
-pedrolan-
Niveau 7
05 novembre 2006 à 11:44:02

]Itachi[ > Oui merci c´est ce que j´ai fait :)

DantePC et hitman_alias_47 > Merci, je me souviendrais de cette méthode ;)

Elle me paraît d´ailleurs plus fiable...
http://rafb.net/paste/results/nA4dIG40.html
...peut répondre si on lui entre un nombre négatif, contrairement à ...
http://rafb.net/paste/results/Zb9DvT95.html

:ok:

godrik
godrik
Niveau 30
05 novembre 2006 à 11:52:39

c´est normal par convention en C.
-31%2 == -1
le C renvoie des modulo négatif si le numérateur est négatif.

Neofungamer
Neofungamer
Niveau 21
05 novembre 2006 à 12:30:25

un nombre est paire si pour un entier A donné

A&0x01==0

soit si A = 2 => A = 0000 0010
A&0x01 => 0000 0010 & 0000 0001 => 0000 0000 => paire

pour que le resultat de l´operation soit egal à 0 il faut que les deux bits traités soient egales à 1

rappel:
&|0|1|
0|0|0|
1|0|1|

Neofungamer
Neofungamer
Niveau 21
05 novembre 2006 à 12:31:31

je dis nimp "pour que le resultat de l´operation soit egal à 0 il faut que les deux bits traités soient egales à 1 "

lire a la place:

pour que l´operation donne 1 il faut que les deux bits traités valent 1 :)

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