cs_djl
Messages postés3011Date d'inscriptionjeudi 26 septembre 2002StatutMembreDernière intervention27 novembre 20047 14 nov. 2004 à 18:04
non, t'es vraiment sur de savoir ce qu'est un tableau ? pourquoi ca s'indexe à partir de 0 ?
tu trouve pas que c'est stupide de déclarer 'int tab[3];' pour se servir de tab[1] et de tab[2] tout ca parce que t'arrive pas à te faire à l'idée que le premier element est tab[0] ?
et que come goutbouyo je ne sais pas de combien je vais avoir besoin.
Donc, a un moment donné, je vais devoir instancier et initialiser ma strtuct, okay?
bon allons-y:
_objet *objet;
mais la c'est comme si j'en créais une infinité (oui djl on est d'accord c'est juste unpointeur mais c'est pour faire simple)
Il va donc falloir allour de la mem a la fois pour les struct et pour les 'data' (les numdatas ya pas besoin)
donc au lieu de faire ca on fait:
_objet *objet=(_objet*)malloc(sizeof(float)*???);
evidemment le ??? je sé pas ce que c'est...
pasque le probleme, c'est que je veux pouvoir créer et supprimer a volonté des _objet objet, ayant chacun une liste de data de longueur propre.
essayons ca:
_objet *objet;
objet[0].datas=(float*)malloc(sizeof(float)*numdatas);
// la numdatas ne serait pas membre de objet mais général
objet[1]......etc,etc
sans oublier free.
ca marcherait?
T'as rien compris djl,
Ma structure à un rapport avec des ennemies, donc je veux que le premier élément du tableau correspondent au 1er ennemi( et non au 0ème ...).
C'est pour ça que j'utilise pas Time[0].time
Tu t'en rends peut être pas compte comme ça, mais ça simplifie bcp mon programme de faire comme ça, par rapport au nbre d'ennemie.
Arnaud16022
Messages postés1329Date d'inscriptionvendredi 15 août 2003StatutMembreDernière intervention16 juin 20102 14 nov. 2004 à 20:36
je vois ca que tu veux dire, mais dsl je suis daccord avec djl.
et ca simplifie pas du tout je pense
par ex tu fais
for (i=0;i<nb_enemie;i++)
au lieu de:
for (i=1;i<=nb_enemie;i++)
et pis ca bouffe de la mem, etc
enfin tu fais ce que tu veux, ton prog (nota à dlj: il me l'a file) n'est pas mal du tout comme ca, mais ton code ne sera jamais 'propre' commaç
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_djl
Messages postés3011Date d'inscriptionjeudi 26 septembre 2002StatutMembreDernière intervention27 novembre 20047 14 nov. 2004 à 20:51
goutbouyo > toi tu comprends pas qu'on ne cherche qu'a t'aider (et surtout à te faire gagner du temps)
tu codes mal, tu modélises mal les problemes, du coup tu produis du code que tu jetteras à la poubelle quand tu auras un meilleur niveau, encore une fois à quoi ca te sert ??
avec le k&r et de la motivation, tu apprends les bases du c en 2 semaines, apres tu seras plus efficaces mais tu auras encore beaucoup à apprendre de tes erreurs
tu dis que tu n'as pas le temps ? alors pourquoi tu perds ton temps à coder avec autant d'inefficacité ?
tu dis que j'ai rien compris ? et "C'est pour ça que j'utilise pas Time[0].time", c'est surtout que t'a aucune methode pour analyser et modeliser un probleme correctement, et tu connais pas le langage donc tu ne sais pas l'exploité
goutbouyo
Messages postés429Date d'inscriptionmardi 6 juillet 2004StatutMembreDernière intervention12 janvier 2008 14 nov. 2004 à 21:00
Je me résigne ...
Vous avez tous les 2 raisons et vous connaissez largement mieux que moi le language.
A djl => le k&r c'est un livre ou je peux le trouver sur internet ???
Donc, si je résume, vaut mieux que le 1er ennemi soit le numéro 0 et que je commence alors au début du tableau, soit Time[0].time.
C'est bien ça ???
Merci pour votre aide, et surtout pour votre patience ...
cs_djl
Messages postés3011Date d'inscriptionjeudi 26 septembre 2002StatutMembreDernière intervention27 novembre 20047 14 nov. 2004 à 21:10
oui toujours, modélise d'abord ton probleme en terme d'algo et d'objet, puis adapte le pour le langage que tu utilises (indices de tableaux 0->n-1 pour c/c++...)
le k&r, oui c'est un livre, la reference en ce qui concerne le c (co ecris par le createur du langage)
goutbouyo
Messages postés429Date d'inscriptionmardi 6 juillet 2004StatutMembreDernière intervention12 janvier 2008 14 nov. 2004 à 22:23
Ok.
C'est vrai que je le trouve un peu mal stucturé ...
Je vais voir pour ton livre.
Au fait pourquoi tu l'appeles k&r ??? C'est par rapport aux noms des auteurs ???
en c++ cette ecriture est redondante, pas besoin de typedef (de meme pour le public:)
struct _objet {float * datas;int numdatas;};
c'est la meme chose, apres englobe ca dans un vrai design de classe auffrant une sécurité à ton pointeurs (constructeur par defaut, destructeur (virtuel), operator=, constructeur par copie)
_objet *objet;
objet[0].datas=(float*)malloc(sizeof(float)*numdatas);
on est bien d'accord que objet[0] n'existe pas, donc erreur
maintenant en c++ utilise toujours new/delete (et new[]/delete[]) et oubli *alloc/free, c'est tres important car new et delete construisent et detruisent tes objets
et je peux que te conseiller d'utiliser les conteneurs générique de la stl, ca va énormenent te simplifier la vie (t'aura plus à t'occuper de tout ce qui est gestion memoire)
Arnaud16022
Messages postés1329Date d'inscriptionvendredi 15 août 2003StatutMembreDernière intervention16 juin 20102 15 nov. 2004 à 20:43
joli double post, comment t'as fait ca? lol
je sais bien qu'avec la stl ca serait plus simple, mais j'hésite...
et pour info, je ne sais absolument pas quelles sont les différences entre C et C++, mon bouquin passait allégrement la dessus et j'ai plus ou moins appris sur le tas, d'apres des sources qui elles aussi mélangaient C et C++... si t'avais un petit lien sous le coude qui explique tout ca...
bon je vais voir mes cours pour new et delete, mais c'est pas la premiere fois que je les croise.
mais pour malloc, Nate Robbins utilise ca dans son objloader et si lui l'utilise je suppose que c'est bien non? (c'est en c++)