#951 Le 12/07/2011, à 06:42
- Compteur du TdCCT
Re : /* Topic des codeurs couche-tard [5] */
Scores totaux, depuis le début :
1) 3753 nesthib
2) 3299 samuncle
3) 3214 Πυλάδης
4) 2404 Кຼزດ
5) 1880 cm-t
6) 1754+5 grim7reaper /* ./viewtopic.php?pid=3486252#p3486252 */
7) 1440 na kraïou
8) 867 helly
9) 862 \\Ouranos//
10) 705 tshirtman
11) 659 gnuuat
12) 565 Lagierl
13) 445 Rolinh
14) 418 nathéo
15) 396 The Uploader
16) 271 Kanor
17) 202 :!pakman
18) 196 Askelon
19) 121 ǤƦƯƝƬ
20) 99 kamui57
21) 93 petifrancais
22) 78 edge_one
22) 78 pierguiard
24) 70 gulp
25) 45 Le Rouge
26) 42 sakul
27) 37 ilagas
28) 36 xapantu
29) 30 keny
30) 26 gustare
30) 26 d10g3n
32) 25 GentooUser
32) 25 Morgiver
34) 24 ไ୦บเઢ'
34) 24 Steap
36) 20 CROWD
37) 18 Ph3nix_
38) 16 kouskous
39) 15 timsy
40) 14 HP
41) 12 stratoboy
41) 12 sailing
43) 11 alexises
43) 11 Crocoii
45) 10 Toineo
45) 10 NutMotion
45) 10 pseudovingtcinqcaracteres
45) 10 pfriedZ
45) 10 CasseTaTele
45) 10 Zeibux
45) 10 THS`
52) 8 Mornagest
53) 7 Vista
54) 6 ubuntlin
54) 6 asma.geek
56) 5 tendances-tdct
56) 5 kinouchou
58) 4 danychou56
58) 4 Neros
58) 4 Biaise
58) 4 totoflute
58) 4 pinballyoda ㋛
58) 4 NLS le pingouin
58) 4 ceric
58) 4 Dice-Man
58) 4 Pylade
67) 3 Revan26914
67) 3 raspouillas
67) 3 sweetly
70) 2 SoJaS
71) 1 geenux
71) 1 ArzhurBZH
Codez-vous trop tard le soir ?
Demandez au Compteur du TdCCT pour le savoir !
J’ai été généreusement codé par tshirtman ; d’ailleurs, voici mon code source. TdCCT CEP : ./viewtopic.php?pid=3493579#p3493579 (p3492608).
Hors ligne
#952 Le 12/07/2011, à 06:42
- Compteur du TdCCT
Re : /* Topic des codeurs couche-tard [5] */
Scores de la période en cours :
1) 110 nesthib
2) 99 Πυλάδης
3) 81 cm-t
4) 77 Кຼزດ
5) 68 samuncle
6) 60 na kraïou
7) 58 tshirtman
8) 21 grim7reaper
9) 14 HP
10) 11 The Uploader
11) 5 Rolinh
12) 1 helly
Codez-vous trop tard le soir ?
Demandez au Compteur du TdCCT pour le savoir !
J’ai été généreusement codé par tshirtman ; d’ailleurs, voici mon code source. TdCCT CEP : ./viewtopic.php?pid=3493579#p3493579 (p3492608).
Hors ligne
#953 Le 12/07/2011, à 08:56
- The Uploader
Re : /* Topic des codeurs couche-tard [5] */
can't convert Symbol into String
Mais euh! é_è
- Oldies PC : Intel Pentium 3 @ 800 Mhz sur CM ASUS P2B-F, GeForce 4 Ti4800 SE, Disque Dur Hitachi 160 Go, 512 Mo de RAM, 3DFX Voodoo 2, Sound Blaster 16 ISA PnP, Windows 98 SE / XP)
- Desktop : Intel Core i7 6700K @ 4 GHz sur CM ASUS Z170-P, GeForce GTX 1070, SSD Samsung 850 EVO 1 To, 16 Go de RAM, Disque Dur Seagate Barracuda 3 To, Windows 10
Hors ligne
#954 Le 12/07/2011, à 11:53
- helly
Re : /* Topic des codeurs couche-tard [5] */
Putain SDL me fait surchier mais à un point !
J’ai re-essayé de faire un jeu de la vie, mais en full C cette fois, pas en C/C++, et quand je fais
#include <stdlib.h>
#include <stdio.h>
#include "jeu.h"
int main (void)
{
char* grille[N_CASE];
int cpt;
int choix = 0;
SDL_Surface *ecran = NULL;
ecran = SDL_SetVideoMode(T_CELLULE*N_CASE, T_CELLULE*N_CASE, 32, SDL_HWSURFACE);
for (cpt = 0; cpt < N_CASE; cpt++)
grille[cpt] = (char*) malloc(sizeof(char));
/* while(choix == 0)
{
generation(grille);
afficher(grille,ecran);
printf("suite = 0");
scanf("%d",&choix);
}*/
for (cpt = 0 ; cpt < N_CASE; cpt++)
free(grille[cpt]);
SDL_FreeSurface(ecran);
return EXIT_SUCCESS;
}
Ça me fait une fuite mémoire de juste 8 octets, mais quand j’ajoute
SDL_Quit()
(qui est sensé fermer proprement SDL) avant le return, là j’ai une fuite de 32 octets !
Elle est où la feinte ? J’vais lui casser la tronche !
Donc il vaut mieux quoi dans ce cas ? je ferme avec ou sans SDL_Quit ?
Dernière modification par helly (Le 12/07/2011, à 11:56)
Archlinux-wmii-dwb.
Un problème résolu ? Faites le savoir en mettant [résolu] à côté du titre de votre topic.
Un problème non résolu ? Faites le savoir en insultant ceux qui cherchent à vous aider.
Un site bleu super remasterised©, un wiki cherchant des volontaires pour traduire un site.
Hors ligne
#955 Le 12/07/2011, à 12:00
- xapantu
Re : /* Topic des codeurs couche-tard [5] */
Je ne vois pas le SDL_Init, ça vient peut être de là ?
Hors ligne
#956 Le 12/07/2011, à 12:44
- helly
Re : /* Topic des codeurs couche-tard [5] */
Ha…
Bon, t’façon je recommence à 0, je commence aussi à toucher les mallocs, et visiblement ça foutait la merde, je recommence et je redonne des news après .
Archlinux-wmii-dwb.
Un problème résolu ? Faites le savoir en mettant [résolu] à côté du titre de votre topic.
Un problème non résolu ? Faites le savoir en insultant ceux qui cherchent à vous aider.
Un site bleu super remasterised©, un wiki cherchant des volontaires pour traduire un site.
Hors ligne
#957 Le 12/07/2011, à 12:47
- helly
Re : /* Topic des codeurs couche-tard [5] */
Un malloc pour un tableau 2D de char NB×NB c’est bien :
char *tab[NB];
for (int cpt = 0 ; cpt < NB ; cpt ++)
tab[NB] = (char*) malloc(sizeof(char));
Non ?
Ça m’arrangeerai que non, ça expliquerait bien des choses…
Archlinux-wmii-dwb.
Un problème résolu ? Faites le savoir en mettant [résolu] à côté du titre de votre topic.
Un problème non résolu ? Faites le savoir en insultant ceux qui cherchent à vous aider.
Un site bleu super remasterised©, un wiki cherchant des volontaires pour traduire un site.
Hors ligne
#958 Le 12/07/2011, à 12:48
- tshirtman
Re : /* Topic des codeurs couche-tard [5] */
Je viens de suivre ta signature, t'es au courant qu'il faut un ";" après les codes d'entités html? sinon "autohébergé" s'affiche tel-quel, ça fait un peu moche
Hors ligne
#959 Le 12/07/2011, à 12:50
- tshirtman
Re : /* Topic des codeurs couche-tard [5] */
Un malloc pour un tableau 2D de char NB×NB c’est bien :
char *tab[NB]; for (int cpt = 0 ; cpt < NB ; cpt ++) tab[NB] = (char*) malloc(sizeof(char));
Non ?
Ça m’arrangeerai que non, ça expliquerait bien des choses…
pourquoi s'embéter?
char *tab[NB][NB];
tab = (char*) malloc(sizeof(char) * NB * NB);
edit: code non testé, mes restes de C, toussa...
Dernière modification par tshirtman (Le 12/07/2011, à 12:52)
Hors ligne
#960 Le 12/07/2011, à 12:54
- helly
Re : /* Topic des codeurs couche-tard [5] */
Je viens de suivre ta signature, t'es au courant qu'il faut un ";" après les codes d'entités html? sinon "autohébergé" s'affiche tel-quel, ça fait un peu moche
Bizarre, chémoiçamarche… J’arrangerai ça.
J’vais aussi tester ton malloc, merci.
edit : heuu *tab[NB][NB], c’est un tableau 3D ça !
edit2 : bhé non, ça semble pas marcher ton truc, désolé .
…
edit1024 : STFW, trouvé ça :
char **tab = (char**) malloc (NB * sizeof(char*));
for (cpt…)
tab[cpt] = (char*) malloc (NB * sizeof(char));
Ça semble plus valable. Ça l’est ?
Dernière modification par helly (Le 12/07/2011, à 13:05)
Archlinux-wmii-dwb.
Un problème résolu ? Faites le savoir en mettant [résolu] à côté du titre de votre topic.
Un problème non résolu ? Faites le savoir en insultant ceux qui cherchent à vous aider.
Un site bleu super remasterised©, un wiki cherchant des volontaires pour traduire un site.
Hors ligne
#961 Le 12/07/2011, à 13:13
- tshirtman
Re : /* Topic des codeurs couche-tard [5] */
hum, c'est un pointeur vers un tableau 2D pour moi, après, ça dépends pas mal de ta façon d'utiliser les tableaux en C. la méthode que je propose devrait te permettre d'indéxer correctement, et de faire ton allocation en une seule fois... je vais faire 2-3 tests, mais grim ou pylad seront peut être plus clairs ou plus justes que moi .
Hors ligne
#962 Le 12/07/2011, à 13:19
- helly
Re : /* Topic des codeurs couche-tard [5] */
Yep parceque même si ton truc marche, je ne le comprend pas, je vais donc attendre d’avoir un autre avis avant d’essayer de comprendre un truc potenciellement faux, j’ai un peu de mal avec les mallocs.
(et les pointeurs en général, j’suis un C++ codeur moi, pas du C !)
Archlinux-wmii-dwb.
Un problème résolu ? Faites le savoir en mettant [résolu] à côté du titre de votre topic.
Un problème non résolu ? Faites le savoir en insultant ceux qui cherchent à vous aider.
Un site bleu super remasterised©, un wiki cherchant des volontaires pour traduire un site.
Hors ligne
#963 Le 12/07/2011, à 13:28
- grim7reaper
Re : /* Topic des codeurs couche-tard [5] */
@helly : pourquoi pas tout simplement ça
char *tab = malloc (NB * NB);
(Au passage, le cast du retour de malloc est inutile)
Ou si tu veux pouvoir changer le type sans soucis
char *tab = malloc (NB * NB * sizeof *tab);
Ok, c'est un tableau 1D (donc une unique alloc, et ça c'est cool (vitesse, gestion des erreurs, toussa)) mais ça s'utilise très bien en tant que tableau 2D.
Perso c'est ce que j'utilisais dans ma génération de laby.
Pour la 2D suffit d'utiliser les bonnes vieilles formules
2D to 1D :
index1D = (x * NbColonne) + y)
1D to 2D :
x = index1D / nbColonne
y = index1D % nbColonne
Je répondrais plus en détail sur tes solutions et celle de tshirtman quand je serais de retour chez moi (sauf si Pylade s'y colle avant moi :]).
Là j'ai pas vraiment le temps :-/
Dernière modification par grim7reaper (Le 12/07/2011, à 13:33)
Hors ligne
#964 Le 12/07/2011, à 13:33
- helly
Re : /* Topic des codeurs couche-tard [5] */
Ouais mais pour l’instant j’suis en train d’essayer de maîtriser les pointeurs.
Les affaires d’optimisation de changement de 2D en 1D, je vais attendre un peu .
Tu peux juste me dire si l’exemple que je viens de donner est bon stp ?
Archlinux-wmii-dwb.
Un problème résolu ? Faites le savoir en mettant [résolu] à côté du titre de votre topic.
Un problème non résolu ? Faites le savoir en insultant ceux qui cherchent à vous aider.
Un site bleu super remasterised©, un wiki cherchant des volontaires pour traduire un site.
Hors ligne
#965 Le 12/07/2011, à 13:40
- grim7reaper
Re : /* Topic des codeurs couche-tard [5] */
Ouais mais pour l’instant j’suis en train d’essayer de maîtriser les pointeurs.
Les affaires d’optimisation de changement de 2D en 1D, je vais attendre un peu .
Spa qu'une affaire d'optimisation, c'est surtout plus simple niveau gestion des erreurs (une seule alloc...).
Et puis c'est comme ça que fait le compilo avec les tableaux statiques, genre quand tu fais
char tab[N][M];
bah en fait c'est juste un tableau 1D.
Tu veux maîtriser les pointeurs ? Bah justement ma solution est pas mal pour te faire faire un peu de gym là dessus
Tu peux juste me dire si l’exemple que je viens de donner est bon stp ?
Ouais, le dernier (celui STFW) me semble bon (mais si tu veux gérer les erreurs et éviter toutes fuites de mémoire tu vas chier des briques par rapport à ma proposition :])
Dernière modification par grim7reaper (Le 12/07/2011, à 13:40)
Hors ligne
#966 Le 12/07/2011, à 13:47
- helly
Re : /* Topic des codeurs couche-tard [5] */
Bon, je fais un code correct et ensuite j’adapte avec ta solution .
Archlinux-wmii-dwb.
Un problème résolu ? Faites le savoir en mettant [résolu] à côté du titre de votre topic.
Un problème non résolu ? Faites le savoir en insultant ceux qui cherchent à vous aider.
Un site bleu super remasterised©, un wiki cherchant des volontaires pour traduire un site.
Hors ligne
#967 Le 12/07/2011, à 13:57
- tshirtman
Re : /* Topic des codeurs couche-tard [5] */
ma solution, si je me souvient bien, permettait un compromis (chose due) en offrant du 1D qui était indexable avec [x][y] quand même, mais ça ne marchais que dans le scope ou était créé le tableau, une fois passé en pointeur à d'autres, ça sautait, retour aux formules de grim, j'ai beaucoup utilisé ça dans qixfix
Hors ligne
#968 Le 12/07/2011, à 15:16
- helly
Re : /* Topic des codeurs couche-tard [5] */
Bon voilà le code est okay, mais toujours ce SDL_Quit() qui fait fuiter la mémoire malgrès mon SDL_Init(SDL_INIT_VIDEO).
Archlinux-wmii-dwb.
Un problème résolu ? Faites le savoir en mettant [résolu] à côté du titre de votre topic.
Un problème non résolu ? Faites le savoir en insultant ceux qui cherchent à vous aider.
Un site bleu super remasterised©, un wiki cherchant des volontaires pour traduire un site.
Hors ligne
#969 Le 12/07/2011, à 16:04
- grim7reaper
Re : /* Topic des codeurs couche-tard [5] */
Jpars du boulot là.
Le temps que j'arrive chez moi, poste un code minimal et compilable qui reproduit ton problème
Je regarderais ça en arrivant (ou un peu plus tard).
Hors ligne
#970 Le 12/07/2011, à 16:33
- helly
Re : /* Topic des codeurs couche-tard [5] */
Okay un minimum donc :
#include <SDL/SDL.h>
int main (void)
{
SDL_Init(SDL_INIT_VIDEO);
//SDL_Quit();
return EXIT_SUCCESS;
}
Dernière modification par helly (Le 12/07/2011, à 16:36)
Archlinux-wmii-dwb.
Un problème résolu ? Faites le savoir en mettant [résolu] à côté du titre de votre topic.
Un problème non résolu ? Faites le savoir en insultant ceux qui cherchent à vous aider.
Un site bleu super remasterised©, un wiki cherchant des volontaires pour traduire un site.
Hors ligne
#971 Le 12/07/2011, à 16:57
- Pylades
Re : /* Topic des codeurs couche-tard [5] */
Je ne comprends pas tes problèmes : soit tu déclares un tableau statique :
char tab[NB][NB];
soit tu alloue un tableau dynamique (méthode de grim, c’est plus simple) :
char *tab = malloc (NB * NB * sizeof *tab);
Mais les autres trucs, c’est pour se compliquer la vie, je trouve.
Ah, et comme tu semble connaître la taille de ton tableau à la compilation, personnellement j’opterais pour la forme statique.
“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
Linus Torvalds – 12 janvier 2003
Hors ligne
#972 Le 12/07/2011, à 16:59
- helly
Re : /* Topic des codeurs couche-tard [5] */
Le but n’est pas de faire un truc utile, mais d’apprendre à me servir de ces machins.
Archlinux-wmii-dwb.
Un problème résolu ? Faites le savoir en mettant [résolu] à côté du titre de votre topic.
Un problème non résolu ? Faites le savoir en insultant ceux qui cherchent à vous aider.
Un site bleu super remasterised©, un wiki cherchant des volontaires pour traduire un site.
Hors ligne
#973 Le 12/07/2011, à 17:06
- Pylades
Re : /* Topic des codeurs couche-tard [5] */
@ helly : pour ton programme minimal, en décommentant le SDL_Quit, Valgrind me dit ceci…
==2037== LEAK SUMMARY:
==2037== definitely lost: 414 bytes in 7 blocks
==2037== indirectly lost: 352 bytes in 8 blocks
==2037== possibly lost: 0 bytes in 0 blocks
==2037== still reachable: 57,694 bytes in 863 blocks
==2037== suppressed: 0 bytes in 0 blocks
==2037==
==2037== For counts of detected and suppressed errors, rerun with: -v
==2037== ERROR SUMMARY: 6 errors from 6 contexts (suppressed: 4 from 4)
Si t’es sûr que ce code minimal est correct, tu peux l’utiliser pour générer un fichier de suppression, que tu pourras ensuite utiliser dans tes tests ultérieurs.
“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
Linus Torvalds – 12 janvier 2003
Hors ligne
#974 Le 12/07/2011, à 17:09
- Pylades
Re : /* Topic des codeurs couche-tard [5] */
Le but n’est pas de faire un truc utile, mais d’apprendre à me servir de ces machins.
Ben pour apprendre à t’en servir correctement, le mieux c’est d’utiliser ce qui est utile, non ?
Dernière modification par Πυλάδης (Le 13/07/2011, à 03:52)
“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
Linus Torvalds – 12 janvier 2003
Hors ligne
#975 Le 12/07/2011, à 17:09
- grim7reaper
Re : /* Topic des codeurs couche-tard [5] */
Un malloc pour un tableau 2D de char NB×NB c’est bien :
char *tab[NB]; for (int cpt = 0 ; cpt < NB ; cpt ++) tab[NB] = (char*) malloc(sizeof(char));
Non ?
Ça m’arrangeerai que non, ça expliquerait bien des choses…
Non, c'est pas ça (comme tu t'en es rendu compte).
Ici, tu déclares un tableau de NB char* (jusque là, c'est bien), mais ensuite tu fais pointer chaque case sur un char (au lieu de faire pointer chaque case sur NB char)
pourquoi s'embéter?
char *tab[NB][NB]; tab = (char*) malloc(sizeof(char) * NB * NB);
edit: code non testé, mes restes de C, toussa...
Bah tes restes de C sont périmés ^^.
Ça compile même pas. Si je comprends bien, là tu déclares une matrice de char* et ensuite t'essaye de faire pointer tab (qui est un pointeur constant si je ne m'abuse, donc déjà ça part mal) sur un vecteur de NB² char.
edit1024 : STFW, trouvé ça :
char **tab = (char**) malloc (NB * sizeof(char*)); for (cpt…) tab[cpt] = (char*) malloc (NB * sizeof(char));
Ça semble plus valable. Ça l’est ?
Comme dit précédemment, oui c'est valide mais pas génial.
Qui dit alloc en cascade dit gestion des erreurs chiantes (enfin faut une autre boucle de désallocation en cas de soucis quoi) + impact sur les perfs (plus ou moins négligeable selon les cas).
ma solution, si je me souvient bien, permettait un compromis (chose due) en offrant du 1D qui était indexable avec [x][y] quand même, mais ça ne marchais que dans le scope ou était créé le tableau, une fois passé en pointeur à d'autres, ça sautait, retour aux formules de grim, j'ai beaucoup utilisé ça dans qixfix
Bah non du coup, pour ça faudrait déjà que ça compile
Okay un minimum donc :
#include <SDL/SDL.h> int main (void) { SDL_Init(SDL_INIT_VIDEO); //SDL_Quit(); return EXIT_SUCCESS; }
Bah je vois pas de fuites de mémoire (hormis celles toujours présente dues à la SDL/Xlib quoi).
Le but n’est pas de faire un truc utile, mais d’apprendre à me servir de ces machins.
Genre t'as jamais eu de cours de C ou un peu utilisé les pointeurs ?
Dernière modification par grim7reaper (Le 12/07/2011, à 17:13)
Hors ligne