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 :

[Débutant] fonction qui renvoi plusieurs chaines ???


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert

    Homme Profil pro
    Inscrit en
    Juillet 2003
    Messages
    2 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : Juillet 2003
    Messages : 2 075
    Par défaut
    Citation Envoyé par Luc Hermitte
    Parce que l'on t'a appris le C++ selon l'approche historique au lieu de l'approche qui pourrait te rendre fonctionnel plus rapidement.
    Salut
    Donc pour être fonctionnel plus rapidement il conviendrait d'apprendre les strictes bases (ce qu'est une variable, un objet une classe etc...) puis ensuite de choisir une bibliothèque et de l'utiliser pour programmer c'est bien ça?
    Et je suppose que l'apprentissage des bases plus complexes (ce que c'est qu'un pointeur) tu le développes plus tard suivant les difficultés que tu rencontres avec cette bibliothèque c'est bien ça?
    Je suis intéressé par l'approche pédagogique mais là t'as pas donné assez de détails...ça pourrait pourtant être utile à plus d'un (moi compris)

  2. #2
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 297
    Par défaut
    (hé hé un vimeur affiché )
    C'est ça.
    Mais en fait ... je me suis déjà exprimé quantité de fois sur le sujet. C'est pour cela que je n'y reviens plus systématiquement.
    Il doit rester des traces dans les trolls C vs C++, apprentissage du C++, quel langage pour commencer, ...

    Le principe, c'est d'abord les bases fonctionnelles et pratiques -> on voit comment profiter des abstractions de la bibliothèques standard pour programmer simplement, proprement, et en minimisant les risques d'erreurs. Les notions compliquées, comme les pointeurs viendront, mais plus tard. J'aurais tendance à les mettre entre les itérateurs (dont ils sont une spécialisation) et le polymorphisme.

    Je retrouve un peu la même chose dans Accelerated C++ (la référence non traduite), de Koenig et Moo, chez Addisson-Welsey (l'éditeur qui édite les plus grosses références pour le C++)).
    Chapitre 9 (sur 16) : "Definir des nouveaux types", les classes y sont introduites.
    Chapitre 10 : "Gestion de la mémoire et des structures bas niveau". Donc entre autres pointeurs et tableaux à la C.
    Chapitre 11 : "Définition de types de données abstraits" (les classes templates dans la cadre de la généricité -> pas de méta-programmation).
    Chapitre 12 : "Faire que les objets de classes se comportent comme des valeurs".
    Chapitre 13 : "Utilisation de l'héritage et de la liaison tardive". Donc, le polymorphisme d'inclusion (/d'héritage/de substitution)
    Chapitre 14 : "Gestion (quasi) automatisée de la mémoire". En gros, on introduit le RAII qui avait été utilisé "sans le savoir" avec les conteneurs standard.
    ...
    Dans les chapitres antérieurs, soit une bonne moitié du bouquin, chaines, vecteurs et algorithmes standard sont préalablement présentés et utilisés.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  3. #3
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    +1 avec Luc.

    Un autre livre du même genre, même s'il va moins loin, est celui de Francis Glassborow (traduit en français par "Je me lance").

    Chapitre 1 : Graphisme, en utilisant une classe faite pour.
    Chapitre 2 : Boucle, variable
    Chapitre 3 : Fonction
    Chapitre 4 : Types, flux, string, vector
    Chapitre 5 : Classe (de base, sans polymorphisme)
    ... jusqu'au chapitre 16.

    N'apparaissent pas vraiment dans ce livre (volumes suivants ?) le polymorphisme, les pointeurs, la déclaration de template...

    Avantages :
    - L'étudiant peut rapidement faire des programmes intéressants, et donc motivants
    - Le style de programmation qu'il apprend au début est celui qu'il continuera à utiliser par la suite, puisque c'est déjà le bon
    - Il me semble plus évident avec cette approche de comprendre les avantages de l'encapsulation, quand on commence à voir comment on pourrait implémenter un type string...
    - La courbe d'apprentissage est plus progressive
    - C'est comme ça que tout l'apprentissage se fait. On apprend à conduire sans savoir les réactions chimiques à l'intérieur du moteur, on apprend à compter sans commencer par l'algèbre de Peano
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  4. #4
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Le pauvre, il vient avec une question de debutant et vous lui sortait les algo de pas debutant. Voir celui de Luc. Le pauvre il doit pas tout comprendre.

    Sinon pour repondre a sa question tu fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tab[0]=(char*)malloc(50*sizeof(char));
    (La cast est obligé en C++?)

    Bon c'est vrai que c'est plus du C que du C++...

  5. #5
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 297
    Par défaut
    Euh ... l'algo que je donne pour déterminer si un chaine est un palindrome (ou non) est excessivement simple. (Ce qui par rapport à certains besoins exprimés me fait douter quant au fait que tout soit très clair.)
    Le reste, ce n'est pas de l'algorithmique, c'est de la syntaxe.

    Quant au typage, oui il faut être explicite en C++.
    ->
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char * c = reinterpret_cast<char*>(malloc(....));
    Mais un débutant en C++ n'a pas à utiliser malloc. Ni même new[] qui est pourtant plus simple à utiliser.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2004
    Messages : 59
    Par défaut
    Super Skyrunner ca marche avec ta ligne

    maintenant j'ai seul dernier probleme (que j'ai réussi a résoudre mais ce n''est pas tres propre)donc je vous demande si il y a une autre maniere.
    voila quand j'affiche 1 élement de mon tableau avec :
    cout<<tab[i]
    il m'affcihe ce que je veux mais apres il y rajoute des caracteres bizares et le seul moyen de corriger est de savoir pour chaque case cb de caracteres il faut afficher et de boucler dessu, ce qui est pas tres joli...

    donc je vous demande si vous avez une autre solution, apres débugage j'ai pu voir que c'est avec cette ligne que vient les caractere bizare:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    m=0;
    sprintf(temp,"");
     
    for (int k=i;k<=j;k++)
    {					
          temp[m]=chaine[k];//au 1er remplissage de temp il y rajoute des caracteres du genre |||||				 
          m++;					
    }
    Merci à tous

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2004
    Messages : 59
    Par défaut
    problème résolu c'etait la taille de la variable

    le probleme est que je suis obligé de "nettoyer" la variable bizarement sinon elle garde son ancienne valeur. ex:

    char temp[15];

    sprintf(temp," "); // c'est ok
    sprintf(temp,"");// pas ok, si je met une 2eme valeur dedans il écrase la 1er alors qu'il etait senser l'avoir enlevé ? donc si la taille de2eme valeur est + petite que la 1er il va écrire la 2eme et garder la fin de la 1ere !

    une idée pour ce probleme?

    merci

  8. #8
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    Oui, on t'a déjà donné l'idée en question : utiliser les outils du C++.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    string temp;
    temp = " ";
    temp = "";
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  9. #9
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 297
    Par défaut
    Absence du zéro terminal ? (ah les chaines 0-terminées du C...)
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2004
    Messages : 59
    Par défaut
    Voila c'est fini !!!

    juste pour dire : un grand merci à tous ceux qui m'ont aidé

    j'espère que dans pas longtemps je pourrai vous aider à mon tour

    a+

  11. #11
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Citation Envoyé par insomniak
    Essai de mettre char test à la place de void test...
    Avant de poster des conneries...
    C'est un problème de retour du malloc. Il retourne un void*, donc un pointeur vers un espace mémoire "vierge". Il faut un cast explicite vers un char* pour que l'espace mémoire soit "format" comme un tableau de caractère.

    Et il y a une erreur dans l'exemple du 2ème message, le malloc à effectuer est sur le 49ème élément du tableau.

  12. #12
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 399
    Par défaut
    attention: le 49e élément ou l'élément 49 (le 50e) ?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Une fonction qui renvoie plusieurs valeurs ?
    Par chuckichucki dans le forum Langage
    Réponses: 9
    Dernier message: 14/01/2011, 14h49
  2. Fonction qui renvoie plusieurs variables
    Par _Aravis dans le forum MATLAB
    Réponses: 1
    Dernier message: 28/09/2008, 20h55
  3. [Système] Fonction qui renvoie plusieurs valeurs
    Par sebhm dans le forum Langage
    Réponses: 6
    Dernier message: 26/01/2007, 09h43
  4. Réponses: 2
    Dernier message: 09/01/2006, 20h45
  5. [bioinfo] fonction qui renvoie chaîne à autre fonction
    Par perlaud dans le forum Bioinformatique
    Réponses: 11
    Dernier message: 16/07/2004, 16h06

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