Flux rss
Collection CommentCaMarche.net
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Résolu

[C] conversion de types

Nathalie, le lundi 18 septembre 2006 à 14:36:00
Bonjour,

Je suis débutante en C et je cherche à convertir une entrée d'un utilisateur en virgule ( ex= 12,25 ) en un float (ex : 12.25) de manière à pouvoir faire des calculs avec cette entrée.

pourriez-vous m'indiquer comment faire ou où trouver ce genre d'explication s'il vous plaît ?

merci
Répondre à Nathalie  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
mamiemando, le lundi 18 septembre 2006 à 17:28:05
Ben c'est pas trop dans l'optique, normalement ton utilisateur est sensé utilisé le '.' du pavé numérique, ce n'est pas à toi programmeuse de gérer ça. Si vraiment tu veux convertir ce qu'il a tapé :
1) stocke sa saisie dans une chaîne (char *)
2) change l'éventuelle virgule par un point
3) utilise la commande atof
http://unixhelp.ed.ac.uk/CGI/man-cgi?atof+3
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(){
    // chaine dans laquelle on stocke la saisie
    char *buffer = (char *)malloc(255*sizeof(char)); 
    double d;
    unsigned int len=0,i;

    // (1)
    printf("val ? ");
    scanf("%s",buffer); 

    // (2)
    len = strlen(buffer);
    for(i=0;i<len;++i){
        if(buffer[i]==',') buffer[i]='.';
    }

    // (3)
    d = atof(buffer);

    free(buffer); // libérer le tampon
    printf("double = %lf\n",d); // afficher le double
    getchar(); // appuyer sur entrée pour finir le programme
    return 0;
}
Répondre à mamiemando

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Char Snipeur, le lundi 18 septembre 2006 à 17:37:25
Salut
Tu peut voir du coté de locale.h
en effet, en fesant setlocale("French",ALL)
tu défini les paramètres locaux au français. les lfottants sont alors affichés avec des virgules en utilisant printf.
je n'ai pas le temps de vérifié, mais il est possible que scanf lisse les virgules. Salutation !
Char Snipeur
Répondre à Char Snipeur

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Nathalie, le lundi 18 septembre 2006 à 17:54:02
Merci mamiemando,

Le bout de code que tu m'as donné va tres bien.
Cependant, je suis supposée faire ce prog uniquement avec stdio.h.
tu n'aurais pas une variante, svp, si ce n'est pas abuser, lol?

normalement ca devrait commencer comme ceci :


char caractere = 'a';
while ( caractere != '\n')

{
scanf("%c", &caractere);

// puis c'est ici que les choses se corsent... Lol!

merci
Répondre à Nathalie

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Nathalie, le lundi 18 septembre 2006 à 18:18:10
Voilà, j'ai trouvé.

Un grand merci quand même.

#include <stdio.h>

int main()
{
int partie_entiere;
double partie_decimale = 0;
double puissance_decimale = 1;
char caractere_lu;
double valeur_totale;

scanf("%d", &partie_entiere);
scanf("%c", &caractere_lu);
while (caractere_lu != '\n')
{
scanf("%c", &caractere_lu);
if (caractere_lu >= '0')
if (caractere_lu <= '9')
{
puissance_decimale *= 10;
partie_decimale = partie_decimale * 10 + caractere_lu - '0';
}
}
valeur_totale = partie_entiere + partie_decimale / puissance_decimale;
valeur_totale *= 3;
partie_entiere = (int)valeur_totale;
printf("%d\n", partie_entiere);
return 0;
}

Je reconnais, mamiemando, que ton prog est nettemnt plus compact que le mien .

Un grand merci, j'ai appris atof grâce à toi.
Répondre à Nathalie

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 mamiemando, le lundi 18 septembre 2006 à 23:43:52
Mais de rien. Ceci dit se contraindre à n'utiliser que certain headers ce n'est pas vraiment dans l'optique de la programmation. Enfin je suppose que ça faisait partie des contraintes de l'exercice ;)
Répondre à mamiemando

Résultats pour [C] conversion de types

Conversion chaîne "" en type Double non (Résolu) Bonjour à tous, Je rencontre un bugg dans mon programme. Lors d'une boucle destinée à repérer des répétitions dans un fichier Excel, le programme plante avec l'erreur suivante : "La conversion de la chaîne "" en type Double n'est pas... www.commentcamarche.net/forum/affich-5831570-conversion-chaine-en-type-double-non
Langage C++ - Les types de données Les types de données Les données manipulées en langage C++, comme en langage C, sont typées, c'est-à-dire que pour chaque donnée que l'on utilise (dans les variables par exemple) il faut préciser le type de donnée, ce qui permet de connaître... www.commentcamarche.net/contents/cpp/cpptype.php3
Langage C - Les types de données Les types de données Les données manipulées en langage C sont typées, c'est-à-dire que pour chaque donnée que l'on utilise (dans les variables par exemple) il faut préciser le type de donnée, ce qui permet de connaître l'occupation mémoire (le... www.commentcamarche.net/contents/c/ctype.php3

Résultats pour [C] conversion de types

Comment convertir Mpg en DivX (Résolu)bonjour, j'ai dans mon ordi des dessins animés en MPG.Gravés sur cd,mon lecteur dvd de salon(pour vision sur TV) ne les lit pas. Comment convertir mpg en format lisible (le lecteur lit a peu près tout les formats sauf mpg!) sans doute divx...mais... www.commentcamarche.net/forum/affich-1986077-comment-convertir-mpg-en-divx

Résultats pour [C] conversion de types

Télécharger Photo to Sketch 3.5Photo to Sketch est un logiciel de conversion de photos en dessins au crayon. Il intègre une interface simple et intuitive. Il propose une conversion paramétrable : type de crayon (stylo, pastel, crayon de papier) , nombre de lignes, degré de... www.commentcamarche.net/telecharger/telecharger-34056894-photo-to-sketch-3-5

Résultats pour [C] conversion de types

Alcatel OT-S210S 210,Système d'Exploitation:N/A,Nombre de couleurs:65000,Téléphone à clapet:Regular,Antenne:Intégrée,Résolution en megapixels:0,Indice D.A.S:0 W/kg,Connexion USB,Type de batterie:Li-Ion,Temps de veille:290 heures,Durée de... www.commentcamarche.net/guide-achat/alcatel-ot-s210-1161183-fiche-technique
Nokia 6030 BlackAutonomie en conversation : 3h,autonomie en veille : 300 h,Appareil photo : Non,90 grammes,WAP,GPRS,Indice DAS : 0.5 W/Kg,Indice D.A.S:0.5 W/kg,WAP,EMS: ,MMS,GPRS,Couleurs disponibles,coque changeable:Champagne,Antenne: ,Type de batterie:Li... www.commentcamarche.net/guide-achat/nokia-6030-black-457725-fiche-technique
Plantronics Voyager 510Bluetooth,Sans-fil,Bande passante écouteurs: ,Divers:Up to 6 hours talk time and up to 100 hours standby,Lightweight,award-winning design for all-day wearing confort,Noise-Canceling microphone for clearer conversations,Type:Micro-casque (PC /... www.commentcamarche.net/guide-achat/plantronics-voyager-510-736476-fiche-technique

Résultats pour [C] conversion de types

VBScript - Types de donnéesLe type de données Variant Le type d'une variable correspond à la manière dont l'ordinateur stocke la variable en mémoire, c'est-à-dire la succession de 0 et de 1 dans les cases mémoire. VBScript comprend un type de données par défaut pouvant... www.commentcamarche.net/contents/vbscript/vbstype.php3
Langage C - Les variablesLe concept de variable Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être modifiées lors de l'exécution du programme. Les variables en langage C sont typées, c'est-à-dire que les données contenues dans... www.commentcamarche.net/contents/c/cvar.php3
Langage C++ - Les variablesLe concept de variable Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être modifiées lors de l'exécution du programme. Les variables en langage C++ sont typées, c'est-à-dire que les données contenues dans... www.commentcamarche.net/contents/cpp/cppvar.php3