9 utilisateurs inconnus

 Mot :   Pseudo :  
 
Bas de page
Auteur
 Sujet :

Création d'un typedef en C

 
n°56871
fredo490
Mais pourquoi donc ?
Posté le 26-03-2007 à 20:50:37  profilanswer
 

Bonjour les gens, j'ai une petite question de mise en forme et de déclaration.
En gros, le prof veut qu'on fasse mumuse et qu'on découvre les "TYPEDEF" mais sans explication c'est chaud.
 
En gros, il faut qu'on fasse un tableau contenant des valeurs double (les valeurs sont prédéfinies).
Quand je fais ça, tout fonctionne  

Code :
  1. void main ()
  2. {
  3. const int TMAX = 10 ;
  4. typedef double TYPE10[TMAX] ;
  5. TYPE10 nbr ;
  6. nbr[0] = 1.2 ;
  7. nbr[1] = 5.0 ;
  8. nbr[2] = 4.6 ;
  9. nbr[3] = 8.2 ;
  10. nbr[4] = 7.6 ;
  11. nbr[5] = 4.6 ;
  12. nbr[6] = 0.0 ;


 
Mais si j'essaye de tout "comprimer" ça ne fonctionne plus, il y a une erreur de compilation.

Code :
  1. void main ()
  2. {
  3. const int TMAX = 10 ;
  4. typedef double TYPE10[TMAX] ;
  5. TYPE10 nbr = (1.2,5.0,4.6,8.2,7.6,4.6,0.0) ;
  6. }


 
Un peu d'aide SVP !?

n°56873
Freeed
Posté le 26-03-2007 à 20:56:51  profilanswer
 

A vue de nez, je dirais que c'est à cause du const int TMAX = 10 ;. Dans le premier cas, tu ne remplis pas ton tableau directement, donc tu accèdes à chaque cellule séparément. Dans le deuxième cas, tu le remplis directement, il faut donc lui donner toutes les valeurs...


---------------
Saying that Java is nice because it works on all OS's is like saying that anal sex is nice because it works on all genders.
Play loud, drink hard.
n°56880
LostSoul
Manieur de hache
Posté le 26-03-2007 à 21:36:35  profilanswer
 

#define TMAX 10

 

parce que sinon ton typedef peut pas être défini à la compilation

 

(il me semble)

 

EDIT: j'me demande même si c'est pas typedef double[TMAX] TYPE10;


Message édité par LostSoul le 26-03-2007 à 21:37:26

---------------
In Girum Imus Nocte Et Consumimur Igni
In-Wonderland - Blog - Start64
n°56881
fredo490
Mais pourquoi donc ?
Posté le 26-03-2007 à 21:43:40  profilanswer
 

nop, rien à faire ... j'ai tout testé et il n'y a rien à faire

n°56882
Freeed
Posté le 26-03-2007 à 21:45:07  profilanswer
 

Et tu peux le faire de la façon que tu veux ? Du moment que tu utilises le typedef ?


---------------
Saying that Java is nice because it works on all OS's is like saying that anal sex is nice because it works on all genders.
Play loud, drink hard.
n°56884
LostSoul
Manieur de hache
Posté le 26-03-2007 à 22:00:06  profilanswer
 

maintenant chuis pas sur que les typedefs passent pour des tableaux :/
normalement ca passe pour des struct mais pour des tableaux j'ai un doute
 
http://publications.gbdirect.co.uk [...] pedef.html
 
Eh ben si ca doit marcher d'après cette doc :p
 
donc  
 

Code :
  1. typedef double[10] myArray;
  2. void main() { myArray array = (1.2,5.0,4.6,8.2,7.6,4.6,0.0); }


Message édité par LostSoul le 26-03-2007 à 22:03:59

---------------
In Girum Imus Nocte Et Consumimur Igni
In-Wonderland - Blog - Start64
n°56885
fredo490
Mais pourquoi donc ?
Posté le 26-03-2007 à 22:40:32  profilanswer
 

Solution trouvé !

Code :
  1. const int TMAX = 10 ;
  2. typedef double TYPE10[TMAX] ;
  3. TYPE10 nbr = {1.2,5.0,4.6,8.2,7.6,4.6,0} ;


 
Parenthèse  =>  Accolade


Message édité par fredo490 le 26-03-2007 à 22:41:05
n°56886
Ashe
reenignE esreveR
Posté le 26-03-2007 à 22:41:52  profilanswer
 

En C const c'est pour la lecture seule, pas pour les constantes, donc non ca marche pas

Message cité 1 fois
Message édité par Ashe le 26-03-2007 à 22:41:59

---------------
Globe trotter/SDF - Namur, Belgique
Joy, beautiful spark of the gods, Daughter of Elysium, We enter fire imbibed, Heavenly, thy sanctuary.
Trombi Matbe
n°56887
Ashe
reenignE esreveR
Posté le 26-03-2007 à 22:43:00  profilanswer
 

(donc:

Code :
  1. #define TMAX 10
  2. int main()
  3. {
  4.     typedef double TYPE10[TMAX];
  5.     TYPE10 nbr = { ... };
  6.     return 0;
  7. }


et pour l'info, typedef fonctionne exactement comme une declaration de variable, sauf que ca declare un type, donc

Code :
  1. int a; /* a = variable int */
  2. typedef int a; /* a = type int */
  3. float a; /* a = variable float */
  4. typedef float a; /* a = type float */
  5. char a[10]; /* a = variable char[10] */
  6. typedef char a[10]; /* a = type char[10] */
  7. void (* p)( void ); /* a = variable void (*)( void ) */
  8. typedef void (* p)( void ); /* a = type void (*)( void ) */


)


Message édité par Ashe le 26-03-2007 à 22:45:22

---------------
Globe trotter/SDF - Namur, Belgique
Joy, beautiful spark of the gods, Daughter of Elysium, We enter fire imbibed, Heavenly, thy sanctuary.
Trombi Matbe
n°56888
sebx
boulet cherche canon
Posté le 26-03-2007 à 22:54:13  profilanswer
 

ouh pinaise ça me manque pas moi le C  :D


---------------
Célibataire & béhémiste de service
Gentil Organisateur des rencontres matbe
JH 27 ans, bon salaire, propriétaire, roulant en berline Allemande cherche femme pour mariage, bébés et + si affinités
n°56889
Ashe
reenignE esreveR
Posté le 26-03-2007 à 22:55:51  profilanswer
 

Jcrois que j'ai jamais compile un programme en C huhu


---------------
Globe trotter/SDF - Namur, Belgique
Joy, beautiful spark of the gods, Daughter of Elysium, We enter fire imbibed, Heavenly, thy sanctuary.
Trombi Matbe
n°56890
sebx
boulet cherche canon
Posté le 26-03-2007 à 22:59:40  profilanswer
 

moi j'en ai bouffé 5 ans à l'école, on avait droit qu'à ça... (exceptionnellement du C++)
mais bon c'est bien ça t'apprends quelques concepts de base, notamment les pointeurs  :)  (puis les ";" mais bon  :whistle: )


---------------
Célibataire & béhémiste de service
Gentil Organisateur des rencontres matbe
JH 27 ans, bon salaire, propriétaire, roulant en berline Allemande cherche femme pour mariage, bébés et + si affinités
n°56891
fredo490
Mais pourquoi donc ?
Posté le 26-03-2007 à 23:17:11  profilanswer
 

Ashe a écrit :

En C const c'est pour la lecture seule, pas pour les constantes, donc non ca marche pas


 
Ben avec const ça fonctionne et c'est le "prof" qui nous a dit de déclarer une constante comme ça ...

n°56894
Ashe
reenignE esreveR
Posté le 27-03-2007 à 00:05:20  profilanswer
 

Si ca fonctionne, soit:

  • c'est du C++
  • c'est du C99 (pas trop supporte et utilise par pas grand monde)


---------------
Globe trotter/SDF - Namur, Belgique
Joy, beautiful spark of the gods, Daughter of Elysium, We enter fire imbibed, Heavenly, thy sanctuary.
Trombi Matbe
n°56895
LostSoul
Manieur de hache
Posté le 27-03-2007 à 07:20:04  profilanswer
 

Enfin déjà drôle d'idée de définir un type comme étant un tableau, c a cache la notion de tableau, ca rend le code pseudo-illisible pour qqun qui fait pas attention.


---------------
In Girum Imus Nocte Et Consumimur Igni
In-Wonderland - Blog - Start64
n°56897
fredo490
Mais pourquoi donc ?
Posté le 27-03-2007 à 10:45:42  profilanswer
 

LostSoul a écrit :

Enfin déjà drôle d'idée de définir un type comme étant un tableau, c a cache la notion de tableau, ca rend le code pseudo-illisible pour qqun qui fait pas attention.


 
Ben faut dire ça au prof ...
Je lui dis souvent que ses sujets sont vraiment moyen voir ilogique.

n°56905
LostSoul
Manieur de hache
Posté le 27-03-2007 à 12:01:04  profilanswer
 

Comme beaucoup de démonstrations théoriques, elles ne sont là que pour la théorie ;) en pratique elles servent pas à grand chose


---------------
In Girum Imus Nocte Et Consumimur Igni
In-Wonderland - Blog - Start64
n°56907
sebx
boulet cherche canon
Posté le 27-03-2007 à 14:00:20  profilanswer
 

LostSoul a écrit :

Comme beaucoup de démonstrations théoriques, elles ne sont là que pour la théorie ;) en pratique elles servent pas à grand chose


c'est exactement la définition d'un prof que tu donnes là   :D


---------------
Célibataire & béhémiste de service
Gentil Organisateur des rencontres matbe
JH 27 ans, bon salaire, propriétaire, roulant en berline Allemande cherche femme pour mariage, bébés et + si affinités

Aller à :
Ajouter une réponse