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. #41
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 368
    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 368
    Points : 23 622
    Points
    23 622
    Par défaut
    Citation Envoyé par shazad Voir le message
    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.
    Regarde bien mon code (je l'ai mis à jour un peu après l'avoir posté).

    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 ai du laisser juste le system("PAUSE"); sinon quand j execute depuis le .exe, on voit le programme calculer et tout disparait.
    Ça dépend de l'endroit où tu as mis ton return. Ce mot-clé provoque la fin de la fonction avec renvoi d'une valeur, mais rien n'impose que ce soit en bas du code. Regarde si tu ne l'aurais pas mis dans un while et/ou avant le system.

  2. #42
    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
    Merci pour ton code Obsidian.

    Codé comme cela ça fonctionne:

    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;
     
     
      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");
       return 0;
     
    }
    Mais codé comme cela, ça ne fonctionne pas quand j execute le progamme depuis le .exe crée par CodeBlocks:

    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);
     
     }
     
     
     
       return 0;
     
    }
    Dans le second exemple il n y a pas le J avoue que j ai un peu de mal à comprendre.

    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.....

  3. #43
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par shazad Voir le message
    Voilà je reviens plus vite que prévu avec mon petit problême.
    Et voilà ce que j ai écrit pour l instant:
    Il faut apprendre à lire ses messages :
    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
     
     
    -------------- Build: Debug in hello ---------------
     
    Compiling: main.c
    Linking console executable: bin\Debug\hello.exe
    C:\dev\hello\main.c:6: warning: function declaration isn't a prototype
    C:\dev\hello\main.c: In function `calculPositionsDesFrettes':
    C:\dev\hello\main.c:6: warning: type of "longueurDuManche" defaults to "int"
    C:\dev\hello\main.c: In function `main':
    C:\dev\hello\main.c:14: warning: long int format, double arg (arg 2)
    C:\dev\hello\main.c:17: warning: ISO C90 does not support the `%lf' printf format
    C:\dev\hello\main.c: At top level:
    C:\dev\hello\main.c:9: warning: unused parameter 'argc'
    C:\dev\hello\main.c:9: warning: unused parameter 'argv'
    Output size is 19.45 KB
    Process terminated with status 0 (0 minutes, 1 seconds)
    0 errors, 6 warnings
    Ceci fonctionne :
    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 <math.h>
     
    double calculPositionsDesFrettes (double longueurDuManche)
    {
       return longueurDuManche / pow (2, 1.0 / 12);
    }
     
    int main (void)
    {
       double longueurDuManche;
       int nb_frettes;
     
       printf ("Entrez la longueur du diapason (nut to bridge) : ");
       scanf ("%lf", &longueurDuManche);
     
       printf ("Entrez le nombre de frettes : ");
       scanf ("%d", &nb_frettes);
       {
          double position = longueurDuManche;
          int i;
          for (i = 0; i < nb_frettes; i++)
          {
             position = calculPositionsDesFrettes (position);
             printf ("La frette %d est en : %f\n", i + 1, position);
          }
       }
       return 0;
    }
    Pour un banjo à manche court (diapason de 55 cm, 17 frettes):
    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
     
    Entrez la longueur du diapason (nut to bridge) : 55
    Entrez le nombre de frettes : 17
    La frette 1 est en : 51.913087
    La frette 2 est en : 48.999429
    La frette 3 est en : 46.249303
    La frette 4 est en : 43.653529
    La frette 5 est en : 41.203445
    La frette 6 est en : 38.890873
    La frette 7 est en : 36.708096
    La frette 8 est en : 34.647829
    La frette 9 est en : 32.703196
    La frette 10 est en : 30.867706
    La frette 11 est en : 29.135235
    La frette 12 est en : 27.500000
    La frette 13 est en : 25.956544
    La frette 14 est en : 24.499715
    La frette 15 est en : 23.124651
    La frette 16 est en : 21.826764
    La frette 17 est en : 20.601722
     
    Process returned 0 (0x0)   execution time : 4.934 s
    Press any key to continue.
    Pas de Wi-Fi à la maison : CPL

  4. #44
    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
    Bonjour à toutes et à tous,

    Merci pour ton intervention Emmanuel et pour ton code.
    A l heure actuel j aimerais essayer de faire la même chose avec le tempérament inégal.

    Ce seras encore moins facile je pense.

    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.....

  5. #45
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par shazad Voir le message
    A l heure actuel j aimerais essayer de faire la même chose avec le tempérament inégal.
    Dans ce cas, il faut se plonger dans la définition des échelles musicales selon Pythagore (en ce qui concerne la musique occidentale).

    http://fr.wikipedia.org/wiki/Gamme_p...cienne_majeure

    Il y a plusieurs échelles possibles, d'où l'intérêt des instruments 'fretless' (violon, oud etc.) qui permettent de choisir l'échelle qui va bien (à la volée). Il n'y a rien de plus laid que de mélanger échelles tempérées et échelles justes...
    Pas de Wi-Fi à la maison : CPL

  6. #46
    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
    Merci Emmanuel, j avais trouvé la même page de Wikipédia.
    Ça va être sympathique comme exercice je sens.

    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.....

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

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