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 :

Modifier le contenu d'un tableau


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2019
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 26
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2019
    Messages : 35
    Par défaut Modifier le contenu d'un tableau
    Bonjour,
    J'essaie de modifier le contenue d'un tableaux mais quand j'essaie de lui attribuer une nouvelle valeur j'ai l'erreur "subscripted value is neither array nor pointer nor vector" j'ai cru comprendre qu'il fallait faire un pointer mais j'ai pas vraiment comprit ce qu'il fallait faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SDL_Rect *test = &x[numberOfPlater];
    *test[1][1] = 10;
    Le contenue de mon tableaux est des SDL_rect. J'ai essayer ca sans trop comprendre ce que je faisait et comme attendu ça n'a pas fonctionner, si quelqu’un peux m'éclairer ^^

  2. #2
    Membre Expert
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Par défaut
    Comment est déclaré x ? Le compilateur devrait produire des avertissements, voire des erreurs. Que dit-il ?

    Que pourrait signifier r = 10; lorsque r est de type SDL_Rect ?

  3. #3
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2019
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 26
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2019
    Messages : 35
    Par défaut
    x est déclarée de cette façon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SDL_Rect x[numberOfPlater]
    La seul érreure que génère le compilateur est "subscripted value is neither array nor pointer nor vector", aucun warning rien d'autre.
    Ce que je veux c'est changer les deux première coordonner du rect afin de déplacer le rectangle,
    donc si je modofie les deux première valeur je peux modifier l'absice et l'ordonner de mon rectange,

  4. #4
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 315
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 315
    Billets dans le blog
    5
    Par défaut
    Bonjour.

    J’ai du mal à comprendre la manipulation des pointeurs que tu fais.

    Si x est un tableau alors on a une écriture de la forme x[].
    Écrire &x[] demande à accéder à l’adresse de l’adresse du tableau. L’interet ? Surtout que tu déclares un pointeur test à partir duquel tu utilises la variable contenue comme le pointeur du tableau x[]. C’est redondant il me semble.

    Soit tu utilises x sans les [] et tu accèdes au pointeur du premier élément, soit tu utilises x[] pour accéder à un élément quelconque de ce tableau en fonction de l’index transmis.

    Ensuite un tableau à deux dimensions n’existe pas en interne. Tous les tableaux, quelque soit le nombre de dimensions déclarées, est en réalité un tableau à une dimension.

    Pour vouloir accéder à une donnée (X,Y) on peut écrire ton code de cette manière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SDL_Rect *test = x;
    test[X + Y*numberOfPlater] = 10;

  5. #5
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2019
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 26
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2019
    Messages : 35
    Par défaut
    C'est justement ce qui me gène, le tableau a une seule dimension mais dedans j'ai un SDL_Rect de stocké. C'est-à-dire 4 valeurs (x,y,width,height) et j’aimerais pouvoirs modifier les deux premiers séparément sans toucher au reste, par exemple pour faire une animation qui déplacerait légèrement mon rectangle avant de mettre à jour l'écran.
    Je sais pas trop non plus ce que j'essayais de faire avec le pointer, je débute et ne sais pas trop (voire pas du tout) m'en servir.
    Ce que j'aimerais faire concrètement serait quelque chose comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    x[1] = [100,100,20,10]
    for (i=0,i<hauteur souhaitée,i++)
    {  
      x[1] = [100,100+5*i,20,10]
      // actualisation de l'écran 
      // delai de 500 miliseconde
    }
    la rédaction ne correspond pas aux C mais c'est l'idée

  6. #6
    Membre Expert
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Par défaut
    Le type SDL_Rect est un enregistrement, struct en C. On accède à ses objets membres via l'opérateur . (point). Il faut relire le cours à ce sujet.

  7. #7
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2019
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 26
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2019
    Messages : 35
    Par défaut
    Merci je ne connaissais même pas l’existence des enregistrement, j'ai relu le cour et comprend mieux, ça marche ^^
    Par contre si je fait ça, cela ne déplace pas proprement parler le rectangle j'en dessine un nouveaux à une autre position. Il y a pas un moyen de changer la position de l'autre rectangle ?
    Je suis obliger d'en tracer un autre et de supprimer l'ancien à chaque fois ?

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

Discussions similaires

  1. [JNA] Appeler une fonction modifiant le contenu d'un tableau
    Par Caduchon dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 01/08/2012, 15h11
  2. Modifier le contenu d'un tableau
    Par oneagaindoguys dans le forum Documents
    Réponses: 1
    Dernier message: 06/04/2010, 14h06
  3. [MySQL] Modifier le contenu d'un tableau associatif
    Par christophesav dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 02/04/2010, 16h50
  4. Modifier le contenu d'une cellule d'un tableau dynamiquement
    Par SPACHFR dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 25/08/2009, 16h45
  5. Réponses: 20
    Dernier message: 01/06/2005, 09h37

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