CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[C++] Ce code est-il bon ?

dnob700
dnob700
Niveau 10
04 octobre 2004 à 23:45:51

http://wall.cours-info.net/?id=252&numero=non

ça compile bien, mais est-ce que les new et delete[] sont bien géré tel est ma question parce que avec les ** etc, je ne suis pas sur que j´ai écrit ce qu´il faut.

merci a tout ce qui pourront me donner des information me permettant d´arreter le coupable.

LGV
LGV
Niveau 28
05 octobre 2004 à 00:16:55

les new [] / delete [] semblent en bonne paire, mais dans ton ctor le premier déreférencement ne peut qu´etre invalide : tu utilise *Matrix alors que le pointeur Matrix contient n´importe quoi ; faut donc initialiser le premier d´indirection en premier.
Sinon, mes conseils pour améliorer :
- eviter les **, c´est toujours le merdier ; ne s´en servir que quand qqch d´externe doit modifier un pointeur, sinon utiliser des tableaux 1D ( ici, au lieu d´une tableau[h][l] tu fais un tableau[h*l] avec qq operators maisons pour masquer les décalages depuis l´exterieur, et on y gagne en simplicité
- la nomenclature, ton pointeur membre pourrait bien s´appeler m_pValues ou dans le style conformément aux standards couramment adoptés, parceque **Matrix on ne sait pas trop ce qu´on manipule ( pointeur, reference, objet, autre, donnée membre, parametre, var de pile, static, etc.)
- les for avec du code effectif, ça fait super style j´en conviens, mais c´est contre productif. Il est bcp plus clair d´écrire
for ( int index = 0; index < nMaxIndex; ++index) { . .. }
surtout quand on bosse à plusieurs sur le meme code, on zappe vite un truc qui se fait dans le for car c´est assez masqué.
je recommande d´utiliser des instructions en fin de for uniquement pour mettre à jour là ou les var liée à la boucle
D´une part écrire la forme compacte n´optimise rien, mais elle rend plus confus : 90% du code n´a pas besoin d´etre optimisé généralement, donc là où c´est pas la peine, on écrit les choses simplement, et là où faut un truc super tordu, on garde une version " naive" commentée pour aider les autres à comprendre la logique suivie.

Voilà, mes conseils, apres on en fait ce qu´on veut...

dnob700
dnob700
Niveau 10
05 octobre 2004 à 20:11:54

merci, je ne comprend pas exactement ce que tu veux me dire d´utiliser des tableau 1D.

mon programme est censé manipulé des matrice donc il m´a semblé logique d´utiliser des tableau 2D.

mais bon, ça n´a plus d´importance, mon disque dur est mort tout à l´heure et je ne reverrais jamais plus ce cher petit bout de code ( ainsi que les milliers de lignes que j´ai écrit depuis ma dernière sauvegarde qui remonte malheureusement il y a longtemps)...

LGV
LGV
Niveau 28
05 octobre 2004 à 20:34:56

tableau 2D : array[x][y]

tableau 1D : array[x + w*y]
avec w la valeur qu´il faut pour que un incrément de 1 sur y passe à la " ligne" suivante

imagine que t´as une matrice : tu mets toutes les lignes à la suite, pour t´as l´idée du tableau 1D. Et un seul niveau d´indirection, c´est bcp plus simple à gerer que plusieurs imbriqués
et comme le C++ est bô, tu colles un opérateur style ( int, int) sur ta classe pour masque le minuscule calcul

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de Jeux
  • Programmation
  • Création de sites web
  • Linux
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment