Help langage c

lililoulou -  
SebManfred Messages postés 484 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
j'ai besoin d'aide pour la compréhension d'un programme en c
c'est assez urgent. J'ai quelque notions mais quelques explication s'impose. J'ai déja visiter plein de site mais pour certaine ligne du programme je ne m'en sors pas et j'aurai besoin de votre confirmation.

double ztmp,coeftmp[7],*ptmp;
cela signifie t(il que le pointeur ptmp se promene dans le tableau coeftmp de 7 cellules? mais pourquoi avoir ajouter double ztmp

j=0;ptmp=coeftmp;

à quoi je ne comprend pas cette ligne

qu'est ce qu'un tableau isolé tout seul
Y->a=*ptmp;ptmp++;Y->b=*ptmp;ptmp++;Y->P=*ptmp

biensur a,b, P sont :
typedef struct{double a, b, P}COEFS;

merci à vous tous
A voir également:

3 réponses

Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
Salut.
Brouillon ton message !
Bon, quand tu fait "double a,b,c;" les virgules servent à déclarer en séquence. C'est à dire que c'est strictement équivalent à "double a;double b;double c;"
donc ta première question, la réponse est : non. ztmp, coeftmp, et ptmp sont 3 variables indépendantes.

j=0; peut pas répondre, je n'ai pas été présenter à j !
ptmp=coeftmp; tu fait pointé ptmp sur la première valeur du tableau coeftmp.
donc *ptmp==coeftmp[0]
en fesant ptmp++ tu fait pointé ptmp sur la case suivante de coeftmp, donc *ptmp==coeftmp[1]; maintenant.
Voilà, je pense que ça t'éclairera. Sinon, reprend tes cours sur les pointeurs.
0
nadsky Messages postés 162 Date d'inscription   Statut Membre Dernière intervention   61
 
bonjour
En fait, ztmp est un double, coeftmp est un tableau de doubles de 7 doubles et ptmp est un pointeur sur double.
Tu déclares tes variables seulement, donc elles ne sont pas liées entre elles.

Par contre, je voudrais bien répondre à ta question, mais pourrais -tu éclaircir cette ligne :
Y->a=*ptmp;ptmp++;Y->b=*ptmp;ptmp++;Y->P=*ptmp

c'est trop confus...

enjoy
0
SebManfred Messages postés 484 Date d'inscription   Statut Membre Dernière intervention   128
 
Y->a=*ptmp;ptmp++;Y->b=*ptmp;ptmp++;Y->P=*ptmp

c'est écrit de façon dégueulasse!!!
d'abord il n'y a pas de ";" à la fin, donc erreur.
il a une structure qui comporte au moins 3 éléments : a, b et P (dont on n'a par ailleurs pas vu le prototype ni la déclaration)
un pointeur vers cette structure qui s'appelle Y (idem côté déclaration et allocation... attention à l'erreur d'attribution d'une valeur sur un pointeur non initialisé... c'est un cas d'école!)
il initialise d'abord le membre a de la structure pointée par Y avec le contenu de la variable pointée par ptmp (qui pointe donc vers le 1er élément du tableau coeftmp)
ensuite il incrémente ptmp pour qu'il pointe vers le 2e élément du tableau coeftmp
il initialise ensuite le membre b de la structure pointée par Y avec le contenu de la variable pointér par ptmp (donc le 2e membre de coeftmp
il incrémente encore ptmp pour qu'il pointe vers le 3e élément de corftmp
puis il initialise le membre P de la structure pointée par Y avec le contenu de la variable pointér par ptmp

ça serait plus propre d'écrire
/// prototypage de la structure
/// déclaration du pointeur Y et initialisation (par un new ou un malloc)
double coeftmp[7],*ptmp;
/// remplissage de coeftmp
ptmp=coeftmp;
Y->a=*ptmp;
ptmp++;
Y->b=*ptmp;
ptmp++;
Y->P=*ptmp;
0