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 :

Recherche d'une commande


Sujet :

C

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 54
    Points : 14
    Points
    14
    Par défaut Recherche d'une commande
    Voilà j'ai un TP à finir et arriver à l'exercice 2)a) je tombe la dessus:

    a. Concevez et codez une fonction qui prend un entier R en paramètre, et qui affiche R barres verticales à l’écran.
    Ce que je vous demande, c'est que faut-il utiliser pour pouvoir afficher ces barre à l'écran? (c'est pour un jeu d'allumette)

    Merci

  2. #2
    Membre chevronné
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 413
    Points : 1 993
    Points
    1 993
    Par défaut
    Bonjour,

    le caractère '|' ou '¦' pourrait l'affaire, non?
    Bien le bonjour chez vous
    Jowo

  3. #3
    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
    Probablement le caractère |
    Publication : Concepts en C

    Mon avatar : Glenn Gould

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

  4. #4
    Membre du Club
    Profil pro
    Lycéen
    Inscrit en
    Août 2008
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 30
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Août 2008
    Messages : 38
    Points : 52
    Points
    52
    Par défaut
    Sinon tu demandes à spécifier le caractère dans les arguments de ton programme, et tu prends comme valeur par défaut |.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 54
    Points : 14
    Points
    14
    Par défaut
    Je vous remercie, je n'y avais pas penser!
    Une autre question dont je ne trouve pas la solution depuis bien 1h:

    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
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
     
    float e;
     
    int factorielle(int i)
     {
      if (i>1) return(i*factorielle(i-1));
      else return(1);
     }
     
    int prog (int i, float e){
     if(i<100){
            i=i+1;
    	e=(1/(factorielle(i)))+prog(i+1, e);
     }
     else ;
    return e;
    }
     
    int main (){
     int i;
     i=1;
     printf("Approximation de e: %d", prog(i,e));
     return 0;
    }
    Je compile => niquel
    Je lance le programme => "Exception en point flottant"

    Je ne comprend pas :s

    P.S: Ou peut-être je me trompe dans l'énoncé?


  6. #6
    Membre habitué Avatar de emprex
    Homme Profil pro
    auto-entrepreneur
    Inscrit en
    Octobre 2007
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : auto-entrepreneur
    Secteur : Services à domicile

    Informations forums :
    Inscription : Octobre 2007
    Messages : 219
    Points : 199
    Points
    199
    Par défaut
    Salut,

    en regardant le programme je vois : float e que tu appelles ensuite par %d.
    je pense que %f irait mieux.
    ensuite dans la formule : e=(1/(factorielle(i)))+prog(i+1, e); il faudrait peut penser à faire un cast : e=(1/(float)(factorielle(i)))+prog(i+1, e);

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 54
    Points : 14
    Points
    14
    Par défaut
    Quand je corrige les 2 problèmes que tu m'a dis de corriger, j'obtient sa à la compilation:

    neper.c: Dans la fonction «main» :
    neper.c:25: attention : format «%f» expects type «double», but argument 2 has type «int»
    Et si je remet %d la compilation marche, mais la valeur de e affiché est :

    Approximation de e: -2147483648
    Je suis perdu là...

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 54
    Points : 14
    Points
    14
    Par défaut
    Si quelqu'un sait me trouver ou sa cloche assez rapidement sa serait cool ^^
    En effet sa fait partie d'un des TP que je dois rendre par email demain

    Merci

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Poste la dernière version du code, s'il te plait.
    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.

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 54
    Points : 14
    Points
    14
    Par défaut
    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
    // Alessandro Giuliani M12
    // ** TP 3 **
    // ** Exercice 3 **
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
     
    float e;
     
    int factorielle(int i)
     {
      if (i>1) return(i*factorielle(i-1));
      else return(1);
     }
     
    int prog (int i, float e){
     if(i<1000){
     	i=i+1;
    	e=(1/(float)(factorielle(i)))+prog(i+1, e); 
     }
     else ;
    return e;
    }
     
    int main (){
     int i;
     i=1;
     printf("Approximation de e: %f\n", prog(i,e));
     return 0;
    }
    Erreur:

    neper.c: Dans la fonction «main» :
    neper.c:29: attention : format «%f» expects type «double», but argument 2 has type «int»

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Ben, c'est pourtant clair...
    Qu'est-ce qui te déroute? Le fait que le message d'erreur soit en anglais?
    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.

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 54
    Points : 14
    Points
    14
    Par défaut
    Je vois pas en quoi c'est clair, étant donner que prog(i,e)=e=flottant et pas int... jvois pas pk il veut pas compiler alors que %f est associé à un flottant..

  13. #13
    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
    Citation Envoyé par alessandro67 Voir le message
    Je vois pas en quoi c'est clair, étant donner que prog(i,e)=e=flottant et pas int... jvois pas pk il veut pas compiler alors que %f est associé à un flottant..
    Si on lit ton code, prog() est une fonction qui retourne un int
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int prog (int i, float e)
    C'est le retour de la fonction (int) qui ne colle pas avec le format (%f) qui fait que le compilateur génére un message d'erreur
    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
    .

  14. #14
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2008
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2008
    Messages : 143
    Points : 169
    Points
    169
    Par défaut
    Citation Envoyé par alessandro67 Voir le message
    Je vois pas en quoi c'est clair, étant donner que prog(i,e)=e=flottant et pas int... jvois pas pk il veut pas compiler alors que %f est associé à un flottant..
    Il ne veut peut-être pas compiler pour la bonne raison que tu tente d'afficher LA VALEUR DE RETOUR de ta fonction PROG et non pas un FLOAT.

    Le mieux serait que tu retourne un FLOAT et non pas un INT

    Bonne chance

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 54
    Points : 14
    Points
    14
    Par défaut
    Approximation de e: 0.543081
    Pas normal cette valeur de e nan ? si je met i<50 sa me met "e: inf"

  16. #16
    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
    Citation Envoyé par alessandro67 Voir le message
    Pas normal cette valeur de e nan ? si je met 50 sa me met "e: inf"
    Est ce que tu lis les réponses que l'on te donne car cela fait 3 messages dans lesquels tu as l'explication de ton problème :
    Celui de Medinoc, le mien et celui de rilou
    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
    .

  17. #17
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 54
    Points : 14
    Points
    14
    Par défaut
    Est-ce que tu lis ma question? Le problème de compilation est résolu et je les en remercie, mais le résultat de ma fonction ne me semble pas juste...

  18. #18
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2008
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2008
    Messages : 143
    Points : 169
    Points
    169
    Par défaut
    Citation Envoyé par alessandro67 Voir le message
    Est-ce que tu lis ma question? Le problème de compilation est résolu et je les en remercie, mais le résultat de ma fonction ne me semble pas juste...
    Faut pas s'énerver

    Pourrais-tu envoyer la dernière version du source ?

    Ton problème viens peut-être d'un mauvaise interprétation de l'algorithme de ton copain Néper...

  19. #19
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 54
    Points : 14
    Points
    14
    Par défaut
    Voilà le dernier code en question:

    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
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
     
    float e;
     
    int factorielle(int i)
     {
      if (i>1) return(i*factorielle(i-1));
      else return(1);
     }
     
    int prog (int i, float e){
     if(i<1000){
     	i=i+1;
    	e=(1/(float)(factorielle(i)))+prog(i+1, e); 
     }
     else ;
    return e;
    }
     
    int main (){
     int i;
     i=1;
     printf("Approximation de e: %f\n", prog(i,e));
     return 0;
    }
    Merci

  20. #20
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2008
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2008
    Messages : 143
    Points : 169
    Points
    169
    Par défaut
    Alors ton float ne peut contenir une valeur suffisamment grande/petite :s

    Le problème c'est que tu tente de diviser 1 par un factoriel 1000 >.> (voir même plus).

    Imagine qu'aucun TYPE de variable en C ne soit capable de contenir une précision aussi jolie que cela !

    Il te faudrait donc pouvoir utiliser une bibliothèque de très grande précision ou faire tout toi même :p

    Dans tout les cas :
    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
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
     
    double e;
    int factorielle(int i)
     {
      if (i>1) return(i*factorielle(i-1));
      else return(1);
     }
     
    double prog (int i){//on retourne un DOUBLE
     
     if(i<1000){
     	i=i+1;
    	e=(1/(double)(factorielle(i)))+prog(i+1); 
     }
     else ;
    return e;
    }
     
    int main (){
     
     int i;
     i=1;
     printf("Approximation de e: %lf\n", prog(i));//pas la peine de passer E en param puisqu'elle est globale
     return 0;
    }
    Depuis tout à l'heure on dit un FLOAT :p ici j'ai testé avec un double mais de toute façon une fois 30 ou 40 dépassé pour i tu ne peut plus afficher...

    Ce que tu peut ESSAYER de faire en revanche, c'est de te pencher sur la question du :

    Pourquoi ne pas laisser le "1/" de coté pour le moment et essayer deja de faire simplement retourner par ta fonction l'élément suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (double)(factorielle(i))+prog(i+1);
    Pour te donner une idée de par combien tu vas devoir diviser 1 !

Discussions similaires

  1. Recherche d'une commande SSH
    Par BenoitDenis dans le forum Unix
    Réponses: 3
    Dernier message: 14/06/2010, 17h04
  2. Réponses: 6
    Dernier message: 02/02/2010, 14h09
  3. Recherche d'une commande gourmande en cpu
    Par rajensias dans le forum Administration système
    Réponses: 2
    Dernier message: 08/05/2009, 10h42
  4. [Débutante] Recherche d'une commande
    Par diana82 dans le forum Images
    Réponses: 5
    Dernier message: 24/10/2007, 19h13
  5. recherche d'une commande
    Par vasilov dans le forum Autres Logiciels
    Réponses: 1
    Dernier message: 03/11/2005, 22h40

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