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

Linux Discussion :

Projet en C++ sous linux


Sujet :

Linux

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 50
    Points : 19
    Points
    19
    Par défaut Projet en C++ sous linux
    Bonjour,

    Je souhaite realiser un projet en C++ qui consisterais en :

    -avant tout creer une application qui pour le debut fonctionnerais en console a laquel on lui passe en argument le nom d'un dossier
    dans ce dossier on test si les fichiers sont soit au format mp3 ou wma si ce teste est valide
    on compte le nombre de fichier valide ( dc en mp3 ou wma) qui se trouve dans le dossier
    ensuite on selectionne un nombre X de musique de facon aleatoire, X etant un second argument passer par l'uitlisateur apres on copie les X musique dans simple dossier

    En grios j'aimerais realiser un generateur de compile musique en C++ , sous environnement debian en console pour ocmmencer puis si ca tourne bien je le met en graphique

    je sais pas par ou commencer ni comment m"y prendre , mais surtout c'est pour le random que je galere si quelqu"un a une remarque , une proposition , une idée ou veut juste intervenir il est le bien venu

    merci d'avance

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 26
    Points : 25
    Points
    25
    Par défaut
    Ca ne devrait pas être le gros du boulot.

    On peut par exemple placer tous les titres valides dans un vecteur de string.

    On récupère la taille du vecteur.

    On le compare avec le nombre de chansons souhaités dans la compilateur et on retire aléatoirement la différence du vecteur précédemment créé.

    en gros:
    on boucle sur le nombre de chansons disponibles:
    vector.push_back("nom chanson");
    vector.size();

    on génére un aléatoire qui va bien et on boucle sur nombre d'éléments à retirer: vector.size()- nombre de chansons de la compilations; vector.erase(entier généré aléatoirement);

    On obtient un vecteur aléatoire de chansons à jouer.
    Mais bon, il y a déjà un problème lorsque le nombre de chansons de la compilation dépasse le nombre de chansons disponible auquel cas il faut augmenter le vecteur de chansons d'un nombre de chansons tiré aléatoirement du vecteur de chansons disponibles.

    Donc méthode pas terrible.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 26
    Points : 25
    Points
    25
    Par défaut
    -------------------------------------------------------------------------------------
    -------------------------------------------------------------------------------------
    Une autre méthode serait de créer un tableau statique puis de le mélanger par permutations aléatoires puis de retirer/ajouter le nombre nécessaire de chansons.
    Mais c'est pas terrible non plus.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 50
    Points : 19
    Points
    19
    Par défaut
    jtrouve que ton histoire de vecteur est pas mal du tout , je crois que je vais essayer comme cel a merci bien Moucoulin

    les autre remarque sont toujours les bienvenu

    merci

  5. #5
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 281
    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 281
    Points : 11 029
    Points
    11 029
    Par défaut
    std::random_shuffle (ou random_shuffle, j'ai oublié).
    Permet par exemple de construire une liste d'indices mélangés. De là, il suffit de prendre les N premiers qui intéressent.
    Cela sera plus efficace que de faire des déplacements dans des vecteurs.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 50
    Points : 19
    Points
    19
    Par défaut
    Je rencontre deja des problemes
    pour entrer dans un dossier je fais ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    int main(int argc, char * argv[])
    {
    	char rep , nbrM;
     
    	cout<<"choississez le repetoire source :"<<endl;
    	cin>>rep;
    	cout<<"choisissez le nombre de musique"<<endl;
    	cin>>nbrM;
     
    	chdir("rep");
    }
    je pense que c'est bon mais le probleme c'est des scanner le dossier pour trouver des fichier mp3 ou wav existe t(il une libriairie ayant des methode permettan de faire ca ?
    comme la mais sous linux

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    CString folderTmp;
    folderTmp = _T("C:\\*.*"); // m'enfin bon, la j'ai mis C: pour l'explication
    // recherche des fichiers du lecteur
    CFileFind finder;
    BOOL bWorking = finder.FindFile(folderTmp);
     
    while(bWorking)
    {
    bWorking = finder.FindNextFile();
    CString str = finder.GetFileName();
    }
    merci d'ava,ce


    [Balises CODE rajoutées par Loulou24, merci d'y penser à l'avenir]

  7. #7
    Expert éminent
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Points : 6 486
    Points
    6 486
    Par défaut
    Déjà je sais pas si je me plante mais là tu vas aller dans le dossier rep et non pas dans le dossier que tu as choisis.
    Enlève les guillemets ça risque de marcher mieux.

    De plus, il faudra que tu fasses attention au lien relatifs ou absolus. Peut être fodra t il créer une fonction qui changera tes liens relatifs en absolus.

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 50
    Points : 19
    Points
    19
    Par défaut
    en fait pour le choix du dossier c'est regler en graphique ca aller plus vite a faire que en console...

    Mais pour scanner mon repertoire je vois pas trop comment faire ...

  9. #9
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 281
    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 281
    Points : 11 029
    Points
    11 029
    Par défaut
    Utilises une bibliothèque disponible sous linux (contrairement aux MFC), voire portable (p.ex. boost.file_system ; sur le site de boost(.org))

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 109
    Points : 121
    Points
    121
    Par défaut
    Il y a une fonction nommée random_shuffle() qu'on trouve dans le #include<algorithm>.

    Cela s'utilise ainsi :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    #include<iostream>
    #include<vector>
    #include<algorithm>
     
     
    using namespace std;
     
     
    int main() {
     
         vector<int> v;
     
    // Tu remplis ton vector v ...
     
    // Voici la fonction ...
        random_shuffle(v.begin(),v.end());

    Niveau qualité aléatoire, je ne saurai pas te dire, je m'en suis servi pour répartir des joueurs dans des équipes .
    Fais des essais, tu verras bien.
    Ca marche avec des vector et des deque, list je ne sais pas.

    Bon courage

  11. #11
    Expert éminent
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Points : 6 486
    Points
    6 486
    Par défaut
    Pour confirmer, il te faut utiliser une librairie annexe, comme le dit Luc Hermitte, boost est très bien.

    Voici un exemple qui pourrait surement d'aider :

    http://boost.org/libs/filesystem/example/simple_ls.cpp

    Si tu veux, il y a aussi les appels POSIX avec opendir et readdir, RDV ici :
    http://c.developpez.com/faq/c/?page=...dir_list_POSIX

  12. #12
    tut
    tut est déconnecté
    Membre averti
    Avatar de tut
    Inscrit en
    Juillet 2002
    Messages
    373
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 373
    Points : 394
    Points
    394
    Par défaut
    si tu utilises KDE, alors Qt n'est pas loin...
    et Qt fournit des classes permettant la manipulation de fichiers et de répertoires.

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 50
    Points : 19
    Points
    19
    Par défaut
    non j'utilise Gnome mais je code le graphique avec wxwidget

    merci pour les info

Discussions similaires

  1. Déploiement d'un projet C/C++ sous linux
    Par Junta2013 dans le forum Linux
    Réponses: 4
    Dernier message: 17/08/2014, 14h52
  2. Mini Projet en C (info disque dur) sous Linux
    Par exhortae dans le forum Linux
    Réponses: 8
    Dernier message: 21/11/2007, 14h41
  3. Compiler un projet BCB sous linux
    Par netsabes dans le forum C++Builder
    Réponses: 6
    Dernier message: 27/09/2007, 21h51
  4. Interface graphique pour projet gtk en C sous Linux
    Par troumad dans le forum GTK+ avec C & C++
    Réponses: 8
    Dernier message: 12/02/2007, 13h28
  5. Rechercher le source du projet NetFilter sous Linux
    Par Hirouchima dans le forum Applications et environnements graphiques
    Réponses: 6
    Dernier message: 18/11/2005, 15h32

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