begin process at 2012 05 29 15:51:05
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Débutant(e)

 > 

un peut d'aide svp. (pointeur?)


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

un peut d'aide svp. (pointeur?)

dimanche 15 août 2010 à 10:31:22 | un peut d'aide svp. (pointeur?)

mana


int *tab[10];
int *pos;


int create(int val){
if (val>=0 && val<10) tab[val]=new int[100];
}

int test(int val){
pos=val; // ligne invalide
if (val>=0 && val<10) pos=tab[val]; // ligne OK
}


dans la fonction 'test' val est soit une valeur entre 1 et 9
ou directement l'adresse du tableau(tab[x])

comment fait-on pour que justement 'pos=val'?

dimanche 15 août 2010 à 18:04:34 | Re : un peut d'aide svp. (pointeur?)

ghuysmans99

Membre Club
Que veux-tu modifier ? La valeur pointée par pos ou le pointeur contenu dans cette variable ?

VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
lundi 16 août 2010 à 08:50:15 | Re : un peut d'aide svp. (pointeur?)

deck_bsd

Membre Club
Yop,

A mon avis il veut modifier la valeur pointée par pos :) Donc il faut faire :

*pos=val;


++

deck_bsd

/*************************************/
[http://deck-bsd.eurower.net]
lundi 16 août 2010 à 09:49:51 | Re : un peut d'aide svp. (pointeur?)

Polack77

Attention dans ce cas à initialisé pos . Perso je ferais :
Code C/C++ :
int *tab[10];
int *pos = 0;


int create(int val){
if (val>=0 && val<10) tab[val]=new int[100];
}

int test(int val){
   if (pos == 0)
   {
      pos = (int*)malloc(sizeof(int));
   }
   *pos=val;
}

ATTENTION de bien penser à libérer la mémoire alloué à pos dans ce cas
Code C/C++ :
free(pos);


Pour info si tu veut que pos sauvegarde l'adresse de val il faut faire :
Code C/C++ :
int test(int* val){
pos=val;
}

Et appeler la fonction :
Code C/C++ :
test(&inValeur);


et je voie que ta fonction retourne un int. Que veut tu retourner ? La valeur contenu dans pos pour vérification ? Si oui :
Code C/C++ :
return(*pos);


Voila bonne prog

Amicalement
1000 recherches sur Google = 1Km de voiture en CO² (réfuté par Google )
1000 recherches sur Forestle = 100 m² de forêt tropicale sauvé .
Surfez écolo
lundi 16 août 2010 à 09:55:03 | Re : un peut d'aide svp. (pointeur?)

Polack77

Oups c'est du C++ (même si le code que j'ai posté fonctionne)
Code C/C++ :
int test(int val){
   if (pos == 0)
   {
      pos = new int;
   }
   *pos=val;
}

Et pour libérer :
Code C/C++ :
delete pos;
pos = 0; //<- sa c'est une sécurité comme sa tu peut tester si de la mémoire est allouée ou non 


Amicalement
1000 recherches sur Google = 1Km de voiture en CO² (réfuté par Google )
1000 recherches sur Forestle = 100 m² de forêt tropicale sauvé .
Surfez écolo
lundi 16 août 2010 à 20:23:10 | Re : un peut d'aide svp. (pointeur?)

mana

dsl mais j'ai beaucoup de mal avec les pointeurs ainsi que le vocabulaire qui y est attribuer.

int *tab[10];
int *pos;

// ici je crée un tableau
int create(int val){
if (val>=0 && val<10) tab[val]=new int[100];}

// je teste si c'est un tableau que j'ai crée
// ou si c'est l'adresse d'un tabeau
int test(int val){
if (val>=0 && val<10) pos=tab[val];return;
pos=???;
return}

int mafonction(){
int *p=pos;
for (int k=0;k<100;k++){
int v=*p;
v--;
*p++=v;
}
c'est une version simplifier de mon programme.
je pense que je veut modifier La valeur pointée par 'pos'.
mon problème c'est que dans la fonction 'create' , 'val' est soit une variable compris entre 1 et 9 ou directement une adresse mémoire.
mardi 17 août 2010 à 11:02:09 | Re : un peut d'aide svp. (pointeur?)

Polack77

Houlalalala je comprend rien à ce que tu veut faire
Quel est ton objectif en faite ?

Amicalement
1000 recherches sur Google = 1Km de voiture en CO² (réfuté par Google )
1000 recherches sur Forestle = 100 m² de forêt tropicale sauvé .
Surfez écolo
mardi 17 août 2010 à 13:41:02 | Re : un peut d'aide svp. (pointeur?)

mana

mon objectif est de gérer des images.
j'ai 2 type d'image,

_ la première est de créer une image par la fonction 'create',
en y assignent une valeur 'val'(de 1 a 9);

_ la deuxième , c'est une image créé par une autre application et là,
je récupère son adresse par une variable.(il n'y a pas d'autres solutions)

la fonction 'teste' devrai me permettre de récupérer l'adresse
sois d'une image que j'ai créé par l'instruction suivante ,
'pos=tab[val]'
sois une image d'une autre application par l'instruction :
'pos=val'
mais celle-ci ne marche pas.

puis avec la fonction 'mafonction' me permet de manipuler les images.

ps. 'pos' est une variable(pointeur) global.
mercredi 18 août 2010 à 12:26:04 | Re : un peut d'aide svp. (pointeur?)

Polack77

Ok donc si Val est entre 0 et 9 compris tu copie une "cellule" de ton tableau et si non tu copie val
Si je ne me trompe pas sa devrais donnée un truc du genre de :
Code C/C++ :
void test(int val)
{
   if (val>=0 && val<10)
   {
      pos=tab[val];
   }
   else
   {
      pos=&val;
   }
}


Tu remarqueras que j'ai viré les "return" et passé ta fonction en void (ne retourne rien)

Par contre ta fonction reçois un int pas un pointeur sur int (donc ATTENTION il est possible que la 1ére valeur soit comprise entre 0 et 9 alors que c'est une image que tu n'a pas crée )

En C++ tu peut faire sa :
Code C/C++ :
void test(int val)
{
   pos=tab[val];
}
void test(int* val)
{
   pos=val;
}

Comme sa si val est un int tu entre dans la 1ér fonction si c'est un int* dans la seconde.
Je ne sait plus par contre si le C autorise les redéfinitions

Si non il fraudais que tu ajoute un flag qui sauvegarde cette info de façon à savoir à l'avance ce que tu veut récupérer plutôt que d'avoir à le testé (je pense qu'il faudrait que tu revoie l'analyse pas vraiment le code, soit le "quoi faire" pas le "comment faire")

Autre idée (mais attention c'est du bricolage en contournant certaine sécurité de l'interpréteur de code donc méfiance)
Code C/C++ :
//Appel de test :
test((int*)inValeur) //la tu caste la variable que sa soit un int ou un int* tu recevras un int* problème sa ne sera pas forcément un pointeur est ça c'est VRAIMENT pas propre

//Déclaration de test :
void test(int* val)
{
   if (val>=0 && val<10)
   {
      //Du coup ici tu re-caste en int pour récupérer une valeur et non un pointeur (encore une fois ce n'est VRAIMENT pas propre)
      pos=tab[(int)val];
   }
   else
   {
      pos=val;
   }
}


Mais il vaudrais vraiment mieux que tu ajoute une variable (ou un tableau de variable ) qui indique la "provenance" de ton image si non il y à de gros risque que sa finisse par être impossible à maintenir comme code

PS :
Je te conseil aussi de toujours ajouter les "{" et "}" quand tu fait un if (même quand il n'y à qu'une seul ligne dans le if si non la lisibilité en prend un coup, enfin ce n'est que mon havie, d'autre développeur te dirais sans doute qu'il est inutile de surcharger ton code avec ça )

Amicalement
1000 recherches sur Google = 1Km de voiture en CO² (réfuté par Google )
1000 recherches sur Forestle = 100 m² de forêt tropicale sauvé .
Surfez écolo
mercredi 18 août 2010 à 12:31:29 | Re : un peut d'aide svp. (pointeur?)

Polack77

Sauf erreur de ma part ton problème venais justement des "{" et "}" manquant dans ton code car (encore une fois sauf erreur de ma part) le C ne reconnais pas les retour à la ligne donc :
Code C/C++ :
if (toto = 1) toto++;return toto;

Feras exactement la même chose que :
Code C/C++ :
if (toto = 1)
   toto++;
return toto;


Soit dans tout les cas tu passeras par "return toto;" que toto soit égale à 1 ou non

Amicalement
1000 recherches sur Google = 1Km de voiture en CO² (réfuté par Google )
1000 recherches sur Forestle = 100 m² de forêt tropicale sauvé .
Surfez écolo

1 2

Cette discussion est classée dans : aide, int, tab, val, pos


Répondre à ce message

Sujets en rapport avec ce message

tri tableau en ligne [ par TWITTI ] bonjour , je suis etudiant en mécanique et la programmtion c est embetant pour moi.J ai un probleme sur mon programme main().Je n arrive pas a faire jeux mode console en c [ par fifiprog ] Bonsoir a tous je dois creer un jeux sur un damier 10x10 ou tout d'abord deux joueurs pourrons s'affronter c'est le jeux des loups et agneau le but es deplacement avec fleche directionnelle [ par dami13014 ] bonjours tout le monde voila je débute en programmation et j'ai fait un petit sudoku il et pa trés complex mais j'aimerai bien pouvoir me déplacer ave besoin d'aide pour corrigé mon exercice [ par darktn ] Salut Tout le monde , j'ai quelque bug dans ce programme besoin d'aide , Le But De faire une deuxième matrice contient les Caractère qui ce trouve dan pile dynamique [ par korin221 ] Bonjour! Voila j'ai un problème. Je voudrais mélanger ma pile dynamique de façon aléatoire. Peut on directement mélanger la pile ou alors passer la pi anagrammes récursifs [ par sumakotra ] /* Bonjour a tous ... voila j'voulais faire un programme sortant tout les anagrammes d'un mot en permutant les différentes lettres et en affichant a c remplir un nombre dans un tableau [ par alex934 ] Bonjour, j'ai besoin de votre aide :) Voila je souhaite mettre un nombre stocké(int) dans un tableau exemple: int a=132; int tab[3]; je voudrais probleme en exécution [ par danni31 ] bonsoir;mon programme se compile sans aucune erreurs et il s'exécute, et se termine normalement mais la fenêtre apparaît puis disparaît immédiatement projet d'un debutant (classement) [ par emilienheude ] bonjour à tous, je suis debutant dans la programmation en c et mes enseignents on eu la bonne idée de nous faire travailler sur un projet de sondage.


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,666 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales