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 :

Algorithme en langage c


Sujet :

C

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : Algérie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 10
    Par défaut Algorithme en langage c
    Bonjour à tout le monde.
    Je suis un débutant en algorithmique, et j’ai besoin d’aide dans ce programme qui sert à calculer une valeur approchée de sinus d’un nombre réel compris entre -1 et 1.
    J’ai adopté cette démarche, mais l’algorithme ne s’exécute pas.
    Pourriez-vous m’aider ?
    Merci beaucoup d’avance.
    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
     
    #include<stdio.h>
    #include<conio.h>
    main()
    {
    int n,i ;float x,x0,sinx;
    printf("entrer un nombre réel x compris entre -1 et 1") ;
    scanf("%f",&x) ;
    printf("\n entrer l'ordre du developpement n\n") ;
    scanf("%d ",&n) ;
    n=n-2 ;i=1;
    sinx=x ;
    while(i<=n)
    {
    x0=x ;
    x=(-x)*x*x0/(i+1)*(i+2) ;
    sinx=sinx+x;
    i=i+2;
    scanf("%d",&i)
    }
    printf(" pou x=%f, le developpement a l ordre %d de sinx est %sinx ",x,n,sinx) ; 
    getch();
    }

  2. #2
    Invité(e)
    Invité(e)
    Par défaut
    Bonjour,

    Déjà :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    08-12-05-1.c:2:18: conio.h: No such file or directory
    08-12-05-1.c:4: warning: return type defaults to `int'
    08-12-05-1.c: In function `main':
    08-12-05-1.c:19: error: parse error before '}' token
    08-12-05-1.c:21: warning: implicit declaration of function `getch'
    08-12-05-1.c:22: error: parse error at end of input
    -> main est de type int.

    -> conio : connait pas.

    ->scanf("%d",&i) : manque un ";" et ne fait pas ce que tu attends.

    ->printf(" pou x=%f, le developpement a l ordre %d de sinx est %sinx ",x,n,sinx) ; : %sinx ???

    ->scanf("%d ",&n) ; : pourquoi un espace après le %d ??

    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
    #include<stdio.h>
     
    int main(void)
    {
        int n, i;
        float x, x0, sinx;
        printf("entrer un nombre réel x compris entre -1 et 1");
        scanf("%f", &x);
        printf("\n entrer l'ordre du developpement n\n");
        scanf("%d", &n);
        n = n - 2;
        i = 1;
        sinx = x;
        while (i <= n) {
            x0 = x;
            x = (-x) * x * x0 / (i + 1) * (i + 2);
            sinx = sinx + x;
            i = i + 2;
        }
        printf(" pou x=%f, le developpement a l ordre %d de sinx est %f",
               x, n, sinx);
        return 0;
    }
    Donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >./a.exe
    entrer un nombre réel x compris entre -1 et 1.5
    
     entrer l'ordre du developpement n
    5
     pou x=0.008240, le developpement a l ordre 3 de sinx est 0.320740
    Par contre, je pense qu'il faut revoir le calcul : j'ai rentré .5, il me calcule une valeur erronée et change la valeur de x.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : Algérie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 10
    Par défaut algorithme
    Merci beaucoup Mr mabu.
    J'ai réexécuté le programme après votre correction, mais ça ne marche pas dans la boucle.(il éxécute uniquement les deux premiers lignes), c'est quoi le problème svp

  4. #4
    Invité(e)
    Invité(e)
    Par défaut
    J'ai réexécuté le programme après votre correction, mais ça ne marche pas dans la boucle.(il éxécute uniquement les deux premiers lignes), c'est quoi le problème svp
    Il va falloir que vous décriviez mieux vos problèmes pour qu'on puisse vous aider efficacement :

    • Écrivez ce que le programme écrit, quel paramètres vous lui avez donné, comme je l'ai fait dans mon premier post.
    • Décrivez précisément ce qui ce passe
    • Ajoutez des printf à l'intérieur de la boucle pour voir l'évolution des variables.

  5. #5
    Expert confirmé
    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
    Par défaut
    De base, l'erreur est une mauvaise interprétation de l'expression
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    x = (-x) * x * x0 / (i + 1) * (i + 2);
    En effet, ceci revient à écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    x = ((-x) * x * x0 / (i + 1) )* (i + 2);
    Il faut une expression du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    x = (-x) * x * x0 / (i + 1) / (i + 2);
    Ensuite, le x0 = x qui précède fait que l'expression est en x^3 alors que le nouveau terme doit être en x^2 fois l'ancien terme. Il y a confusion entre x, la valeur de l'angle et x0, le précédent terme calculé.
    Enfin, il y a un problème d'indices.
    Je propose par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
        sinx = x; // valeur à l'ordre 1
        x0=x;     // terme à l'ordre 1
        i = 3;     // Calculer à partir de l'ordre 3
        while (i <= n)
       { 
            x0 = (-x) * x * x0 / (i -1) / i;  // le nouveau terme
            sinx = sinx + x0;                   // A ajouter
            i = i + 2;
        }

Discussions similaires

  1. [XL-2010] Quel algorithme ou langage
    Par jad73 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 30/03/2013, 11h25
  2. Traduire automatiquement des algorithmes en langage Pascal
    Par slim_java dans le forum Algorithmes et structures de données
    Réponses: 12
    Dernier message: 01/12/2011, 16h13
  3. Créer un algorithme en langage ADA
    Par kiimmy dans le forum Ada
    Réponses: 1
    Dernier message: 11/10/2011, 10h00
  4. Un Pseudo-langage pour les algorithmes
    Par Terminator dans le forum Algorithmes et structures de données
    Réponses: 19
    Dernier message: 24/02/2006, 10h28

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