Language C

Résolu/Fermé
Abc - 23 mars 2009 à 12:31
 Abc - 23 mars 2009 à 21:55
Bonjour,
salut tous le monde ,j'ai eu une deffuculte au niveau de resolution de ce prog j'espere que vous pouvez m'aider a degager l'erreur . MERCI
EXERCICE:
Ecrire un programme qui lit un entier X et un tableau A du type int au clavier et élimine toutes les occurrences de X dans A en remplacent les occurences par 0.

#include<stdio.h>
void main()
{
int a[100],x,i,n;
printf("donner la taille du tableau\n");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("donner l'element d'indice %d\n",i);
scanf("%d",a+i);

}
printf("donner l'ntier a ecraser");
scanf("%d",&x);
i=0;
while(*(a+i)==x)
{
*(a+i)=0;
i++;
}
for(i=0;i<n;i++)
{

printf("le tableau apres ecrasage est %d",a[i]);
}
}
MERCI D'AVENCE

2 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
23 mars 2009 à 12:56
Salut,
Voici en gras, les corrections apportées :
#include<stdio.h>

int main(void)
{
    int a[100],x,i,n;
    printf("donner la taille du tableau\n");
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        printf("donner l'element d'indice %d\n",i);
        scanf("%d",a+i);
    }

    printf("donner l'ntier a ecraser");
    scanf("%d",&x);

    for(i=0;i<n;i++)
    {
        if(a[i]==x)
            a[i]=0;
    }

    for(i=0;i<n;i++)
    {

        printf("le tableau apres ecrasage est %d",a[i]);
    }

    return 0;
}
0
L'erreur est dans ta boucle while, et plus précisemment, dans la condition :
i=0;
while(*(a+i)==x)
{
*(a+i)=0;
i++;
}
Relie ce que tu as écrit, cela t'aidera à comprendre ton erreur.


Il faut simplement que tu parcourres ton tableau :
for (i = 0; i < n; i++)
if (a[i] == x)
a[i] = 0;

ou alors, avec un while :
i = 0;
while (i < n)
if ( *(a+i) == x)
*(a+i) = 0;

C'est juste une erreur d'inattention, comme on en fait tous. Bonne programmation !
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
23 mars 2009 à 13:11
Salut,
Dans ta boucle while, il ne faut pas oublier d'incrémenter la variable i.
0
merci mais je veut faire ce programme avec le boucle while
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844 > Abc
23 mars 2009 à 14:01
Avec la boucle while :
i=0;
while(i<n) {
   if(a[i]==x)
       a[i]==0;
   i++;
}
0
Abc > fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022
23 mars 2009 à 21:55
MERCI*10000000000000
0