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 :

Racine douzième de deux


Sujet :

C

  1. #21
    Membre expérimenté
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    946
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 946
    Points : 1 351
    Points
    1 351
    Par défaut
    Salut,

    Je pense qu'un petit bout de code valant mieux qu'un long discours...

    A+

    Pfeuh

    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
    18
    19
    20
    21
    #include <stdio.h>
    #include <stdlib.h>
     
    int main(int argc, char *argv[])
    {
        double longueurDuManche;
        double positionFrette = 0;
        int    nombreDeFrettes = 24;
        int    numeroDeFrette = 1;
     
        printf("Longueur du diapason :");
        scanf("%lf",&longueurDuManche);
        positionFrette = longueurDuManche;
        while( numeroDeFrette <= nombreDeFrettes)
        {
            positionFrette = positionFrette * 0.943874;
            printf("La position de la frette %2d par rapport au sillet de tete est: %.02lf\n",numeroDeFrette,positionFrette);
            numeroDeFrette++;
        }
        return 0;
    }

  2. #22
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    160
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 160
    Points : 47
    Points
    47
    Par défaut
    Bonsoir pfeuh,

    Je viens d essayer ton code et en fait il ne donne pas les longueurs depuis le sillet de tête jusqu'à la frette concernée.
    Je vais essyaer de vois si je peus m aider du tiens pour arriver à mes fins.


    Shaz
    Hier un manchot a frappé a ma fenêtre, il a frappé si fort qui il l'a cassée; et alors la je me suis senti libre.....

  3. #23
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    160
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 160
    Points : 47
    Points
    47
    Par défaut
    Voilà pour l instant la seule chose que j ai trouvé:

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
     
     
    int main(int argc, char *argv[])
    {
      double longueurDuManche;
      double diapason;
      long positionPremiereFrette = 0;
      long positionDerniereFrettes = 23;
     
     
      printf("Longueur du diapason :");
      scanf("%lf",&longueurDuManche);
      printf("\n");
      printf("Tapez a nouveau la longueur du diapason s il vous plait:");
      scanf("%lf",&diapason);
      while (positionPremiereFrette <= positionDerniereFrettes)
     {
      longueurDuManche /= pow(2,1.0/12);
     
      positionPremiereFrette++;
      printf("La position de la frette %ld par rapport au sillet de tete est: %lf\n",positionPremiereFrette,diapason - longueurDuManche);
     
     }
     
     
       return 0;
    }
    Les resultats sont ceux que je désirent, mais j aimerais bien pouvoi ne pas demande 2 fois la longueurrr du diapason au début.
    Existe t-il une façon de rempli 2 variables distinctes avec un seul scanf ?

    Shazad
    Hier un manchot a frappé a ma fenêtre, il a frappé si fort qui il l'a cassée; et alors la je me suis senti libre.....

  4. #24
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Existe t-il une façon de rempli 2 variables distinctes avec un seul scanf ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      printf("Longueur du diapason : \n");
      scanf("%lf",&longueurDuManche);
      diapason = longueurDuManche;
    ...
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  5. #25
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    et bêtement ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      printf("Longueur du diapason :");
      scanf("%lf",&longueurDuManche);
      printf("\n");
      diapason = longueurDuManche;
    [Edit] Damned : grillé par diogene (pas assez rapide petit scarabée !!)
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  6. #26
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    160
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 160
    Points : 47
    Points
    47
    Par défaut
    Bonsoir ram-0000 et diogene,

    J ai honte. Du coups c est moi le manche.
    Mais merci beaucoup pour vos réponses.

    Shaz
    Hier un manchot a frappé a ma fenêtre, il a frappé si fort qui il l'a cassée; et alors la je me suis senti libre.....

  7. #27
    Membre expérimenté
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    946
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 946
    Points : 1 351
    Points
    1 351
    Par défaut
    Citation Envoyé par shazad Voir le message
    Je viens d essayer ton code et en fait il ne donne pas les longueurs depuis le sillet de tête jusqu'à la frette concernée.
    Tu as raison... En fait c'est moi le manche! Il suffit de remplacer dans mon code la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            printf("La position de la frette %2d par rapport au sillet de tete est: %.02lf\n",numeroDeFrette,positionFrette);
    par celle-ci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            printf("La position de la frette %2d par rapport au sillet de tete est: %.02lf\n",numeroDeFrette,longueurDuManche - positionFrette);
    A+,

    Pfeuh

  8. #28
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    160
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 160
    Points : 47
    Points
    47
    Par défaut
    De toutes manières ton code m a surement aider pfeuh.

    Je suis façe a un autre problême:
    J ai codé ce petit programme avec Code Block.
    Quand j execute le .exe qui est dans le dossier de ce projet, la console apparaît, la phrase qui demande la longueur du diapason est bien là, je rente un chiffre et quand j ai appuyé sur entrée la console disparaît.

    Du coups une fois ce projet transformé en executable avec Inno Setup et une fois installé sur le pc, cela me fais la même chose.

    Je ne comprends pourquoi c est comme cela.
    Pourriez vous encore m aider s il vous plaît.
    De mon côté je fais des recheches pour voir si cela est déjà arrivé à quelqu'un.

    Shazad
    Hier un manchot a frappé a ma fenêtre, il a frappé si fort qui il l'a cassée; et alors la je me suis senti libre.....

  9. #29
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Points : 19 452
    Points
    19 452
    Par défaut
    Citation Envoyé par shazad Voir le message
    Quand j execute le .exe qui est dans le dossier de ce projet, la console apparaît, la phrase qui demande la longueur du diapason est bien là, je rente un chiffre et quand j ai appuyé sur entrée la console disparaît.
    Met un getchar (); après cette saisie ... tu ne l'exécutait pas à partir de C::B ?

  10. #30
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    160
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 160
    Points : 47
    Points
    47
    Par défaut
    Bonsoir ok.Idriss,

    Merci pour ta réponse.
    En fait cela se passe quand j execute le .exe que Code Block à crée.
    Chez moi il se trouve comme ceci:
    C:\Calculateur_de_frettes\bin\Release\Calculateur_de_frettes.exe

    Dois je coder comme ceci ce que tu as dit ?:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    printf("Rentrez la longueur du diapason s il vous plait:");
      scanf("%lf",&longueurDuManche);
     getchar();
    J essais de suite.

    Shazad
    Hier un manchot a frappé a ma fenêtre, il a frappé si fort qui il l'a cassée; et alors la je me suis senti libre.....

  11. #31
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    160
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 160
    Points : 47
    Points
    47
    Par défaut
    Bon et bien j ai enlevé le return 0; de la fin et je l ai remplacé par un system("PAUSE");.
    Alors le compilateur n est pas très content de ne plus voir le return 0; et me dis :
    warning: control reaches end on non-void function.

    Je pense que c est pas terrible.

    Mais du coups mon .exe fonctionne très bien.

    Shazad
    Hier un manchot a frappé a ma fenêtre, il a frappé si fort qui il l'a cassée; et alors la je me suis senti libre.....

  12. #32
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    160
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 160
    Points : 47
    Points
    47
    Par défaut
    Bon et bien j ai remis le return 0; et le compilateur est content.
    Et en plus il y a le system("PAUSE");

    Je peux peut etre laisser comme ça ?

    Shazad
    Hier un manchot a frappé a ma fenêtre, il a frappé si fort qui il l'a cassée; et alors la je me suis senti libre.....

  13. #33
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par shazad Voir le message
    Bonsoir ok.Idriss,

    Merci pour ta réponse.
    En fait cela se passe quand j execute le .exe que Code Block à crée.
    Chez moi il se trouve comme ceci:
    C:\Calculateur_de_frettes\bin\Release\Calculateur_de_frettes.exe

    Dois je coder comme ceci ce que tu as dit ?:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    printf("Rentrez la longueur du diapason s il vous plait:");
      scanf("%lf",&longueurDuManche);
     getchar();
    J essais de suite.

    Shazad
    Il te faut bien comprendre
    1) le buffer stdin (le clavier)
    2) le fonctionnement de scanf

    Contrairement à ce qui est enseigné aux débutants, scanf n'est pas fait pour la saisie humaine. Tout simplement parce que scanf attend une entrée formattée alors que l'humain peut taper n'importe quoi.
    Donc quand le système te demande de rentrer un nombre et que tu tapes "12,25 + <entrée>", les caractères '1', '2', '.', '2', '5' et <return> vont dans le buffer clavier.
    Ce buffer est lu par scanf qui récupère les éléments attendus dans le format demandé (double). Le "12.25" correspond parfaitement à ce format donc il est récupéré et traité. Mais le "return" ne correspond pas à du double => scanf le rejette et il reste dans le clavier. D'où cette verrue de getchar() que tu rajoutes après pour le supprimer du clavier. Certes avec getchar() ça marchera si tu entres "12.25" mais si tu entres "toto", ben même avec le getchar(), ça ne marchera pas. Le "toto" ne sera pas accepté par scanf() donc il restera dans le clavier, le getchar() supprimera le 't' mais il restera "oto<return>". Et à la saisie suivante => clash !

    La méthode pour faire une saisie efficace et un minimum fiable est la suivante
    1) tu définis une zone de texte
    2) tu fais saisir les infos dans cette zone via fgets()
    3) tu fais traiter cete zone par sscanf() et tu vérifie le résultat de la fonction (qui contient le nb de variables remplies). Si ce résultat est ok, tu passes à la suite sinon tu fais ressaisir. Dans tous les cas, le buffer clavier restera totalement clean (puisque lui aura été purgé des caractères saisis)

    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    char saisie[1024];
    double longueur;
     
    while(1)
    {
        printf("Saisir longueur :"); fflush(stdout);
        fgets(saisie, 1024, stdin);
        if (sscanf(saisie, "%lf", &longueur) == 1) break;
        printf("Saisie incorrecte - Recommencez\n");
    }
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  14. #34
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    160
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 160
    Points : 47
    Points
    47
    Par défaut
    Bonsoir Sve@r,

    Un grand merci pour ton explication.
    Je vais de suite coder proprement mon petit programme.

    Aurais tu une explication du pourquoi ca fonctionne quand je mets le system("PAUSE");

    Merci par avance.

    Shazad
    Hier un manchot a frappé a ma fenêtre, il a frappé si fort qui il l'a cassée; et alors la je me suis senti libre.....

  15. #35
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    160
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 160
    Points : 47
    Points
    47
    Par défaut
    Alors voilà j ai fais ceci:

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
     
     
    int main(int argc, char *argv[])
    {
      double longueurDuManche;
      double diapason;
      long positionPremiereFrette = 0;
      long positionDerniereFrettes = 23;
      char saisie[1024];
     
    while(1)
    {
        printf("Saisir longueur :"); fflush(stdout);
        fgets(saisie, 1024, stdin);
        if (sscanf(saisie, "%lf", &longueurDuManche)) break;
        printf("Saisie incorrecte - Recommencez\n");
    }
     
      diapason = longueurDuManche;
      printf("\n");
     
      while (positionPremiereFrette <= positionDerniereFrettes)
     {
      longueurDuManche /= pow(2,1.0/12);
      positionPremiereFrette++;
      printf("La position de la frette %ld par rapport au sillet de tete est: %lf\n",positionPremiereFrette,diapason - longueurDuManche);
     
     }
       printf("\n");
     
       system("PAUSE");
       return 0;
    }
    Du coups effectivement la saisie est bien efficace, mais mon .exe ne fonctionne plus.

    Shazad
    Hier un manchot a frappé a ma fenêtre, il a frappé si fort qui il l'a cassée; et alors la je me suis senti libre.....

  16. #36
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Points : 19 452
    Points
    19 452
    Par défaut
    Salut,

    Citation Envoyé par shazad Voir le message
    En fait cela se passe quand j execute le .exe que Code Block à crée.
    Normalement, tu une option run dans C::B qui fait elle même la pause ...

    Citation Envoyé par shazad Voir le message
    system("PAUSE");
    getchar (); ne fonctionne pas ?

    Bon ce n'est pas grave, mais system permet d'exécuter une commande interne de ton système ... pause est une commande de Windows et ne fonctionne donc ni sur Linux ni sur mac ni sur aucun système autre que Windows (à ma connaissance). Ce n'est donc pas portable. getchar (); attend une saisie validée par la touche ENTER (elle sert aux entrée dites non-formatée car tu n'utlises pas les formats %d, %f, etc comme avec scanf qui est plus exigant). Tu peut donc t'en servir pour marquer une pause et ceci est portable (ça fonctionne d'un système à l'autre ... et tant que c'est possible, pourquoi s'en priver ?).

    Tu peut aussi coder ta propre fonction pause avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    void pause (void)
    {
      printf ("Appuyez sur ENTER pour continuer ...\n");
      getchar ();
    }
    Après tu n'aura plus qu'a utiliser pause (); dans ton programme.

  17. #37
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    160
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 160
    Points : 47
    Points
    47
    Par défaut
    Ca y est j ai trouvé, c était le après le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    diapason = longueurDuManche;
    qui me mettais la panique.

    Je continue à faire des essais pour confirrrmer.

    Shazad
    Hier un manchot a frappé a ma fenêtre, il a frappé si fort qui il l'a cassée; et alors la je me suis senti libre.....

  18. #38
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    160
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 160
    Points : 47
    Points
    47
    Par défaut
    Je comprends pas, mais ça fonctionne même sans le system("PAUSE");

    Shazad
    Hier un manchot a frappé a ma fenêtre, il a frappé si fort qui il l'a cassée; et alors la je me suis senti libre.....

  19. #39
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 371
    Points : 23 626
    Points
    23 626
    Par défaut
    Hello,

    Citation Envoyé par shazad Voir le message
    Bonjour à tous,

    Citation Envoyé par Obsidian Voir le message
    [...] Par conséquent, pour trouver la fréquence de n'importe quelle note, il faut placer le début de la série sur une note choisie, à priori le LA, défini à 440 Hz tout pile par convention, et de la numéroter « 0 ».

    De là, la fréquence de n'importe quelle note n est égale à :

    440 × 2 ^ (n ÷ 12)
    Merci pour ce détail très important Obsidian. Mais dans mon petit programme je ne cherches pas à calculer la fréquence de chaque notes. Je veus juste caculer l emplacement des frettes qui délimite donc les cases du manche de la guitare.
    Cela revient au même.

    La longueur de ton manche est inversement proportionnelle à la hauteur de la note qu'il va te permettre de jouer. Ça veut dire qu'il faut la diviser par nos puissances au lieu de la multiplier, mais la formule reste la même.

    J ai à nouveau un petit problême car j ai donc fait pour l instant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    longueurDuMAnche /= pow(2, 1.0/12);
    Cela me donne donc pour le premier résultat, et si je prends 650 pour "longueurDuManche": 613.5183032. Ce résultat est donc la distance depuis le sillet du chevalet jusqu à la première frette.

    Je voudrais pouvoir afficher le résultat maintement depuis le sillet de tête jusqu à la première frette, ce qui me donnerais :36.4816968. C est à dire 650- 613.5183032.
    Pourquoi : car quand on trace la position des frettes sur la touche, le zéro du reglet est appuyé contre le sillet de tête. [...]
    Essaie justement de remplacer « 1 ÷ 12 » par « n ÷ 12 ».

    C'est important, d'une part parce que ça te permet de trouver directement la bonne valeur sans passer par une itération, ensuite parce que dans le cas de progressions géométriques comme la nôtre, les imprécisions des flottants se cumulent jusqu'à devenir rapidement significatives.


    Voilà pour l instant où j en suis:

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
     
     
    int main(int argc, char *argv[])
    {
      double longueurDuManche;
      long positionPremiereFrette = 0;
      long positionDerniereFrettes = 24;
      int i;
     
      printf("Longueur du diapason :");
      scanf("%lf",&longueurDuManche);
     
      do
     {
      for( i = 1; i <= 24; i++)
      {
      //printf("La position de la frette %ld par rapport au sillet de chevalet est: %lf\n",positionPremiereFrette,longueurDuManche);
      longueurDuManche *= (1 - (0.943874 * i));
      positionPremiereFrette++;
      printf("La position de la frette %ld par rapport au sillet de tete est: %lf\n",positionPremiereFrette,longueurDuManche);
     
      }
     
     }while (positionPremiereFrette <= positionDerniereFrettes);
     
       return 0;
    }
    Shazad
    Ok. Essaie ceci à présent :

    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
    18
    19
    20
    #include <stdio.h>
    #include <math.h>
     
    int main (void)
    {
        int    i        = 0;
        double longueur = 0;
        double position = 0;
     
        printf ("Saisissez la longueur du manche : ");
        scanf ("%lf",&longueur);
     
        for (i=1;i<=24;++i)
        {
            position = longueur / pow (2,(double)i/12);
            printf ("Position de la frette numéro %2d : %lf soit %lf\n",i,position,longueur-position);
        }
     
        return 0;
    }

    Citation Envoyé par shazad Voir le message
    Bon et bien j ai remis le return 0; et le compilateur est content. Et en plus il y a le system("PAUSE"); Je peux peut etre laisser comme ça ?
    Oui, car, de toutes façons, la fonction system() rend d'abord la main à ta fonction après avoir exécuté « PAUSE ». Donc, il faut toujours terminer ta fonction par un return.

    À bientôt.

  20. #40
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    160
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 160
    Points : 47
    Points
    47
    Par défaut
    Bonsoir Obsidian,

    Tu as raison pour la formule avec le LA 440Hz. C est moi qui avais mal compris.
    Pour ton code, il fonctionne mais je cherchais la longueur depuis le sillet de tête. Je garde quand même car je pourrais proposer le résultat avec la longueur depuis le sillet de tête et la longueur depuis le sillet de chevalet.

    Alors maintenant je n y comprends plus rien, je suis obligé d enlever le return 0; sinon ca ne fonctionne plus. C est dingue.

    J en suis là:

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
     
     
    int main(int argc, char *argv[])
    {
      double longueurDuManche;
      double diapason;
      long positionPremiereFrette = 0;
      long positionDerniereFrettes = 23;
      char saisie[1024];
     
     
     
    while(1)
    {
        printf("Saisir longueur :"); fflush(stdout);
        fgets(saisie, 1024, stdin);
        if (sscanf(saisie, "%lf", &longueurDuManche)) break;
        printf("Saisie incorrecte - Recommencez\n");
    }
     
      diapason = longueurDuManche;
     
     
      while (positionPremiereFrette <= positionDerniereFrettes)
     {
      longueurDuManche /= pow(2,1.0/12);
      positionPremiereFrette++;
      printf("La position de la frette %ld par rapport au sillet de tete est: %lf\n",positionPremiereFrette,diapason - longueurDuManche);
     
     }
     
       system("PAUSE");
     
    }
    J ai du laisser juste le system("PAUSE"); sinon quand j execute depuis le .exe, on voit le programme calculer et tout disparait.

    Shazad
    Hier un manchot a frappé a ma fenêtre, il a frappé si fort qui il l'a cassée; et alors la je me suis senti libre.....

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 3 PremièrePremière 123 DernièreDernière

Discussions similaires

  1. Réponses: 2
    Dernier message: 28/07/2007, 01h21
  2. Eviter deux nombres identiques dans un tirage aléatoire
    Par moon tiger dans le forum Pascal
    Réponses: 5
    Dernier message: 25/11/2002, 09h57
  3. Racine carrée
    Par SteelBox dans le forum Mathématiques
    Réponses: 5
    Dernier message: 23/11/2002, 17h15
  4. [VB6] Racine carrée + arrondi
    Par Krys29 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 28/10/2002, 13h19
  5. soustraire deux dates ?
    Par joejoe dans le forum SQL
    Réponses: 2
    Dernier message: 19/07/2002, 15h53

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