Newbie en C : lecture/test tableau d'entiers
Résolu
zeemzoom
-
Arlette au Malibu -
Arlette au Malibu -
Bonjour,
je débute en c et j'essais de réaliser un code qui lit des entiers pour les ranger dans un tableau.
J'essais aussi de faire en sorte d'éviter les doublons en le signalant et en forçant la relecture de l'entier.
C'est un code qui remplit un tableau de 6 entiers :
tant que j'entre volontairement 6 entiers différents le programme reste cool.
Des que j'essaie plusieurs fois de rentrer des doublons il bloque sur le nombre. Et pourtant quand je fais CTRL + C pour sortir du programme j'ai bien plusieurs l'instruction qui dit "deja present".
Bref je comprends pas, j'ai réalisé le meme code en ruby sans me prendre la tete et il a marché du premier coup. Quelqu'un peut me dire c'est quoi la subtilité car j'ai essayé plusieurs combinaisons, j'ai meme essayé de compiler sur linux, windows et mas os pour voir par superstition ^^) le résultat est le même -_-
je débute en c et j'essais de réaliser un code qui lit des entiers pour les ranger dans un tableau.
J'essais aussi de faire en sorte d'éviter les doublons en le signalant et en forçant la relecture de l'entier.
C'est un code qui remplit un tableau de 6 entiers :
#include <stdio.h> main() { int nb, n, i ; int tab[6] ; int etat ; for (i = 0 ; i < 6 ; i++) tab[i] = 0 ; etat = n = 0 ; do { nb = 0 ; printf("nombre %d : ", n+1) ; scanf("%d", &nb) ; for (i = 0 ; i < 6 ; i++) { if (tab[i] == nb) { printf("deja present\n") ; etat = 1 ; } } if (etat == 0) { tab[n] = nb ; n++ ; } } while (n < 6) ; }
tant que j'entre volontairement 6 entiers différents le programme reste cool.
Des que j'essaie plusieurs fois de rentrer des doublons il bloque sur le nombre. Et pourtant quand je fais CTRL + C pour sortir du programme j'ai bien plusieurs l'instruction qui dit "deja present".
Bref je comprends pas, j'ai réalisé le meme code en ruby sans me prendre la tete et il a marché du premier coup. Quelqu'un peut me dire c'est quoi la subtilité car j'ai essayé plusieurs combinaisons, j'ai meme essayé de compiler sur linux, windows et mas os pour voir par superstition ^^) le résultat est le même -_-
4 réponses
Au cas où juste pour montrer le code en ruby :
tab = Array.new(6) { |e| e = 0 } i = n = 0 puts("Entrez Six nombre entre 1 et 49") while i < 6 etat = false puts "entrez nombre (" + (i+1).to_s + ") :" n = gets.chomp.to_i tab.each do |e| if (n == e) then puts("nombre deja choisi") puts("recommencez") etat = true end end if (etat == false) then tab[i] = n i += 1 end end
Logique. Sérieusement, je vois pas ou est ton problème. C'est normal qu'il reste bloqué... C'est programmé ainsi!