Java, Exercice à tableaux... Coincé.

Mark -  
 Mark -
Bonjour a tous m'sieurs dames!

Je viens vous embêter aujourd'hui, c'est parce que je n'arrive pas écrire un code correcte en java pour cet exercice:

Ecrivez un programme qui demande à l'utilisateur de saisir une série de nombres entiers positifs ou négatifs. La saisie s'arrête lorsque l'utilisateur tape la valeur 0 (zéro). Lorsque la saisie est terminée, le programme affiche le nombre de valeurs paires et le nombre de valeurs impaires saisies. Pour savoir si une valeur est paire, il suffit de regarder si le reste de la division de la valeur considérée par 2 est égal à zéro.

La prof n'a pas donné de consignes, je pense qu'il faut utiliser des tableaux, mais je n'y arrive pas...

En espérant que quelqu'un aura la gentillesse de m'aider sur cet exercice tout bidon : ( J'suis en première, désolé de vous déranger avec des broutilles...

Merci d'avance!

12 réponses

  1. vordano Messages postés 1981 Statut Membre 316
     
    voilà ce dont tu auras besoin:
    - tes cours d'algorithmie
    - un tableau d'entier (int[])
    - l'opérateur modulo (a chercher sur google)
    - un if suivi de son else pour la vérif du nombre pair ou impair
    - une boucle while pour récupérer le nombre saisi par l'utilisateur

    qu'est ce que tu as fait jusqu'à présent ?
    1
  2. choubaka Messages postés 5534 Date d'inscription   Statut Modérateur Dernière intervention   2 113
     
    tu peux éventuellement nous montrer le code que tu as essayé d'écrire
    0
  3. choubaka Messages postés 5534 Date d'inscription   Statut Modérateur Dernière intervention   2 113
     
    sinon, voilà un exemple de modulo

    https://www.java-examples.com/modulus-operator-example
    0
    1. choubaka Messages postés 5534 Date d'inscription   Statut Modérateur Dernière intervention   2 113
       
      dans ton cas, tu dois mettre:

      i%2 au lieu de i%10
      0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. Mark
     
    J'utilise une machine virtuelle sur mac, alors sortir mon code de netbeans, je n'ai aucune idée de comment.
    Je vais vous le retaper ici, sommairement :)

    //variables
    Scanner scan = newscanner(System.in);
    int nbr, cptpaire, cptimpaire

    cptpaire=0
    cptimpaire=0

    System.out.println("Entrez valeur")
    nbr= scan.nextInt();

    While (nbr !=0)
    System.out.println("Entrez valeur")
    nbr= scan.nextInt();

    if (nbr < 0)
    Cptimpaire = cptimpaire+1

    else (nbr > 0)
    Cptpaire = Cptpaire + 1

    Je me doute bien qu'a partir du if, plus rien n'est vraiment bon... Comment fait-on pour déclarer un tableau ?
    Et comment je l'utilise ? J'viens de comprendre pourquoi on en a besoin d'un...
    0
  6. choubaka Messages postés 5534 Date d'inscription   Statut Modérateur Dernière intervention   2 113
     
    pour un tableau, rien de plus simple

    int[] tableau = new int[];

    fais attention avec java, il est case sensitive !!!!

    Cptimpaire = cptimpaire+1 va provoquer une erreur
    0
  7. Mark
     
    Ok, ok, donc ca donne:

    //variables
    Scanner scan = newscanner(System.in);
    int nbr, cptpaire, cptimpaire
    int[] tableau = new int[];

    cptpaire=0
    cptimpaire=0

    System.out.println("Entrez valeur")
    nbr= scan.nextInt();

    While (nbr !=0)
    System.out.println("Entrez valeur")
    nbr= scan.nextInt();

    if (nbr < 0)
    cptimpaire = cptimpaire+1

    else (nbr > 0)
    cptpaire = Cptpaire + 1

    Et après je l'utilise comment le tableau ? Et le modulo ?
    Ou est-ce que je les mets ?
    0
  8. vordano Messages postés 1981 Statut Membre 316
     
    déjà écrit sur papier le programme avec des mots simple (ça s'appel l'algorithmie)

    une variable c'est une sorte de tiroir dans la mémoire de ton ordinateur
    un tableau c'est une sorte de tiroir a l'intérieur du tiroir dans la mémoire.
    pour déclarer un tableau tu devrais avoir un exemple dans ton cours

    ah et j'ai oublié de dire qu'il fallais aussi 2 variable, une pour le nombre de chiffre pair et une pour le nombre de chiffre impair
    une variable pour le nombre de l'utilisateur peut être utilisé, mais c'est optionnel

    le if n'est pas une boucle, mais une condition :)
    le plus pratique comme boucle serais d'utiliser do{}while(test);
    comme ça tu feras le test de la boucle à la fin
    donc la boucle serviras au stockage des valeurs dans le tableau et à l'incrémentation de la variable pair ou impair suivant la valeur saisie par l'utilisateur.
    l'affichage du résultat ne se fera qu'a la fin
    0
  9. KX Messages postés 19031 Statut Modérateur 3 020
     
    Il n'y a pas besoin d'utiliser de tableau dans ce programme, il suffit de prendre deux compteurs (nbPair et nbImpair par exemple) et d'incrémenter l'un ou l'autre selon la parité de l'entier saisi, et d'afficher leurs valeurs à la fin.
    0
    1. vordano Messages postés 1981 Statut Membre 316
       
      le tableau c'est juste pour stocker les valeurs, même si c'est pas vraiment utile dans ce programme, c'est toujours bien de savoir comment ça s'utilise ^^
      0
    2. KX Messages postés 19031 Statut Modérateur 3 020
       
      Ici on ne connait pas à l'avance la taille du tableau, donc utiliser un tableau serait plus compliqué qu'autre chose, l'idéal serait une liste en fait, mais son prof abordera toutes ses notions en temps utile, pour l'instant il peut faire sans alors faisons simple ^^
      0
  10. choubaka Messages postés 5534 Date d'inscription   Statut Modérateur Dernière intervention   2 113
     
    personnellement, en voyant le code, je ne pense pas qu'un tableau soit utile ici. Il te suffit de tester directement l'entier et d'incrémenter tes compteurs pai/impair.

    if(nbr%2 == 0)

    cptpaire = cptpaire+1;

    pour le else, le test n'est pas utile. c'est logique.

    else cptimpaire = cptimpaire+1;
    Chouba, Modérateur CCM
    Bibapeloula
    0
  11. Mark
     
    //variables
    Scanner scan = newscanner(System.in);
    int nbr, cptpaire, cptimpaire

    cptpaire=0
    cptimpaire=0

    System.out.println("Entrez valeur")
    nbr= scan.nextInt();

    While (nbr !=0)
    System.out.println("Entrez valeur")
    nbr= scan.nextInt();

    if (nbr%2 ==0)
    cptpaire = cptpaire++

    else
    cptimpaire = Cptimpaire ++;

    Quelque chose comme ça ?

    Et après je finalise avec

    System.out.println("Il y a " + cptpaire + " nombres paires et " + cptimpaire + " nombres impairs! " )

    Je vous suit bien ? Merci de votre aide en tout cas :)
    0
    1. KX Messages postés 19031 Statut Modérateur 3 020
       
      Comme l'a dit Choubaka, le Java est sensible à la casse, tu dois donc mettre les majuscules au bon endroit. Il n'y en a pas à while, mais il y en a à Scanner (qui doit être détaché du new par un espace)
      Ensuite pour que ta boucle while porte sur plusieurs instructions, il te faut des accolades !
      Enfin, pour l'incrémentation soit tu fais x=x+1, soit tu fais x++, mais un mélange des deux x=x++ c'est maladroit.
      0
    2. Mark
       
      //variables
      Scanner scan = new Scanner(System.in);
      int nbr, cptpaire, cptimpaire ;

      cptpaire=0 ;
      cptimpaire=0 ;

      System.out.println("Entrez valeur")
      nbr= scan.nextInt();

      while (nbr !=0)
      System.out.println("Entrez valeur") ;
      nbr= scan.nextInt();

      if (nbr%2 ==0)
      cptpaire++

      else
      Cptimpaire ++;


      System.out.println("Il y a " + cptpaire + " nombres paires et " + cptimpaire + " nombres impairs! " )


      Les accolades je les ajouterais sur netbeans ;)

      Le code est correcte alors ? Le modulo est bien placé ?
      0
    3. KX Messages postés 19031 Statut Modérateur 3 020
       
      Le code ne sera pas correct sans les accolades placées au bon endroit !
      De plus ton premier "Entrez valeur" ne sera pas comptabiliser !
      Une boucle do while serait peut-être plus intéressante ici...
      0
    4. choubaka Messages postés 5534 Date d'inscription   Statut Modérateur Dernière intervention   2 113
       
      Scanner scan = new Scanner(System.in);
      int nbr, cptpaire, cptimpaire ;

      cptpaire = 0 ;
      cptimpaire = 0 ;

      System.out.println("Entrez valeur")
      nbr = scan.nextInt();

      while (nbr != 0) {
      System.out.println("Entrez valeur") ;
      nbr = scan.nextInt();

      if (nbr%2 == 0)
      cptpaire++;

      else
      Cptimpaire ++;

      }
      System.out.println("Il y a " + cptpaire + " nombres paires et " + cptimpaire + " nombres impairs! " );

      on approche .. on approche ;-)
      0
    5. Mark
       
      Tu peux m'aider pour la boucle do while ? Parce que je ne vois pas comment l'écrire.

      Et les accolades, je les ajouterais sur netbeans : Je suis sur mac, j'ai pas ca sur mon clavier -__- 'fin si sûrement, mais j'vais pas chercher après alors que sur NetB il va me les mettre direct.
      0
  12. loi219 Messages postés 665 Statut Membre 104
     
    Dois-tu le faire en orienté objet?
    -2
    1. Mark
       
      @ loi219, Je ne saisis pas ce que veut dire orienté objet, donc considères que non étant donné que je suis en première et que je débute java :-D


      à Vordano, aucun soucis pour les cours d'algo, j'ai bien saisis les concept tant que, pour, si, etc...

      Les tableaux je n'ai pas appris pour le moment, a mon avis, l'exercice sert à nous tester sur cela: certains en classe ont un meilleur niveau, donc les exos sont variés.

      Le modulo, je recherche sur google, ok ^^

      J'ai tenté avec la boucle if else, mais le programme m'annonce des bugs, que je corrige, et après, en exécutant le prog, j'parviens pas à avoir ce que je veut...

      Avec la boucle while, j'initialise un compteur ?
      0
    2. Mark
       
      non je ne dois pas le faire en orienté objet, je sais même pas ce que c'est ^^
      0
    3. Mark
       
      non pour la troisième fois :-)
      0