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
    Homme Profil pro
    Informatique
    Inscrit en
    décembre 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informatique

    Informations forums :
    Inscription : décembre 2019
    Messages : 7
    Points : 6
    Points
    6
    Par défaut 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é
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    décembre 2015
    Messages
    1 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : décembre 2015
    Messages : 1 055
    Points : 5 373
    Points
    5 373
    Par défaut
    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
    Homme Profil pro
    Informatique
    Inscrit en
    décembre 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informatique

    Informations forums :
    Inscription : décembre 2019
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    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é
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    décembre 2015
    Messages
    1 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : décembre 2015
    Messages : 1 055
    Points : 5 373
    Points
    5 373
    Par défaut
    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
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    février 2006
    Messages
    7 773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : février 2006
    Messages : 7 773
    Points : 21 151
    Points
    21 151
    Billets dans le blog
    1
    Par défaut
    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

Discussions similaires

  1. Afficher 5 lignes en fonction d'un mot recherché
    Par ALaurent22 dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 23/09/2012, 14h18
  2. Autre fonction qu'index pour rechercher un motif?
    Par Mayeu dans le forum Bioinformatique
    Réponses: 1
    Dernier message: 16/04/2007, 12h45
  3. fonction affiche date
    Par mido_amir dans le forum C++
    Réponses: 2
    Dernier message: 12/12/2006, 00h58
  4. Réponses: 1
    Dernier message: 18/05/2006, 17h00
  5. fonction affichant des colonnes
    Par ohini dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 23/06/2005, 20h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo