Crunchez vos adresses URL
|
Rejoignez notre discord
|
Hébergez vos photos
Page 83 sur 334 PremièrePremière ... 3373757677787980818283848586878889909193133183 ... DernièreDernière
Affichage des résultats 2 461 à 2 490 sur 10008
  1. #2461
    Le langage c'est du Closure mais on s'en branle. C'est l'IDE qui a l'air bien cool.
    "Dieu est mort" · "Si le téléchargement c’est du vol, Linux c’est de la prostitution."

  2. #2462
    Clojure (se connaijais pas), Javascript et Python... mouais...
    Je ne suis pas fermé, mais je ne suis pas non plus tellement convaincu. Je ne me vois pas utiliser ce genre d'IDE de manière régulière.

  3. #2463
    Ne dis rien, t'es sous VI ou Emacs.
    "Dieu est mort" · "Si le téléchargement c’est du vol, Linux c’est de la prostitution."

  4. #2464
    Gagné (emacs).
    Mais bizarrement, ce que tu convoites y ressemble étonnament je trouve.


    Voilà, c'est malin. Maintenant que j'ai fait mon coming-out emacs-lisp-isque, les gens vont me regarder bizarrement dès que ca va parler de lambda ou de defmacro. Bien ouèj'!

  5. #2465
    Bin je ne sais pas. Emacs, à chaque tentative d'utilisation, ça m'a paru totalement inutilisable faute de connaître par coeur 400 mille raccourcis à base de Ctrl-X Ctrl-Shift-U ou Maj-4 Ctrl+Alt-Meta-ê Esc-^... Et un affichage surchargé de choses inutiles. Sans parler d'une gestion pourrave de la souris et des overlays (même reproches pour Vim).

    La je trouve que ça ressemble plus à un Sublime Text encore plus light, ou les fonctionnalités et l'affichage par défaut est bien pensé, intuitif et va de soit. Ou encore à un Gnome Shell qui recherche un nouveau paradigme au niveau de l'UI pour se librérer un peu des applications "classiques". Après je ne dis pas que c'est révolutionnaire ou que c'est une appli miracle, mais ça donne envie de jouer avec.
    "Dieu est mort" · "Si le téléchargement c’est du vol, Linux c’est de la prostitution."

  6. #2466
    C'est justement Sublime Text que j'avais à l'esprit: j'avais l'impression que ca y ressemblait un peu beaucoup. J'ai été plus que tenté de ramener ST à mes étudiants, puis j'y ai finalement renoncé au profit de Bloodshed DevC++, pourtant vraiment pas terrible, mais déjà installé.

    Emacs est assez dûr: y'a un apprentissage spécifique à faire, et si on n'a pas été bien guidé en cours de prog, je vois mal un étudiant y arriver. Oui, y'a facilement 20 raccourcis à apprendre par coeur, mais l'idée est plutôt de re-binder les raccourcis indispensables que d'apprendre des Ctrl-Shift-Meta-Y-y pour revenir à la ligne. D'aillleurs, l'enseignement d'emacs, c'est souvent de la foutaise: ca n'a aucun sens d'apprendre des raccourcis, mieux vaut connaitre le nom des fonctions et se les binder à sa convenance. L'apprentissage d'emacs, il réussit à mon sens quand l'étudiant se fait son environnement perso en programmant son .emacs.

    C'est cool, j'ai encore plus l'air d'un freak maintenant...


    (ps: sinon, oui, les rajouts graphiques par défaut sous emacs, c'est un peu insupportable. Mais dès qu'on utilise l'IDE un peu couramment, on est supposés les virer).

  7. #2467
    Bah le problème avec le rebinding c'est que c'est super chiant à faire et si tu ne connais pas l'outil, tu ne sais même pas quoi binder ou quelle fonction va te servir. Et à la première réinstall t'as tout à te retaper... :/
    "Dieu est mort" · "Si le téléchargement c’est du vol, Linux c’est de la prostitution."

  8. #2468
    Tout ce genre de trucs, c'est déjà sur mon serveur SVN. Autrement, sans thésaurisation, c'est juste pas possible en effet.

    Par contre, tant que j'y suis, une question qui m'importe pour mes étudiants bloqués avec DevC++. Je pense qu'ils auraient absolument besoin d'un IDE qui leur indente leur code automatiquement. D'après ce que j'ai vu, notamment sur ST, c'est courant d'avoir un raccourci qui place le curseur à la bonne colonne sur la nouvelle ligne tapée. Par contre, pour réindenter un code mal indenté, ca m'a l'air plus velu. Emacs le fait très bien, mais on m'a clairement dit "non" dans le cadre de ce cours: vous connaitriez d'autres éditeurs / IDE qui le feraient?

  9. #2469
    uncrustify, puis dans ST une commande qui lance uncrustify avec son fichier de conf via un raccourci clavier.

    ---------- Post added at 00h32 ---------- Previous post was at 00h31 ----------

    Sinon Eclipse a un indenteur automatique C++ via un raccourci clavier aussi.
    "Dieu est mort" · "Si le téléchargement c’est du vol, Linux c’est de la prostitution."

  10. #2470
    Donc, pour réindenter du code existant, c'est bien ca?

  11. #2471
    Oui

    ---------- Post added at 09h22 ---------- Previous post was at 09h21 ----------

    C'est même plus que de l'indentation, c'est du formattage automatique suivant les règles que tu as défini (par exemple l'accolade à la ligne ou pas, etc)...
    "Dieu est mort" · "Si le téléchargement c’est du vol, Linux c’est de la prostitution."

  12. #2472
    Ah ok. Emacs n'impose pas à ma connaissance ce genre de transformations (ajout-supp. de sauts de ligne), mais peut jongler entre plusieurs styles d'indentation.
    Je vais essayer de voir ca: ca sauvera la vie de mes teubés d'étudiants (désolé d'être méchant, mais la prog, c'est apparemment pas leur priorité à ceux-là).

  13. #2473
    Il n'y avait pas indent qui faisait ça aussi ?
    :edit: bon c'est que pour le C on dirait.

  14. #2474
    Mais indent je ne suis pas sûr qu'il reformatte vraiment tout. Uncrustify si (il permet même d'aligner des trucs comme le \ dans les macros, les fragments de code dans les définition de macros, etc)
    "Dieu est mort" · "Si le téléchargement c’est du vol, Linux c’est de la prostitution."

  15. #2475
    Citation Envoyé par rOut Voir le message
    (il permet même d'aligner des trucs comme le \ dans les macros, les fragments de code dans les définition de macros, etc)
    Emacs aussi ! Emacs c'est le bien, Emacs fait tout mieux que le reste du monde, bouffez-en, ca vous rendra la forme !

    Sinon j'ai regarde un peu l'algo de Furer et les commentaires a son propos. Je vais en rester a SS
    Petite page interessante pour le passage aux algos FFt de multiplcation dans GMP. Le threshold n'est pas si eleve que ca et correspond a quelques milliers de chiffres decimaux.

  16. #2476
    Citation Envoyé par rOut Voir le message
    Sinon Eclipse a un indenteur automatique C++ via un raccourci clavier aussi.
    Visual aussi. Uniquement indentation, pas de remise en forme.

    vectra: clair que t'as l'air d'un freak maintenant Au moins c'est emacs et pas vi...

  17. #2477
    Bonjour à tous,

    Je me retrouve actuellement devant un soucis assez lourd en C++.

    C'est tout bête, comment peut on passer un tableau 2D de tailles inconnues dans une fonction.
    Habituellement je résout le problème en ne travaillant qu'avec des tableaux 1D, et en jonglant avec des i*n+j etc... mais là je travaille avec un code qui n'est pas le mien et qui utilise des jolis tableaux 2D tout partout ( sous la forme tab[][] ).

    Je doit travailler sur ces tableaux, mais j'ai eu beau parcourir les tréfonds du Web 6.0 rien à faire, il semblerait qu'il n'y ai aucune solution propre pour passer un tableau 2D de tailles inconnues et travailler ensuite dessus via une fonction... ce qui est assez embêtant.
    Rien d'analogue au passage par pointeur.

    Et non, le tab** ne fonctionne pas du tout et il semble que ce soit une énorme erreur récurrente de ce type de problème, même si les tuto expliquant l'erreur ne donnent aucune solution...

    Si il y a une astuce magique que j'ai zappé je serait preneur. Le top serait évidemment de pouvoir continuer à travailler avec le tableau dans la fonction sous la forme tab[][]...

  18. #2478
    Quand tu déclares "int tab[x][y]" c'est la même chose que "int tab[x*y]".
    Du coup, passage par pointeur et tout le toutime. Ca marche pareil.
    Rust fanboy

  19. #2479
    Heu.... pour moi quand je déclare int tab[x][y] je déclare un "tableau" 1D de taille x mais contenant des pointeurs vers des tableaux 1D de taille y.
    Du coups normalement l'élément x*y n’existe pas... enfin je crois...

  20. #2480
    En C++ je ne sais pas, mais en C il me semble que tu ne peux pas, sauf si ton nombre de colonne est fixe, à ce moment là tu écrit ta fonction comme ca : foo(tab[][nb_colonne])

    Si ce n'est pas fixe il me semble que tu es coincé.

    (fout ton tableau en globale, tu seras tranquille )

  21. #2481
    Citation Envoyé par Nilsou Voir le message
    Heu.... pour moi quand je déclare int tab[x][y] je déclare un "tableau" 1D de taille x mais contenant des pointeurs vers des tableaux 1D de taille y.
    Du coups normalement l'élément x*y n’existe pas... enfin je crois...
    Non, tu déclares un tableau de taille Y contenant des tableaux de taille X.
    Quand tu écris "int prout", t'as un emplacement mémoire qui se réserve pour les 4 octets que nécessitent un int. Quand tu écris "int prout[2]", t'as un emplacement mémoire réservé de 8 octets, c'est à dire 2 * taille d'un int. Quand tu écris "int prout[2][2]", tu as un emplacement mémoire réservé de 16 octets, c'est à dire 2 * taille d'un int[2].

    Le fait de déclarer une fonction du genre "void foo(tableau[])" c'est une hérésie en soi, un truc qui a traumatisé des dizaines d'étudiants en C.
    Tu ne passes pas un tableau vers une fonction, mais un pointeur vers son premier élément.

    ---------- Post added at 17h03 ---------- Previous post was at 16h51 ----------

    Bref, pour résoudre ton problème concrètement :

    Code:
    void foo(int* tableau) {
       tableau[x+XSize*y] = 1;
    }
    
    int tab[2][3];
    foo(tab);
    Le problème avec les tableaux 2D, c'est que l'ordre des [] est "inversé".
    Code:
    // si tu écris ça :
    int tab[xSize][ySize];
    
    // il faut ensuite normalement y accéder comme ça :
    tab[y][x];
    Evidemment si tu ne le sais et que tu inverses partout, le code marchera quand même puisqu'il n'y a aucune vérification de la limite et que c'est la même taille et tout le toutim.

    Et s'il y en a qui lisent ça et qui n'ont rien compris, utilisez std::array ou std::vector, c'est pour ça qu'on les a inventés.
    Rust fanboy

  22. #2482
    Tomaka, ce n'est vrai que pour les tableaux statiques ce que tu dis là. Pour les tableaux dynamique ce n'est pas aussi simple.

  23. #2483
    Citation Envoyé par Tomaka17 Voir le message
    Le problème avec les tableaux 2D, c'est que l'ordre des [] est "inversé".
    C'est vrai ça ? En C, la dimension interne n'est pas toujours la dernière ? Mais c'est horrible.

    ---------- Post added at 18h18 ---------- Previous post was at 18h12 ----------

    Citation Envoyé par Olorin Voir le message
    Tomaka, ce n'est vrai que pour les tableaux statiques ce que tu dis là. Pour les tableaux dynamique ce n'est pas aussi simple.
    Oui, mais les gens qui font des tableaux 2D dynamiques rectangulaires, ils ne méritent que notre mépris.

  24. #2484
    Avant je disais que les gens qui utilisent les tableaux de plus d'une dimension font de l'obfuscation de code, et qu'on peut les insulter sans vergogne car ils rendent notre boulot plus difficile.
    Maintenant que std::array existe, ce sont tous les gens qui utilisent les tableaux de base du langage qui sont concernés.
    Rust fanboy

  25. #2485
    Heu, c'est quoi la différence pour les tableaux dynamiques ?

    ---------- Post added at 18h44 ---------- Previous post was at 18h33 ----------

    Pis sinon tu le castes ton tableau... hein.

    int[][] -> int** ça ne fonctionne pas, forcément, ton tableau n'est pas un tableau de pointeurs vers des int mais un tableau de int multidimensionnel.
    Comme expliqué par Tomaka, int[n][m] correspond simplement à un pointeur vers une zone mémoire de n*m entiers.
    Tu peux par contre le caster en int* sans problème.

    http://ideone.com/0aZLd8
    "Dieu est mort" · "Si le téléchargement c’est du vol, Linux c’est de la prostitution."

  26. #2486
    Citation Envoyé par rOut Voir le message
    Heu, c'est quoi la différence pour les tableaux dynamiques ?
    Il pense à des tableaux de tableaux, auquel on accède par une double indexation à travers des pointeurs de pointeurs. Vu que C (au moins 90?) ne connaît pas les tableaux dynamiques multidimensionnels.

    En passant, le fait que la syntaxe a[j][i] veuille dire soit a[j * N + i] soit *(*(a+j)+i) suivant le contexte, c'est absolument immonde et totalement dégeulasse.
    (Sinon j'ai toujours pas pigé l'histoire de l'ordre des indices inversé.)

  27. #2487
    Non mais faut quand même être un peu idiot pour faire :
    Code:
    int** matrix = new int*[width];
    for(size_t x = 0; x < width; ++x)
      matrix[x] = new int[height];
    Alors que :
    Code:
    int* matrix = new int[width*height];
    marche aussi bien.

    Pour l'histoire des indices inversés, je ne suis pas sûr.
    Par exemple si tu veux une matrice de 2 lignes par 3 colonnes, tu vas faire : int matrix[2][3] = {{1,2,3}, {4,5,6}};

    Le type de matrix sera int (*)[3], c'est à dire un pointeur vers des groupes de 3 entiers consécutifs.
    matrix[n] équivaut à *(matrix + n) qui équivaut donc à déréférencer ce type, c'est donc de type "3 entiers consécutifs", ou autrement dit int[3].
    Ce qui correspond à une ligne de la matrice.

    Pour avoir accès à l'élément situé dans la colonne y de la ligne x, tu fais donc pour obtenir la ligne x : matrix[x]
    Puis pour obtenir l'élément dans la colonne y de cette ligne : matrix[x][y]
    La ligne est toujours en premier, puis la colonne.

    Dans tous les cas, on s'en branle puisque personne n'a défini de quelle manière les entiers devaient être considérés. Tu peux très bien dire que int matrix[3][2] = {{1,4},{2,5},{3,6}};
    Est une matrice de 2 lignes et 3 colonnes, mais stockée en column-major order. Et ensuite, faire matrix[y][x] pour accéder à l'élément de la x-ème ligne, y-ème colonne.

    En faire pour faire simple, a[x][y][z]... avec a un tableau multidimensionnel de int équivaut à *(int*) ( ((char*)a) + x * sizeof(*a) + y * sizeof(**a) + z * sizeof(***a)...)
    Dernière modification par rOut ; 20/11/2012 à 22h50.
    "Dieu est mort" · "Si le téléchargement c’est du vol, Linux c’est de la prostitution."

  28. #2488
    Ou alors tu fais ça en C++11
    Code:
    std::array<std::array<int,3>,2> matrix = {{1,2,3},{4,5,6}};
    
    matrix[4][1]; // assertion failed '4 < 2'
    Rust fanboy

  29. #2489
    Citation Envoyé par Tomaka17 Voir le message
    Ou alors tu fais ça en C++11
    Code:
    std::array<std::array<int,3>,2> matrix = {{1,2,3},{4,5,6}};
    
    matrix[4][1]; // assertion failed '4 < 2'
    Mais est-ce une matrice 3 lignes x 2 colonnes ou bien 2 lignes x 3 colonnes ?
    "Dieu est mort" · "Si le téléchargement c’est du vol, Linux c’est de la prostitution."

  30. #2490
    Ca dépend si t'es en row-major ou en column-major

    En tout cas là c'est un tableau de 2 tableaux de 3 ints.
    Le premier [] s'applique sur le tableau externe (celui de 2 éléments).

    En tout cas personnellement pour ce genre de cas de figure j'ai créé une petite classe toute bête qui s'accède via l'opérateur () et qui s'occupe aussi des éventuels redimensionnements.
    Rust fanboy

Page 83 sur 334 PremièrePremière ... 3373757677787980818283848586878889909193133183 ... DernièreDernière

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •