IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Bibliothèque pour les grand entier et question sur la gestion des tableaux [Débutant(e)]


Sujet :

C

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2004
    Messages : 19
    Points : 18
    Points
    18
    Par défaut Bibliothèque pour les grand entier et question sur la gestion des tableaux
    Bonjour,

    Voilà, je débute en C (avant de passer au C++) alors pardonnez moi si je pose des questions débile...

    La première question : A l'époque où j'apprenais le Python, j'avais lu quelque part que le C++ possédait une bibliothèque pour gérer les très grands nombres entier, d'où aussi mon intérêt pour le Python qui les gérer nativement. Ma question est donc : est-ce qu'il existe une bibliothèque équivalente en C et laquelle est-ce ou je peux oublier et passer directement au C++....

    Je demande ça car on m'a toujours dis que le C++ est plus rapide que le Python. Comme j'ai eu une petite idée pour améliorer la vitesse d'exécution mon petit soft de cryptage/décryptage. J'ai décidé d'apprendre un nouveau langage et de réécrire le soft dans ce dernier... vu qu'il faut passer par le C pour arriver au C++, disons que je suis simplement la logique

    Deuxième question : j'ai un tableau bidimensionnel (il est dynamique dans la réalité, mais c'est plus clair pour l'exemple surtout que je suis pas doué pour expliquer )

    montableau[4][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};

    je voudrais pouvoir utiliser la valeur montableau[x][y], si elle est juste, tant mieux, on passe à la suite, sinon, je voudrais pouvoir l'éliminer et que mon tableau ressemble à ceci après le premier test :

    montableau[4][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12},{14,15,16, NULL}};

    2eme test :

    montableau[4][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12},{15,16, NULL, NULL}};

    en gros, on élimine la valeur et on décale toutes les autres vers la gauche comme vous pouvez le voir... et si on continue, on régénère des nouvelles valeurs et on élimine dans le tableau précédent comme suit :

    5eme test :

    montableau[4][4] = {{1,2,3,4},{5,6,7,8},{10,11,12, NULL},{17,18, 19, 20}};

    6eme test :

    montableau[4][4] = {{1,2,3,4},{5,6,7,8},{10,11,12, NULL},{18, 19, 20, NULL}};

    Et ainsi de suite....

    J'ai bien une idée pour le faire... un peu compliquée à mettre en place, mais faisable, mais il existe peut être une instruction toute prête que je n'ai pas encore trouvé... donc si elle existe, laquelle est-ce ? sinon, pas de souci, j'écrirais mon bout de code qui gérer cette élimination et ce déplacement seul défaut, ça va faire perdre du temps au système

    Voilà, si quelqu'un pouvait m'aider ou me mettre sur la voie..., ça me ferait super plaisir Merci d'avance

    Motenai

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    308
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 308
    Points : 373
    Points
    373
    Par défaut
    Déjà, tu n'es pas du tout obligé de passer par le C pour apprendre le C++. Tu peux directement passer au C++. Si on fait souvent apprendre le C avant le C++ c'est parce qu'ils partagent pas mal de concept et que donc ça permet d'apprendre deux langages plus rapidement.

    Sinon... Oui il existe des bibliothèques (et non pas librairies) de grands entiers écrites en C, par exemple GMP.

    Et pour ton truc, bah il faut que tu écrives l'algorithme toi-même...

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2004
    Messages : 19
    Points : 18
    Points
    18
    Par défaut
    merci beaucoup psychoh13 !!!

    pas de souci, j'écrirais l'algo sans problème... j'ai déjà commencer en fait

    a + et merci encore !

  4. #4
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 612
    Points : 30 612
    Points
    30 612
    Par défaut
    Salut,

    Le C++ n'est, en définitive, qu'une évolution du C (c'est incomplet, mais disons que cela fixe bien les choses )

    L'avantage à apprendre le C avant d'apprendre le C++ réside, principalement, dans le fait que le C est principalement un langage séquentiel.

    Comme je prévois déjà que certains "aficionados" crieront qu'on peut très bien envisager de coder en "orienté objet" en C si je ne le précise pas, je dirai en fait que la programmation séquentielle est des plus naturelles en C, et que la programmation orientée objet est plus complexe à mettre en oeuvre...

    Il est donc "de bon ton" d'apprendre le C si tu n'a aucune base en programmation, que des termes tels que variable, identifiant, structure, structures de contrôles, boucles et autres termes dont sont friands les programmeurs te sont inconnus.

    Cela te permet de t'intéresser en priorité à la logique qui doit être mise en oeuvre avant de commencer à s'embrouiller la tête avec tout ce qui peut rendre un langage "orienté objet"

    Seulement, voilà, la logique, et je parle bien de la logique, et non de la manière dont elle est représentée dans le langage, elle est la même que tu travailles en C, en Python, voire même en COBOL, en PHP ou en n'importe quel autre langage de programmation dans le sens tout à fait générique du terme: un langage qui permet d'expliquer à quelque chose d'aussi bête qu'un ordinateur ce que l'on attend de lui.

    Le C++ est quant à lui un langage prévu dés le départ pour être "orienté objet".

    Cela signifie qu'il propose des concepts tels que "constructeurs", "destructeurs", "héritages", "encapsulation des données" qui, bien que certains puissent être "imités" en C, sont inconnus du C.

    Ce qui n'empêche que les notions dont j'ai parlé au sujet du C se retrouvent malgré tout à l'intérieur des fonctions du C++... Mais il y a ce "plus" qui fait qu'on ne puisse en aucun cas dire que le C est le C++ ni que le C++ soit du C (même si une grande partie du C fait partie d'un sous ensemble commun avec le C++)

    On oublie souvent que les langages de programmation ne sont "que"... des langages: le moyen de permettre à deux choses de communiquer entre elles.

    Finalement, si on fait abstraction de toute la logique qu'il faut insuffler, au programme, le principe reste exactement le même que pour n'importe quel langage: si deux personnes parlent la même langue, elles se comprendront, si l'une parle arménien et l'autre papou, elles auront du mal à se mettre d'accord.

    Le but de l'apprentissage du C avant celui du C++ est, surtout, d'apprendre à mettre une logique ("implacable" ) au point qui nous assure que, en partant de tel endroit dans telles conditions on arrivera à un résultat clairement défini.

    Bien sur, il y a d'énormes différences sur la manière d'indiquer ce que l'on veut à l'ordinateur en fonction du langage que l'on utilise, mais ce n'est jamais qu'un problème de "vocabulaire" ...

    Si donc tu as déjà passé l'étape de savoir "comment vais- faire comprendre à l'ordinateur le moyen de se rendre d'un point A (entrée d'une fonction) à un point B (le résultat de cette fonction)" il te "suffit" d'ouvrir le dictionnaire qui correspond au langage que tu utilise pour pouvoir faire la traduction ... et l'apprentissage d'un nouveau langage consiste principalement à ... apprendre le vocabulaire qui va bien

    Je suis intimement persuadé que le langage le plus difficile à apprendre est toujours le premier: le premier langage "séquentiel" et le premier langage "orienté objet", parce qu'ils impliquent de comprendre certains concepts.

    Et je suis donc intimement persuadé que toute personne ayant déjà une expérience de programmation aura relativement facile à passer à n'importe quel langage...

    Le petit bémol apparaissant pour les langages orientés objet: il faut apprendre les concepts qui s'y rattachent si on ne les connaît pas

    Ceci dit, en ce qui concerne l'idée de "changer de langage pour améliorer les performances" me chagrine un peu:

    Le premier conseil à donner est en effet:
    Premature optimisation is the root of all evil
    Une optimisation qui apparaît trop tôt est la route vers l'enfer.

    Si un programme a des performances suffisantes, il ne sert à rien de vouloir l'améliorer...

    Et, avant de penser à changer de langage (surtout si tu dois commencer par apprendre le langage que tu envisages), il est peut être intéressant de s'assurer que l'existant a réellement été poussé dans ses derniers retranchements en ce qui concerne les performances.
    • N'est il vraiment plus possible d'améliorer l'algorithme
    • Ai-je réellement parcouru l'ensemble des possibilités d'optimisation du langage
    • Est il réellement nécessaire d'essayer de gagner quelque microsecondes
    • Suis-je conscient que, si je change de langage, cela impliquera que je devrai maintenir deux fois la même chose (après tout, l'application dans le premier langage vaut aussi la peine d'évoluer... et elle est peut être utilisée )
    • Faire et défaire, c'est toujours travailler, mais n'ai je pas quelque chose de plus intéressant à faire que de "refaire" ce qui a déjà été fait
    • Comment savoir si le langage auquel je pense sera réellement plus efficace que celui que j'ai utilisé pour la première version
    sont autant de questions qu'il peut s'avérer utile de se poser avant de décider de "tout jeter aux orties"
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

Discussions similaires

  1. Message d'alerte que pour les gens connecté sur le portail
    Par oudrhiri dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 04/04/2008, 15h31
  2. Création barre menus rien que pour les utilisateurs
    Par jlfprofoto dans le forum Access
    Réponses: 3
    Dernier message: 03/03/2008, 16h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo