IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

 C Discussion :

Vérifier qu'un tableau est symétrique en utilisant les pointeurs


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    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
    Par défaut Vérifier qu'un tableau est symétrique en utilisant les pointeurs
    Bonjour, je suis un étudiant en informatique est comme mentionné dans le titre j'éprouve une difficulté à résoudre un exercice avec les pointeurs et le voici :
    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
    82
    83
    84
    85
    86
    87
    88
    89
    #include <stdio.h>
    #include <stdlib.h>
    #define maxcol 50
    #define maxlig 50
     
     
    int main()
    {
     
       int j,i,tab[maxlig][maxcol];
       int symetrie=0;
       int c,l;
       int *ptab;
       int *pt;
       int *pt2;
       int pttab;
       int k=1;
     
        do
    {
        printf("entrer un nombre de ligne :");
        scanf("%d",&l);
    }while(l<0 || l>maxlig);
    do
    {
        printf("entrer un nombre de colone :");
        scanf("%d",&c);
    }while(c<0 || c>maxcol);
     
     
    for(i=0,ptab=&tab[0][0];i<l;i++)
    {
        pt=ptab+i*maxcol;
        for(j=0;j<c;j++)
        {
            printf("entre l'element du vecteur [%d] [%d] ",i,j);
            scanf("%d",pt);
            pt++;
        }
    }
    for(i=0,ptab=&tab[0][0];i<l;i++)
    {
        pt=ptab+i*maxcol;
        for(j=0;j<c;j++)
        {
            printf("[%d\t]",*pt);
           pt++;
        }
        printf("\n");
    }
    ptab=&tab[0][0];
    for(i=0;i<l;i++)
    {
     
     pt=ptab+(i+1)+i*maxcol;
        for(j=0;j<c;j++)
        {
            pt2=ptab+(i+1)*maxcol+i;
            if(*pt==*pt2)
            {
     
                pt++;
                pt2=pt2+maxcol;
                symetrie=0;
     
            }
            else
            {
                symetrie=1;
                j=n;
     
            }
        }
     
    }
    if(symetrie==0)
    {
        printf("le tableau est symetrique ");
    }
    else
    {
        printf("le tableau n'es pas symetrique");
    }
    return 0;
     
     
     
     
    }
    Mon raisonement me parait parfaitement logique mais je n'arrive pas trouver la solution si quelqu'un a pourrait m'aider je lui en serais fort reconnaissant...

  2. #2
    Membre éclairé Avatar de nl.smart
    Homme Profil pro
    ouvrier
    Inscrit en
    Avril 2019
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : ouvrier
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2019
    Messages : 180
    Par défaut
    Bonjour,

    Ligne 70, est-ce que n doit-être déclaré ?

  3. #3
    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
    Par défaut Ligne 70, est-ce que n doit-être déclaré ?
    Je ne vois pas de quoi vous parlez car je n’es jamais declarer de variable n ou bien utiliser cette variable la ligne 70 est par rapport a mon pointeur qui me permet de pointer des valeur dans le tableau du coter droit de la diagonale du tableau

  4. #4
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 860
    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 : 12 860
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par sogeking4460 Voir le message
    Je ne vois pas de quoi vous parlez car je n’es jamais declarer de variable n
    Ben justement. En C on déclare une variable avant de l'utiliser. D'ailleurs ton code ne compile même pas (le compilateur bloque sur ce j=n de la ligne 70).
    Par ailleurs, "n" non déclaré implique "n" non initialisé. Autrement dit, tu copies dans "j" une valeur que tu ne connais pas et que tu ne maitrises pas.
    Mon Tutoriel sur la programmation «Python»
    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
    Et on poste ses codes entre balises [code] et [/code]

  5. #5
    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
    Par défaut
    Bien vus ^^ envoyer de mettre mon upload et j'avais effectuer une petite modification or a ce moment la j'avais oublier que je n’utilisais plus la variable "n"... Ce que je voulais mettre c’était " j=c;" pour pouvoir sortir de la boucle si le tableau n'es pas symétrique mais cela ne résout malheureusement pas mon problème car celui est dans la manipulation des pointeur...


    Cependant merci pour votre réponse Sogeking.

  6. #6
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 860
    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 : 12 860
    Billets dans le blog
    1
    Par défaut
    Ok, j=c ça compile.
    Maintenant il faudrait que tu nous définisses ce que tu entends par "symétrique". Car dans le monde mathématique, des symétries il n'y en n'a pas qu'une. Toutefois je pense que le souci se situe quand tu places le flag "symétrie". Car ce flag, tu le places à chaque case testée. Autement dit, si la dernière case est bonne, même si les autres ne le sont pas, ton tableau est dit "symétrique" alors que ce n'est pas le cas.

    En informatique, si on veut tester qu'un ensemble vérifie une propriété quelconque, on part du principe qu'il l'a et on cherche un cas qui ne l'a pas. Et si on ne le trouve pas, alors l'ensemble vérifie bien la propriété.
    Donc dans ton cas, tu dois partir du principe que le tableau est symétrique, et chercher un cas où il ne l'est pas.

    Ensuite concernant le traitement d'un tableau par un pointeur, tu n'as pas besoin de calculer la position du pointeur par rapport au nombre de colonnes. Car que le tableau soit en 1D ou en 25D, toutes ses cases se suivent en mémoire.
    Donc te suffit de placer le premier pointeur au début, le second à la fin (là effectivement le nombre de colonnes joue pour trouver cette fin), et d'incrémenter simplement le premier et décrémenter le second jusqu'à ce qu'ils se croisent (ou, pour aller plus vite, jusqu'à trouver un cas non symétrique).
    Mon Tutoriel sur la programmation «Python»
    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
    Et on poste ses codes entre balises [code] et [/code]

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 17/10/2013, 22h54
  2. Réponses: 8
    Dernier message: 11/09/2011, 14h25
  3. Réponses: 3
    Dernier message: 19/09/2009, 16h37
  4. Comment utiliser les pointeurs
    Par jeje86 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 27/08/2008, 13h24
  5. Quand utiliser les pointeurs ?
    Par kedare dans le forum Qt
    Réponses: 4
    Dernier message: 22/08/2007, 11h50

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