Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#126 Le 15/04/2010, à 09:15

tshirtman

Re : ..:: Topic des Codeurs Couche-Tard [0] ::..

et dans l'autre cas, celle de lire le manuel… mais ouais, les opérations en bash c'est pas mal aussi. ou alors y'a

sleep $(echo "9 3600 * p"|dc)

tongue

Hors ligne

#127 Le 15/04/2010, à 09:26

nesthib

Re : ..:: Topic des Codeurs Couche-Tard [0] ::..

ou pas tongue

$ time for ((i=0 ; i<1000 ; i++));do echo "1 1 +" | dc >/dev/null ; done

real	0m3.888s
user	0m1.036s
sys	0m3.984s
$ time for ((i=0 ; i<1000 ; i++));do echo $((1+1)) >/dev/null ; done

real	0m0.148s
user	0m0.112s
sys	0m0.032s

wink

(mais pour des calculs plus compliqués je te l'accorde ^^)


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#128 Le 15/04/2010, à 09:31

tshirtman

Re : ..:: Topic des Codeurs Couche-Tard [0] ::..

ouais ben si t'en est là, time moi echo 9h > /dev/null por voir… par ce  que j'ai proposé mieux avant coté perf tongue

Hors ligne

#129 Le 15/04/2010, à 09:43

grim7reaper

Re : ..:: Topic des Codeurs Couche-Tard [0] ::..

#!/bin/sh

WORLD=`who | cut -d ' ' -f 1 | uniq`

for PEOPLE in $WORLD
do
    echo "Hello $PEOPLE"
done

Pavéman is back \o/

Pylade a écrit :

Ouh, c’est très subtil, et confus pour moi en ce moment. J’ai encore des progrès à faire.
Donc j’ai déclaré toutes mes chaînes avec const char*, et tous mes tableaux de chaînes avec const char**, et j’ai utilisé des = partout, mais je me prends quand-même un SIGSEGV dans la tronche. Là, je n’ai pas le courage de pousser plus loin mes investigations.

Oui c'est assez subtil ces histoire de const (la semantique varie selon la position du mot-clef). Tous passer en const char* n'est pas forcément bon, il faut le faire si tes chaînes ne sont destinées qu'à la lecture (dans ce cas c'est très bien), sinon tu vas avoir des problèmes smile.

Voilà la tronche de mes fichiers pour la route.

J'y jettes un oeil (j'adore les SIGSEV big_smile) dès que j'ai un moment wink.

Je crois que je vais faire une fonction qui initialise la structure. C’est en effet une bonne idée. J’aurais aimé la créer, mais si je demande un pointeur sur struct opt en argument, que je crée et j’initialise la structure dans ma fonction et que j’affecte ensuite le pointeur passé, ça va chier car la structure ne sera définie que dans la fonction de création, non ? Donc même si c’est une fonction de création qui serait la plus adaptée à un utilisateur con, je ne vois pas comment faire… hmm

2 façons de faire.
Soit le gars fait un appel comme ça

/* code du programmeur */
struct opt* option = new_opt();

/* implementation correspondante dans ta lib 
 * Succes : tu renvoies le pointeur
 *  Echec  : tu renvoies NULL
 * Donc facile a tester                                */
struct opt* new_opt(void)
{
    struct opt* option = malloc(sizeof *option);
    if(option)
    {
        La tu initialises les champs avec les valeurs par defaut 
    }
    return option;
}

Soit le gars fait plutôt comme ça

/* code du programmeur */
struct opt option;
init_opt(&option);

/* implementation correspondante dans ta lib */
void init_opt(struct opt* option)
{
    if(option)
    {
        La tu initialises les champs avec les valeurs par defaut 
    }
}

Voilà les 2 voies qui s'offrent à toi.

Au passage :

int main(int, const char**);

c’est un prototype de main correct, ou argv ne doit pas être const char** ?

Non, pas de const ici. Les arguments doivent être modifiables.

Sinon, j’ai oublié de dire que gpm roxe.

cool

J’ai fait comme ça, à l’exception de -ansi dont je ne comprends pas l’intérêt, et de -O0 (je n’optimise pas par défaut, mais je comprends que cela constitue une sécurité). Et bien, ça oblige à faire preuve de beaucoup de rigueur, ça…

Le langage étant permissif de base et GCC plutôt laxiste, oui il faut s'astreindre à une certaine rigueur pour bien coder en C.
Pour le -O0, il me semble bien que par défaut il y est mais je préfère être explicite. Et surtout ne jamais faire de debug avec les optimisations activées car c'est un truc à rendre dingue (variables qui ont disparus, morceaux de code qui étaient dans une boucle et qui n'y sont plus, etc.).
Sinon, pour "ansi" c'est un synonyme de -std=c89 pour le C (et pour le C++ c'est synonyme de -std=c++98).

Merci pour tout le temps que tu as passé à m’aider.

No problem. Tu poses des questions intéressantes et tu les poses bien. De plus, tu cherches à comprendre et à apprendre (aussi bien tes erreurs que les réponses que j'y apporte), fais des essais et tu es intéressé par le fonctionnement.
À partir de là, quand je vois ça, ça me donne envie de t'aider (et de pondre des pavés explicatifs par la même occasion tongue). Je me dis que ce n'est pas vain car tu apprends des trucs (que tu pourra réutiliser lorsqu'un cas similaire se présentera ou ressortir un jour pour aider quelqu'un).
Quand je vois certaines demandes faites à l'arrache, sans effort ou recherche préalable et où le PO (posteur original) se contrefiche totalement de la réponse (et de sa qualité) mais qu'il veut juste que ça fonctionne, peut importe comment. Généralement, je ne leurs répond pas, ou si je leur répond c'est soit avec de l'ironie, soit avec un RTFM ou assimilé. Je ne supporte pas les gens qui veulent coder sans réflechir, sans tenir compte de la qualité du code, qui veulent juste que ça fonctionne. Ces gens là sont responsable de beaucoup de code pourri que l'on peut rencontrer et quand tu dois passer derrière un mec comme ça, et bien tu les maudits, crois-moi.

tshirtman a écrit :

non, cee n'est pas de ta faute, c'est le language qui essaye de donner un sens à tout et n'importe quoi, en voulant concilier des approches haut niveau avec des concepts bas niveaux, et est de ce fait, trop complexe à utiliser… mon conseil est bien de changer de langage, pas de cerveau. tongue

Tu as un jour d'avance, vendredi c'est demain mad.

Mais j'avoue que c'est vraiment subtil et pas spécialement simple à appréhender ces subtilités sur le const.

Edit : SIGSEV et sa source localisée. Rapport plus tard wink

Dernière modification par grim7reaper (Le 15/04/2010, à 10:00)

Hors ligne

#130 Le 15/04/2010, à 10:05

tshirtman

Re : ..:: Topic des Codeurs Couche-Tard [0] ::..

Quand je vois certaines demandes faites à l'arrache, sans effort ou recherche préalable et où le PO (posteur original) se contrefiche totalement de la réponse (et de sa qualité) mais qu'il veut juste que ça fonctionne, peut importe comment. Généralement, je ne leurs répond pas, ou si je leur répond c'est soit avec de l'ironie, soit avec un RTFM ou assimilé. Je ne supporte pas les gens qui veulent coder sans réflechir, sans tenir compte de la qualité du code, qui veulent juste que ça fonctionne. Ces gens là sont responsable de beaucoup de code pourri que l'on peut rencontrer et quand tu dois passer derrière un mec comme ça, et bien tu les maudits, crois-moi.

+1, faut se retenir de les aider en fait…

Hors ligne

#131 Le 15/04/2010, à 10:19

grim7reaper

Re : ..:: Topic des Codeurs Couche-Tard [0] ::..

Oui, c'est ce que je fait dans 90% des cas.

Hors ligne

#132 Le 15/04/2010, à 10:35

cm-t

Re : ..:: Topic des Codeurs Couche-Tard [0] ::..

tshirtman a écrit :

Ces gens là sont responsable de beaucoup de code pourri que l'on peut rencontrer et quand tu dois passer derrière un mec comme ça, et bien tu les maudits, crois-moi.

+1, faut se retenir de les aider en fait…

Je suis en train de subir cela sad


Actu Ubuntu            ☺/
Pauses Ubuntu sur Paris            \_< -t
[(π)] La Quadrature du net

Hors ligne

#133 Le 15/04/2010, à 10:37

helly

Re : ..:: Topic des Codeurs Couche-Tard [0] ::..

Monsieur le bot poste quand ?


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

#134 Le 15/04/2010, à 10:44

nesthib

Re : ..:: Topic des Codeurs Couche-Tard [0] ::..

tshirtman a écrit :

ouais ben si t'en est là, time moi echo 9h > /dev/null por voir… par ce  que j'ai proposé mieux avant coté perf tongue

\o/ un concours de pinaillage ^^ tongue tongue tongue


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#135 Le 15/04/2010, à 10:55

tshirtman

Re : ..:: Topic des Codeurs Couche-Tard [0] ::..

cm-t a écrit :
tshirtman a écrit :

Ces gens là sont responsable de beaucoup de code pourri que l'on peut rencontrer et quand tu dois passer derrière un mec comme ça, et bien tu les maudits, crois-moi.

+1, faut se retenir de les aider en fait…

Je suis en train de subir cela sad

pose ta question correctement et montre que tu as cherché…

helly a écrit :

Monsieur le bot poste quand ?

quand samuncle pense à le mettre en crontab je pense lol

@nesthib: faut juste que tu décide si c'est l'optimisation ou la pédagogie que tu choisit tongue

Hors ligne

#136 Le 15/04/2010, à 11:01

grim7reaper

Re : ..:: Topic des Codeurs Couche-Tard [0] ::..

tshirtman a écrit :
cm-t a écrit :
tshirtman a écrit :

+1, faut se retenir de les aider en fait…

Je suis en train de subir cela sad

pose ta question correctement et montre que tu as cherché…

Je crois qu'il subit le "passer derrière un mec comme ça" en fait.

@Pylade
Ton problème vient de la ligne

ret->argsv[i]=NULL;

Mais en fait, toutes les lignes où tu écris dans argsv[] sont explosives.
En effet, à aucun moment tu n'alloues de la mémoire pour tes pointeurs et donc tu écris dans du vent.
Tu déclares "const char** argsv;" puis tu crées une variable de ce type (qui contient donc 2 pointeurs pointant on ne sait trop où, et en aucun cas un tableau comme tu semble le supposer).
Il faut réserver de l'espace pour tes tableaux avant de les utiliser (via malloc/calloc, ou sinon donne une taille arbitraire lors de la déclaration) sinon tu écris n'importe où et ça pète.

Si tu veux des précisions, je ne serais pas de retour sur le forum avant 16~17h.

Dernière modification par grim7reaper (Le 15/04/2010, à 11:08)

Hors ligne

#137 Le 15/04/2010, à 11:31

cm-t

Re : ..:: Topic des Codeurs Couche-Tard [0] ::..

grim7reaper a écrit :
tshirtman a écrit :
cm-t a écrit :

Je suis en train de subir cela sad

pose ta question correctement et montre que tu as cherché…

Je crois qu'il subit le "passer derrière un mec comme ça" en fait.

hélas, oui


Actu Ubuntu            ☺/
Pauses Ubuntu sur Paris            \_< -t
[(π)] La Quadrature du net

Hors ligne

#138 Le 15/04/2010, à 11:46

tshirtman

Re : ..:: Topic des Codeurs Couche-Tard [0] ::..

arf oui désolé et bonne chance… un conseil, desfois il vaut mieux réécrire un bout de code depuis 0 que d'essayer de le comprendre (conseil pas de moi, mais d'un mec légendaire pour ses aptitudes en débugages, dont j'ai oublié le nom).

Hors ligne

#139 Le 15/04/2010, à 12:10

cm-t

Re : ..:: Topic des Codeurs Couche-Tard [0] ::..

pour coder depuis 0 c'est un peu mort car mon chef de projet a annoncé a la MOA que je mettrrai 10 jours.. hors 10 jours c'est un peut juste pour 01/ recoder le tout 10/ comprendre son code

allez courage, tout ce qui ne tue pas, rend plus fort roll


Actu Ubuntu            ☺/
Pauses Ubuntu sur Paris            \_< -t
[(π)] La Quadrature du net

Hors ligne

#140 Le 15/04/2010, à 12:16

Pylades

Re : ..:: Topic des Codeurs Couche-Tard [0] ::..

grim7reaper a écrit :

Oui c'est assez subtil ces histoire de const (la semantique varie selon la position du mot-clef). Tous passer en const char* n'est pas forcément bon, il faut le faire si tes chaînes ne sont destinées qu'à la lecture (dans ce cas c'est très bien), sinon tu vas avoir des problèmes smile.

Bon. D’après ce que tu m’as dit je crois ça passe. Mais je vais devoir apprendre à utiliser ça correctement…

grim7reaper a écrit :

2 façons de faire.
Soit le gars fait un appel comme ça
[…]
Soit le gars fait plutôt comme ça
[…]
Voilà les 2 voies qui s'offrent à toi.

Je partais résigné pour la deuxième solution, mais la première est exactement ce que je voulais, merci ! big_smile
Ne jamais oublier la puissance de malloc.

grim7reaper a écrit :

Au passage :

int main(int, const char**);

c’est un prototype de main correct, ou argv ne doit pas être const char** ?

Non, pas de const ici. Les arguments doivent être modifiables.

OK. Donc je cast argv au moment de l’appel de ma fonction de attribution des option.

grim7reaper a écrit :

Le langage étant permissif de base et GCC plutôt laxiste, oui il faut s'astreindre à une certaine rigueur pour bien coder en C.
Pour le -O0, il me semble bien que par défaut il y est mais je préfère être explicite. Et surtout ne jamais faire de debug avec les optimisations activées car c'est un truc à rendre dingue (variables qui ont disparus, morceaux de code qui étaient dans une boucle et qui n'y sont plus, etc.).
Sinon, pour "ansi" c'est un synonyme de -std=c89 pour le C (et pour le C++ c'est synonyme de -std=c++98).

Oui, mais c’est mal de compiler en GNU-C89 ? Je crois qu’il offre quelque fonctionnalité appréciables. Après c’est sûr que si je veux publier mon code, il faut qu’il soit compilable en ISO C90, donc -ansi peut-être une option utile pour s’en assurer. Mais il y a toujours de gens qui ne peuvent compiler qu’en ISO C90 ? Et je suppose que -pedantic est là lui aussi pour me rappeler à l’ordre… Mais il gueule vraiment pour tout. Ce qui me gène, c’est surtout qu’il est intransigeant sur la déclaration des variables… Je trouve ça moche de tout devoir déclarer au début, et surtout on perd des fonctionnalité utiles (je sais, issues du C++, mais utiles quand-même) telles que la déclaration dans une boucle, ou la déclaration à la volée dans un for. C’est vraiment indispensable de s’astreindre à cette sévérité ?

grim7reaper a écrit :

Merci pour tout le temps que tu as passé à m’aider.

No problem. Tu poses des questions intéressantes et tu les poses bien. De plus, tu cherches à comprendre et à apprendre (aussi bien tes erreurs que les réponses que j'y apporte), fais des essais et tu es intéressé par le fonctionnement.
À partir de là, quand je vois ça, ça me donne envie de t'aider (et de pondre des pavés explicatifs par la même occasion tongue). Je me dis que ce n'est pas vain car tu apprends des trucs (que tu pourra réutiliser lorsqu'un cas similaire se présentera ou ressortir un jour pour aider quelqu'un).

smile


“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

#141 Le 15/04/2010, à 14:06

oracle_bot

Re : ..:: Topic des Codeurs Couche-Tard [0] ::..

Scores totaux, depuis le début:

1) 10    samuncle
1) 10    ǤƦƯƝƬ
3) 5    nesthib
3) 5    helly
3) 5    Pylade
6) 4    grim7reaper
6) 4    pierguiard
6) 4    cm-t
6) 4    Ph3nix_
10) 3    oracle_bot
11) 2    tshirtman
11) 2    Kanor
13) 1    ilagas

-> le défit WCFCF XELEX ZYGDE VEMSQ SKXTZ VMGYX ELENL FCENG CTCES GPWHY G

Dernière modification par oracle_bot (Le 15/04/2010, à 14:07)


robot multitâche codé par samuncle

Pour la partie compteur utilise le script de tshirtman. Le code source se trouve ici

Hors ligne

#142 Le 15/04/2010, à 14:06

oracle_bot

Re : ..:: Topic des Codeurs Couche-Tard [0] ::..

scores de la période en cours:

1) 10    samuncle
1) 10    ǤƦƯƝƬ
3) 5    nesthib
3) 5    helly
3) 5    Pylade
6) 4    grim7reaper
6) 4    pierguiard
6) 4    cm-t
6) 4    Ph3nix_
10) 3    oracle_bot
11) 2    tshirtman
11) 2    Kanor
13) 1    ilagas

-> le défit WCFCF XELEX ZYGDE VEMSQ SKXTZ VMGYX ELENL FCENG CTCES GPWHY G

Dernière modification par oracle_bot (Le 15/04/2010, à 14:07)


robot multitâche codé par samuncle

Pour la partie compteur utilise le script de tshirtman. Le code source se trouve ici

Hors ligne

#143 Le 15/04/2010, à 14:11

helly

Re : ..:: Topic des Codeurs Couche-Tard [0] ::..

D'après le score on pourrait croire que je suis la 3é meilleur codeuse du topic ... roll


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

#144 Le 15/04/2010, à 14:46

Grünt

Re : ..:: Topic des Codeurs Couche-Tard [0] ::..

helly a écrit :

D'après le score on pourrait croire que je suis la 3é meilleur codeuse du topic ... roll

Te plains pas, je suis deuxième et je code pas tongue


Red flashing lights. I bet they mean something.

Hors ligne

#145 Le 15/04/2010, à 15:03

pfriedz

Re : ..:: Topic des Codeurs Couche-Tard [0] ::..

QUALITÉ != QUANTITÉ smile

Hors ligne

#146 Le 15/04/2010, à 15:03

tshirtman

Re : ..:: Topic des Codeurs Couche-Tard [0] ::..

helly est deuxième ex æquo, et ǤƦƯƝƬ premier ex æquo, ça me rassure que vous soyez pas codeurs (et encore moins développeur) en sachant pas compter…

Hors ligne

#147 Le 15/04/2010, à 15:09

Grünt

Re : ..:: Topic des Codeurs Couche-Tard [0] ::..

JPSPS KRYRK MLTQR IRZFD FXKGM IZTLK RYRAY SPRAT PGPRF TCJUL T?

Nan, c'est pas ça big_smile


Red flashing lights. I bet they mean something.

Hors ligne

#148 Le 15/04/2010, à 15:14

samυncle

Re : ..:: Topic des Codeurs Couche-Tard [0] ::..

smile


Hello world

Hors ligne

#150 Le 15/04/2010, à 16:11

Jules Petibidon

Re : ..:: Topic des Codeurs Couche-Tard [0] ::..

J'aurais dit que c'était la clef d'activation de son W7...



Traitre.

Hors ligne