begin process at 2012 05 29 13:01:24
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Débutant(e)

 > 

Multiplier un nombre a virgules


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Multiplier un nombre a virgules

samedi 18 août 2007 à 18:49:18 | Multiplier un nombre a virgules

darkwhite

Salut a tous,
le principe de mon code est de multiplier par 3 un nombre decimal ecrit en notation française :
xx,xx.
j'ai donc ecrit ce code :

#include <stdio.h>

int main()
{
  char nombre[256];
  int i=0,j=0,rang=0;
double resultat=0;
  scanf("%s",&nombre);
//Le principe est de stocker le nombre dans une variable double
//Mais il faut connaitre la position de la virgule
 
  while(nombre[i]!='\0')
    {
          //Lorsqu'on arrive a la virgule il faut commencer a compter combien de chiffres sont
          // presents apres la virgule
            if(nombre[i]==',')
            {
              i++;
              j= i;
                while(nombre[j]!='\0')
                      {
                            rang*=10;
                            j++;
                        }
                }
      resultat+=nombre[i];
      resultat*=10;
      i++;
    }

  resultat=(resultat*3)/rang;
printf("%d\n",(int)resultat);
}


Or à l'execution j'ai constaement :
darkwhite:/media/sda5/Dossier pierre/c/ioi# ./triple
4
-2147483648

Ce qui selon mon faible niveau est synonyme de depassement de capacité ??
samedi 18 août 2007 à 19:06:07 | Re : Multiplier un nombre a virgules

juju12

Réponse acceptée !
Toujours le même problème...
nombre[i] ne contient pas le chiffre mais le code ASCII du caractère
=> pour obtenir le chiffre on fait nombre[i]-'0' ou nombre[i] - 0x30 ce qui revient au même.
Par ailleurs initialise rang avec 10 au lieu de 0;
Enfin pour la sortie printf("%lf\n",resultat), je vois pas pourquoi convertir en entier puisque tu perds la virgule.

C'était pas dépassement de capacité mais division par 0 suivi de conversion hasardeuse.

Bonne prog.
samedi 18 août 2007 à 20:05:24 | Re : Multiplier un nombre a virgules

darkwhite

Merci,
Mais a la fin je veux le transformer en int.
dimanche 19 août 2007 à 15:09:45 | Re : Multiplier un nombre a virgules

SAKingdom

Membre Club
Complètement inutile.

Un double a un poids de 64 bits et un int a un poids de 32 bits.
Il y aura donc perte de donnée. Comme précisé par juju12, tu perdras tout ce qui se trouve après la virgule.

C++ (@++)



Cette discussion est classée dans : nombre, int, resultat, rang, multiplier


Répondre à ce message

Sujets en rapport avec ce message

recursivité [ par adil1251985 ] bonjour;  j'ai créé une fonction recursive qui diminue le premier nombre par le deuxieme(=1) jusqu'a obtenir zero .question : pourquoi quand je tape u convertir nombres en lettre [ par sofaranaya ] Bonsoir tout le monde! J'ai grand besoin d'une aide à propos d'un programme en c++. Voilà en ce moment je travaille sur un programme qui doit convert Calculatrice [ par sarazin66 ] Voila ma calculatrice , je cherche pleins de critique pour l'améliorer =D [^^langue3] voici ma source: [code=cpp][/code]#include #include #include programme ne marcge pas correctement [ par hedi2tun ] salut à tous! je réalise un programme en c qui cherche des mots palindromes comme non laval .... j'ai réussi a trouver tous ces palindromes mes parco comment renvoier le nombre de digit en java [ par creepx ] bonjour,j'arrive pas a comprendre ce que faire la methode digit()on fait il faut que je retourne le nombre de digit qui constitue la variable d'instan Classique code : conversion decimale=>binaire [ par darkwhite ] salut à tous,Comme un nombre incalculable de gens je dois faire le desormais classique code : convertir du binaire en decimale. Pour ma part je l'ai e Comment faire pour qu'un string soit egal a un int? en c++ [ par ndubien ] Salut, Comment faire pour qu'un string soit egal a un int? (en c++)int nombre(1);Je veux que :string a soit egal a "mot1" + nombre + "mo Prigrammation et devellopement ! [ par kellyse ] Bonjour à tous!Actuellement j'ai fais un devoir sur Les déterminants d'une matrice , mais j'ai eu un problème sur mon compilateur (il me dit qui y'a u probleme de comparaison QString/int [ par Kelm0 ] Bonjour je voudrais juste savoir comment on converti un nombre (int) en un QString (c'est peut-être pas la solution ...).Mon problème : j'ai génére un Fontion factoriel [ par valerian13 ] Dans le code suivant, si je ne déclare pas résultat dans la fonction main, il y a une erreure, par contre si met "int resultat=1;" le résultat sera to


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,685 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales