Xxxxxx

Résolu
Bonjour,

On considère deux tableaux(tab_p et tab_i) de dimension 5.Ces tableaux doivent contenir des entiers.
-tab_p doit contenir les chiffres pairs.
-tab_i doit contenir les chiffres impairs.

1\Faire un programme qui permet de remplir selon le mécanisme suivant:
-Il faut lire un entier au clavier
-Si la valeur est paire on remplit tab_p
-Sinon la valeur est impaire on remplit tab_i

2\parcourir chacun de ces tableaux à l'aide des pointeurs pour afficher ces valeurs comme suit:
tab_pair tab_i
. .
. .
. .
. .

NB:résoudre cet exo sans utiliser les fonctions et signaler de ne rentrer que des entiers impairs quand le tableau des chiffres pairs est plein.

AIDER MOI AU PLUS VITE SVP à résoudre cet exo :(

3 réponses

Résumé de la discussion

Le sujet porte sur le remplissage de deux tableaux de 5 entiers, tab_p pour les chiffres pairs et tab_i pour les chiffres impairs, puis leur affichage via des pointeurs. Il faut lire chaque valeur, la placer dans tab_p si elle est paire et dans tab_i sinon, tout en incrémentant les indices dédiés et en évitant les dépassements d’indice. En pratique, il est crucial d'utiliser deux compteurs distincts et de vérifier systématiquement que leur valeur reste dans les limites des tableaux, afin d’éviter les accès hors limites et de garantir une saisie cohérente.

Bobot (l’IA à votre service)
  1. Salut, qu'est ce que t'as pu faire jusque la, ??
    1. slt voici le code que j ai débuté pour l instant

      #include <stdio.h>
      #include <stdlib.h>

      int main()
      {int tab_p[5]; int tab_i[5]; int i=0; int val; int i_p=0,i_i=0;
      while(i<10){
      printf("entrer une valeur entiere: ");
      scanf("%d",&val);
      i++;
      if(val%2==0){
      tab_p[i_p]=val;

      i++;}
      else{
      tab_i[i_i]=val;

      i_i++;
      }
    2. salut

      commence par indenter ton code
      décales tes blocs d'une tabulation a la fois ca sera beaucoup plus lisible
      pour tes variables pas besoin de mettre int a chaque fois tu met int tu déclare ta variable (en l'initialisant éventuellement) une virgule la seconde variable... puis un point virgule

      if(val%2==0)
      {
      tab_p[i_p]=val;
      i++;
      }

      else
      {
      tab_i[i_i]=val;
      i_i++;
      }

      tu a mélangé tes indices
      si val est pair tu le place a l'indice i_p de ton tableau pair puis tu incrémente i
      sinon tu le place a l'indice i_i de ton tableau impair puis tu incrémente i_i

      or tu dois incrémenter i a chaque fois que tu rempli une case de ton tableau
      tu dois également incrémenter i_p quand tu place une valeur dans ton tableau pair

      donc il faut que tu incrémente i a l'extérieur de ta condition donc après ton else

      de plus une fois que l'un des tableaux est plein tu devrais rajouter une boucle pour la saisie afin de t'assurer que la valeur saisie est correcte sinon tu auras une erreur pour accéder a ton tableau

      imaginons que tu entre 5 entier pairs
      ton indice i_p sera donc a 4 (la dernière case de ton tableau) donc si tu rentre par erreur un 6° entier pair, ton code essaiera d'accéder a l'indice 5 qui n'existe pas et ton programme plantera

      commence par rectifier la facon dont tu incrémente tes indices regarde si ca marche en faisant attention et si c'est bon rajoute la bonne boucle lorsque tu demande d'entrer une valeur pour pouvoir au début rentrer des nombres pairs ou impairs puis uniquement pair ou uniquement impair en fonction du premier tableau qui sera rempli
    3. mais comment j ai fait pour ne po voir ton explication dès le début ;c est po croyable!!!! OLIVER vous avez vu tout de suite k je suis un débutant en C en faite je l ai commencé ça ne fait po longtemps mais vs m avez beaucoup aidé ici MERCI!!!!!!!!!!
    4. c'est pas grave tkt

      dis nous si ca marche
    5. ok je ne manquerai po de vous informer mais il faut k j'installe Borland C++ car ça ne marche po sur Dev-C++ .
  2. Essaye ça ...

    #include <stdio.h>     
    
    void main() {     
      int tab_p[5], tab_i[5], p=0, i=0, nbr;     
      tab_p[4] = NULL;     
      tab_i[4] = NULL;     
    
      while(i+p < 10) {     
         if(!tab_p[4] && !tab_i[4]) printf("Donner un nombre entier : ");         
         else if(!tab_p[4] && tab_i[4]) printf("Donner un nombre pair : ");            
         else printf("Donner un nombre impair : "); 
         scanf("%d",&nbr);      
         //----------------     
         if(nbr%2 == 0) {     
            tab_p[p] = nbr;     
            p++;     
         }     
         else {     
            tab_i[i] = nbr;     
            i++;     
         }     
      }     
    
      scanf("\n");     
    }


    PS : J'ai pas pu l'essayer vu que mon compilateur bug tros ...
    1. j ai essayé mais ça ne marche toujours pas.je vais essayer trouver l erreur.t es vraiment gentil t es un ange!!!!!!!
      1. t'as quoi comme compilateur, parce que la plupart affichent la ligne ou se trouve l'erreur !!!
      2. le compilateur s'arrête ici: tab_p[4] = NULL; et je ne sais po pourquoi?
      3. j ai DEV-C++
      4. je ne suis pas sur qu'on puisse déclarer un entier a null

        vire ces deux lignes pour voir ce qui se passe

        de plus tu le fait 2 fois^^ (faut changer le nom du second)
      5. oups, le second est pour tab_i