Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Futur Membre du Club
    fonction saisie tab, fonction afficher tab et recherche occurence
    Bonjour c'est encore moi sogeking ! Si je suis ici c'est parce que j'ai de nouveau un problème mais cette fois ci dans les fonctions... Je ne sais pas pourquoi je n'arrive ni a effectuer la saisie ni à afficher mon tableau (ce qui est logique vus qu'il n'y a pas de saisie au préalable...). Est-ce que quelqu'un aurait une idée la dessus?
    Merci, Sogeking.
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
     
    #include <stdio.h>
    #include <stdlib.h>
    #define MAX 50
    int saisie(int *,int );
    void afficher(int *,int );
    int recherche(int *,int);
     
    int main()
    {
        int tab[MAX][MAX],n;
        printf("entre la taille du tab ");
        do
        {
            scanf("%d",&n);
        }while(n<0 || n>MAX);
        tab[MAX][MAX]=saisie(tab,n);
        afficher(tab,n);
     
    printf("voici le nombre occurence %d",recherche(tab,n));
     
     
     
        return 0;
    }
    int saisie(int *tab, int n)
    {
        int i,j;
     
        for(i=0;i<n;i++)
        {
     
            for(j=0;j<0;j++)
            {
                printf("entre element [%d] [%d]",i,j);
                scanf("%d",(int *)tab+i*MAX+j);
            }
        }
        return *tab;
    }
    void afficher(int *tab,int n)
    {
        int i,j;
        for(i=0;i<n;i++)
        {
            for(j=0;j<0;j++)
            {
                printf("[%d]\t",(*((int *)tab+i*MAX+j)));
     
            }
            printf("\n");
        }
        printf("\n");
    }
    int recherche(int *tab,int n)
    {
        int i,j,occurence=0,cible;
        printf("entre la cible");
        scanf("%d",&cible);
        for(i=0;i<n;i++)
        {
            for(j=0;j<0;j++)
            {
                if(cible==*(tab+i*MAX+j))
                {
                    printf("voici la position de la cible [%d] [%d]",i,j);
                    occurence++;
                }
     
            }
            printf("\n");
        }
        return occurence;
    }

  2. #2
    Expert confirmé
    Bonjour,

    Il y a 2 erreurs lignes 17. Ces erreurs ont dues faire tousser ton compilateur. Pourquoi n'as tu pas pris en compte ce qu'il a forcément signalé?
    - La dernière case de ton tableau à les coordonnées : tab[MAX-1][MAX-1], donc tab[MAX][MAX] ne correspond à rien d'existant.
    - Et ta fonction attend un simple tableau linéarisé soit un int* et tu lui passes l'adresse d'un élément de tableau à 2 dimensions c'est à dire un int (*)[MAX]. Ça n'a rien à voir.

  3. #3
    Futur Membre du Club
    Re bonsoir, premièrement merci de m'avoir répondu . Votre réponse ma permis de corriger un exercices précédent en plus de celui-ci et je vous en remercie du fond du cœur et pour en revenir a nos mouton mon erreur (la plus grosse) et que dans la deuxième boucle for j'ai mis "for(j=0;n<0;j++)" donc c'est logique que le compilateur ne m'affiche rien(erreur dus a la fatigue et je m'en n’excuse)... j'ai effectuer quelques changement a mon code est-ce que cela vous parait plus correct?
    Merci de m'avoir consacrée votre temps.
    Sogeking
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
     
    #include <stdio.h>
    #include <stdlib.h>
    #define MAXCOL 50
    #define MAXLIG 50
    int saisie(int *,int,int  );
    void afficher(int *,int ,int );
    int recherche(int *,int ,int );
     
    int main()
    {
        int tab[MAXLIG][MAXCOL],l,c;
     
        do
        {
          printf("entre un nombre de ligne (max %d) ",MAXLIG);
          scanf("%d",&l);
        }while(l<0 || l>MAXLIG);
         do
        {
          printf("entre un nombre de ligne (max %d) ",MAXCOL);
          scanf("%d",&c);
        }while(c<0 || c>MAXCOL);
     
        saisie(&tab,l,c);
        afficher(&tab,l,c);
     
    printf("voici le nombre occurence %d",recherche(&tab,l,c));
     
     
     
        return 0;
    }
    int saisie(int *tab, int l,int c)
    {
        int i,j;
        for(i=0;i<l;i++)
        {
     
            for(j=0;j<c;j++)
            {
                printf("entre element [%d] [%d]",i,j);
                scanf("%d",(int *)tab+i*MAXCOL+j);
            }
        }
        return *tab;
    }
    void afficher(int *tab,int l,int c)
    {
        int i,j;
        for(i=0;i<l;i++)
        {
            for(j=0;j<c;j++)
            {
                printf("[%d]\t",*((int *)tab+i*MAXCOL+j));
     
            }
            printf("\n");
        }
        printf("\n");
    }
    int recherche(int *tab,int l,int c)
    {
        int i,j,occurence=0,cible;
        printf("entre la cible");
        scanf("%d",&cible);
        for(i=0;i<l;i++)
        {
            for(j=0;j<c;j++)
            {
                if(cible==*(tab+i*MAXCOL+j))
                {
                    printf("voici la position de la cible [%d] [%d]\n",i,j);
                    occurence++;
                }
     
            }
            printf("\n");
        }
        return occurence;
    }

  4. #4
    Expert confirmé
    Il reste l'erreur ligne 12 à remplacer par un simple tableau : int tab[MAXLIG*MAXCOL],l,c; signalé dans mon post précédent.

  5. #5
    Expert éminent sénior
    Bonjour
    Citation Envoyé par sogeking4460 Voir le message
    Votre réponse ma permis de corriger un exercices précédent en plus de celui-ci
    Serait-ce celui-là ???

    Citation Envoyé par sogeking4460 Voir le message
    est-ce que cela vous parait plus correct?
    Ton code explose mon compilo. Déjà cette ligne saisie(&tab,l,c) où tu passes à la fonction l'adresse d'un int [][] (qui sera alors un int * [][] et donc certainement pas un int *), chose que j'avais déjà mentionné dans ton premier topic et par dalfab dans celui-ci. Et je t'avais donné aussi un exemple de factorisation de la saisie des dimensions...
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site