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 :

grosse opération


Sujet :

C

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 14
    Par défaut grosse opération
    Bonjour,

    J'ai ouvert un livre de C ce matin en me levant et deja je rencontre des probs...

    LOl,
    je veux faire une multiplication par 1000 000 000 000, mais le resultat renvoyé est un truc bidon, genre nombre négatif !!!

    j'ai essayé de déclarer la variable cible en type Double, mais ca marche pas.

    comment faire pour que ces grosses opérations ne me pose plus de probleme ?

    merci d'avance.

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut Re: grosse opération
    Citation Envoyé par Kazimir
    je veux faire une multiplication par 1000 000 000 000, mais le resultat renvoyé est un truc bidon, genre nombre négatif !!!

    j'ai essayé de déclarer la variable cible en type Double, mais ca marche pas.
    Montre le code.
    comment faire pour que ces grosses opérations ne me pose plus de probleme ?
    Selon le type, il y a des limites minimales garanties par le langage :

    http://emmanuel-delahaye.developpez.com/init_c.htm#type

    Les valeurs de l'implémentation sont définies dans <limits.h>

    Il faut donc choisir son type correctement. A noter qu'il n'y pas d'indication de débordement en C. C'est au programmeur de savoir ce qu'il fait.

    Le débordement des types non signés se fait proprement par 'retournement' (wrapping ou 'retour à zéro')

    Pour les types signés, le comportement dépend de l'implémentation.

    NOTA : les flottants ont de plus grandes plages, mais la précision est limitée (avec les long double, on a quand même une énorme plage et une bonne précision...). Les limites sont définies dans <float.h>

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 14
    Par défaut
    Bonjour,

    voila le bout de code que j'ai fais (enfin le necessaire a l'operation)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    #include <stdio.h>
     
     
    main(annee,i)
    {
                      printf("\nTapez votre année de naissance (ex: 73 pour 1973) puis validez par \"Entree\"\n");
                      scanf("%d",&i);
                    annee=i*1000000000000;
                    printf("%d\n",annee);
      system("pause");
    }
    avec ce code, le resultat renvoyé est -727379968 si i vaut 1 !!!

    j'ai essayé en declarant annee en type double, mais c'est pire...

  4. #4
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par défaut
    Il faudrait songer à ouvrir un livre de C et regarder la signification des arguments de la fonction main.
    Apprends aussi à régler ton compilo correctement, ce programme n'aurait jamais du compiler.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  5. #5
    Membre éclairé
    Inscrit en
    Août 2005
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 62
    Par défaut
    le pb est dans :
    avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    double annee;
    	double i;
    	i = 10;
        annee = i * 1000000000000; 
        printf("%E\n",annee);
    ca marche.

  6. #6
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par défaut
    Ça n'est plus la même chose !
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  7. #7
    Membre éclairé
    Inscrit en
    Août 2005
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 62
    Par défaut
    essaye ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    double annee = 0;
    	int i = 0;
    	printf("\nTapez votre année de naissance  puis validez par \"Entree\""); 
    	scanf("%d",&i); 
        annee = i * 1000000000000; 
        printf("%E\n",annee);
    le résultat est de type : 73.0000E+013

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 14
    Par défaut
    Ca a l'air de fonctionner comme ca, merci.
    Par contre, j'ai remplacé %E par %G parce que j'ai pas besoin des decimales.

    a mon grand damne, je rencontre encore un souci avec le modulo (%).
    dans mon code, quand je calcul le modulo avec un nombre comme 123456987 % 74 pas de prob, mais si je mets: var % 87, le compilateur me fait une erreur " invalid operands to binary % "


    Citation Envoyé par Trap D
    Il faudrait songer à ouvrir un livre de C et regarder la signification des arguments de la fonction main.
    Apprends aussi à régler ton compilo correctement, ce programme n'aurait jamais du compiler.
    J'ai effectivement un livre de C devant les yeux, mais c'est mon seul ami vu que je suis 200% autodidacte, alors je fais au fur et a mesure.

    par contre, tu me dis que je devrais configurer mon compilateur, je suis preneur sur de l'aide.
    J'ai Dev-C++ que j'ai installé, j'ai gardé les configs par defaut et j'utilise... !!

    Merci de perdre votre temps avec un débutant en la matiere.

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Kazimir
    Citation Envoyé par Trap D
    Apprends aussi à régler ton compilo correctement, ce programme n'aurait jamais du compiler.
    par contre, tu me dis que je devrais configurer mon compilateur, je suis preneur sur de l'aide.
    J'ai Dev-C++ que j'ai installé, j'ai gardé les configs par defaut et j'utilise... !!
    C'est une question, pour le forum "Outils pour C & C++ / EDI / Compilateurs / etc" sur lequel la réponse a été donnée de dizaines de fois...

Discussions similaires

  1. prendre le controle d'un pc distant sans grosses manip
    Par aladjiasse dans le forum Développement
    Réponses: 13
    Dernier message: 10/04/2006, 15h14
  2. Grosses opérations... avez-vous une requête efficace ?
    Par Huntress dans le forum Langage SQL
    Réponses: 8
    Dernier message: 20/06/2005, 16h13
  3. opérations sur les dates
    Par coucoucmoi dans le forum Débuter
    Réponses: 2
    Dernier message: 12/08/2003, 11h45
  4. Réponses: 14
    Dernier message: 17/03/2003, 18h31
  5. opération en XSL
    Par rastapopulos dans le forum XSL/XSLT/XPATH
    Réponses: 10
    Dernier message: 12/03/2003, 22h39

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