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 :

Calcul de coût - résultat toujours nul


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Septembre 2014
    Messages : 3
    Par défaut Calcul de coût - résultat toujours nul
    bonjour à tous, voila c est un soucis de noob..
    sur le code suivant, (je voudrais calculer le coût d un trajet, 16.66 est une constante), j'obtiens toujours 0 et non le bon résultat,
    voila si une bonne âme pourrait m aider ?
    petite précision, je n utilise pas la bibliothèque iostream car après le code est mis sur l appli android c/c++


    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 <stdlib.h>
    #include<stdio.h>
    using namespace std;
    int main () 
    { 
        int distance=0,voyage=0,prix=0;
     
        printf("prix de l essence ?   ");
        scanf("%d",&prix);
     
     
        printf("distance a parcourir ?  ");
        scanf("%d",&distance);
     
        voyage= ((distance / 16.66 ) * prix) ;
     
        printf("le cout total est de : %d   ",voyage);
     
        return 0;
    }

  2. #2
    Membre éprouvé
    Avatar de TiranusKBX
    Homme Profil pro
    Développeur C, C++, C#, Python, PHP, HTML, JS, Laravel, Vue.js
    Inscrit en
    Avril 2013
    Messages
    1 476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur C, C++, C#, Python, PHP, HTML, JS, Laravel, Vue.js
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 1 476
    Billets dans le blog
    6
    Par défaut
    je ne suis pas certain mais renseigne tu des réels ?
    si c'est le cas met plutôt f à la place de d dans ton scanf

  3. #3
    Expert confirmé
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 772
    Par défaut
    Un petit effort:




    Sujet Déplacé, mais code C++ qui contient la solution
    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>
     
     
    int main ()
    {
        float distance = 0.0f, total = 0.0f, price = 0.0f;
     
        std::cout << "Prix de l essence?" << std::endl;
        std::cin >> price;
        std::cout << "Distance a parcourir?" << std::endl;
        std::cin >> distance;
     
        std::cout << "Le cout total est de " << ((distance / 16.66f) * price) << std::endl;
     
     
        return 0;
    }

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Septembre 2014
    Messages : 3
    Par défaut
    merci de ta reponse foetus, mais avec iostream je sais le faire, mais pour moi c est "nouveau " avec printf et scanf car je n ai pas appris avec ces derniers...

  5. #5
    Expert confirmé
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 772
    Par défaut
    petite précision, je n utilise pas la bibliothèque iostream car après le code est mis sur l appli android c/c++
    Soit, mais je doute fortement que ce soit utile dans une application mobile Android

    Parce que la saisie c'est via une zone de saisie (ou autre et non pas avec la fonction scanf) et pareil avec la sortie.
    [HS on]
    D'ailleurs j'ai un souvenir douloureux sous Android où dans Eclipse tous les logs de toutes les applications, de tous les widgets ... étaient affichés
    Et donc tu étais obligé d'identifier ton log avec une chaîne de caractères (et faire des recherches pour trouver tes logs )
    Mais cela ne fonctionnait pas avec les plantages qui eux n'étaient pas marqués
    [HS off]

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 153
    Billets dans le blog
    4
    Par défaut
    distance est un int, tu fais donc une division entière et tout entier <= 16 donnera 0 en division par 16.66
    http://fr.wikipedia.org/wiki/Division_euclidienne ton résultat c'est le quotient
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  7. #7
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Septembre 2014
    Messages : 3
    Par défaut
    oki,merci pour vos reponses, je deplace le sujet alors

  8. #8
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 840
    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 840
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par Bousk Voir le message
    distance est un int, tu fais donc une division entière et tout entier <= 16 donnera 0 en division par 16.66
    Absolument pas. 16.66 est un double donc la division se fait en double (le plus large des opérandes présents). Ensuite, comme le dit Obsidian, si le résultat est stocké dans un int là il y a alors troncature.

    Citation Envoyé par heelflip Voir le message
    voila c est un soucis de noob..
    C'est pas interdit de chercher un peu tout seul au préalable avant de te précipiter sur le premier forum. Tu aurais ne serait-ce qu'affiché tes variables juste après la saisie t'aurais trouvé tout seul !!!
    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]

  9. #9
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 487
    Par défaut
    Bonsoir,

    « using namespace std; » est du C++, pas du C. Retire cette ligne. Elle est inutile ici.

    Tu as défini tes variables comme entières (« int ») et donc utilisé « %d » pour les saisir. Si tu entres un nombre à virgule, la saisie s'arrêtera à la fin de sa partie entière et le scanf suivant va buter sur ce qu'il lit, considérant qu'il s'agit d'une expression incorrecte. Ta seconde variable ne sera pas remplie et restera à zéro. Par conséquent, le résultat de ton équation sera nul lui aussi.

    Si tu entres deux nombres entiers, ton programme se déroulera correctement. Le fait d'utiliser une constante rationnelle (« 16.66 ») va promouvoir automatiquement les types impliqués vers double pendant le calcul mais le résultat sera renvoyé dans une variable de type int elle aussi, et sa partie fractionnaire sera donc tronquée, même s'il est non nul.

    « scanf » est la fonction réciproque de printf et, à ce titre, on la voit pratiquement dès le début. Pour autant, elle reste difficile à utiliser et trouve surtout son utilité lorsque l'on traite un flux de données texte déjà formatées. Utilise plutôt fgets() avec un buffer et strtod() pour acquérir tes nombres. Pense également à vérifier le code de retour de ces fonctions pour t'assurer qu'elles ont correctement rempli leur tâche.

Discussions similaires

  1. [DOM] load() résultat toujours vide
    Par Orbiplanax dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 18/12/2007, 20h49
  2. Réponses: 3
    Dernier message: 05/05/2007, 09h12
  3. [Conception] Simulation de calcul de coût
    Par yezid dans le forum Modélisation
    Réponses: 2
    Dernier message: 29/03/2007, 15h54
  4. Réponses: 2
    Dernier message: 29/03/2007, 11h34
  5. Calcul à partir des résultats d'une requète
    Par Sendo dans le forum Access
    Réponses: 1
    Dernier message: 29/09/2005, 17h46

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