CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[C] Saisir un float

drof33
drof33
Niveau 8
08 avril 2015 à 09:38:12

Bonjour j'aimerai modifier cette fonction pour pouvoir saisir un flaot , mais j'y arrive pas


short LireShort (short nmin,short nmax)
{
    char c;
    short signe=1, i;
    int temp=0;

    do
	{
		fflush(stdin);
		c = getchar();
		temp=0;

		/*Vérifie le signe avant le nombre*/

		if (c=='-')
		{
			signe=-1;
			c=getchar();
		}
		else
		{
			if(c=='+')
			{
				c=getchar();
			}
		}

		/*Boucle qui transforme les chiffres après les signes en nombre*/

		for(i=0;(c>='0' && c<='9') && i<=5; i++)
		{
			temp=temp*10+(c-48);
			c=getchar();
		}

		/*Mise du signe devant le calcul*/

		temp=temp*signe;


		/*Renvois du short /!\ casting*/
		if(temp<nmin||temp>nmax|| c!='\n')
		{
			printf("Valeur entree incorrect. Veuillez entrer une valeur entre %hd et %hd.\n",nmin,nmax);
		}
	}while(temp<nmin||temp>nmax);


    return((short)temp);
}

merci d'avance :ok:

Message édité le 08 avril 2015 à 09:39:01 par drof33
YuGiOhJCJ
YuGiOhJCJ
Niveau 6
08 avril 2015 à 20:06:06

Salut,
Déjà avec la fonction getchar, tu ne vas pas y arriver car celle-ci retourne un int :
int getchar(void);
Du coup, il faut te servir de la fonction scanf :
int scanf(const char *format, ...);
Voici un exemple d'utilisation :
#include <stdio.h> // for printf and scanf int main() { float f; printf("saisir un float :\n"); scanf("%f", &f); printf("valeur saisie : %f\n", f); }
Dans la console ça donne :
$ gcc main.c
$ ./a.out
saisir un float :
3.14
valeur saisie : 3.140000

drof33
drof33
Niveau 8
08 avril 2015 à 20:50:30

C'est trop simple le sanf %f , je peux pas l'utiliser , je dois créer ma propre fonction :-(

DirectX11
DirectX11
Niveau 6
08 avril 2015 à 22:58:38

Sans %f tu peux lire sur l'entré standard dans un char* et ensuite du parse a la main
caractère par caractère tu ajoutes a ton float et tu multiplie par 10 ensuite quand tu croise une virgule ...

enfin tu as compris l'idée c'est pas bien compliqué :ok:

drof33
drof33
Niveau 8
08 avril 2015 à 23:47:30

Non excuse moi , j'ai pas bien compris :rire:

COS[A-B]
COS[A-B]
Niveau 10
09 avril 2015 à 13:19:31

tu défini un tableau de char, tu le remplis avec ton getchar() jusqu'à rencontrer un espace, un retour chariot ou un EOF.

Ensuite tu défini un float que tu initialise à 0, et tu va donner sa valeur au float en parcourant ton tableau de char qui contient le nombre. Ton tableau va ressembler a {'1', '2', '.', '0', '5'}, du coup dans un premier temps je te conseil de retenir l'indice du '.' (s'il y en a un) pour pouvoir parcourir la partie entière de droite ) gauche et la partie décimale de gauche a droite.

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Internet
  • Macintosh
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment