Bienvenue aux nouveaux arrivants sur FantasPic !

- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.

--- L’équipe FantasPic ---
Tout ce qui n'a pas de catégorie !
Pourquoi je n'arrive pas à me remettre aux PIC
F6FCO
Avatar de l’utilisateur
Confirmé
Confirmé
Messages : 879
Âge : 65
Enregistré en : décembre 2017
Localisation : Furtif je suis.
Contact :

#11 Message par F6FCO » ven. 6 sept. 2019 09:30

C'est bon, en tâtonnant j'ai trouvé comment faire mais je suis curieux d'entendre un avis sur la chose.

Code : Tout sélectionner

double essai=(double)2/4

donne 0.5, mais c'est tiré par les cheveux je trouve.
Modifié en dernier par F6FCO le ven. 6 sept. 2019 09:30, modifié 1 fois.
Une porte nand prend 2 bits en entrée... cochonne va !!! :langue:

Pourquoi je n'arrive pas à me remettre aux PIC
Claudius
Avatar de l’utilisateur
Passioné
Passioné
Messages : 209
Âge : 64
Enregistré en : septembre 2015
Localisation : ELANCOURT (78 - YVELINES)
Contact :

#12 Message par Claudius » ven. 6 sept. 2019 09:30

Bonjour,

Tout à fait normal, car 2/4 est la division de 2 entiers et donc donne 0
Pour obtenir 0.5, il faut caster, essaie :

Code : Tout sélectionner

double essai = (double)2/4;


Code : Tout sélectionner

float essai = (float)2/4;

Pourquoi je n'arrive pas à me remettre aux PIC
F6FCO
Avatar de l’utilisateur
Confirmé
Confirmé
Messages : 879
Âge : 65
Enregistré en : décembre 2017
Localisation : Furtif je suis.
Contact :

#13 Message par F6FCO » ven. 6 sept. 2019 09:36

On a posté en même temps mais je te remercie pour ta réponse Claudius, expliqué comme çà c'est clair. Mais çà me montre bien comme je suis perfectible en C :roll:
Au départ c'est des calculs trigo assez complexes qui ne donnaient rien de valable au final, genre un cosinus d'une valeur de 1263811 :shock: , après avoir déniché le pourquoi j'avais simplifié la chose pour poser ma question ici.
Une porte nand prend 2 bits en entrée... cochonne va !!! :langue:

Pourquoi je n'arrive pas à me remettre aux PIC
Claudius
Avatar de l’utilisateur
Passioné
Passioné
Messages : 209
Âge : 64
Enregistré en : septembre 2015
Localisation : ELANCOURT (78 - YVELINES)
Contact :

#14 Message par Claudius » ven. 6 sept. 2019 09:36

En effet, c'est une spécification du Langage C ;-)

Cf. Les conversions explicites : l'opérateur de cast

Pourquoi je n'arrive pas à me remettre aux PIC
F6FCO
Avatar de l’utilisateur
Confirmé
Confirmé
Messages : 879
Âge : 65
Enregistré en : décembre 2017
Localisation : Furtif je suis.
Contact :

#15 Message par F6FCO » ven. 6 sept. 2019 09:42

J'ai pas mal bidouillé avant de poser la question et je pensais bien diviser des doubles mais çà ne marchait pas:

Code : Tout sélectionner

int xx=0;
int r=0;
double cosinus=0;

xx=val1;
r=val2;

xx=(double)xx;
r=(double)r;
cosinus=xx/r


J'ai essayé aussi comme çà

Code : Tout sélectionner

cosinus=(double)xx/(double)r;


Code : Tout sélectionner

cosinus=(double)(xx/r);


Je pensais bien diviser des doubles de cette façon puisque le compil acceptait toutes ces syntaxes, mais çà ne fonctionnait pas.

Edit:après lecture ton lien répond à toutes ces questions.
Une porte nand prend 2 bits en entrée... cochonne va !!! :langue:

Pourquoi je n'arrive pas à me remettre aux PIC
Claudius
Avatar de l’utilisateur
Passioné
Passioné
Messages : 209
Âge : 64
Enregistré en : septembre 2015
Localisation : ELANCOURT (78 - YVELINES)
Contact :

#16 Message par Claudius » ven. 6 sept. 2019 13:05

Une petite remarque au sujet de l'initialisation d'un double ou d'un flottant :

Code : Tout sélectionner

double cosinus=0;

Il faut mieux définir la constante avec le caractère '.' :

Code : Tout sélectionner

double cosinus=0.0;

Pourquoi je n'arrive pas à me remettre aux PIC
F6FCO
Avatar de l’utilisateur
Confirmé
Confirmé
Messages : 879
Âge : 65
Enregistré en : décembre 2017
Localisation : Furtif je suis.
Contact :

#17 Message par F6FCO » ven. 6 sept. 2019 13:34

Comme çà on est sur que c'est un double. Après ton explication j'ai vu çà sur d'autres codes pour que le zéro ne soit pas pris pour un entier.
Genre pour passer de radians en degrés

Code : Tout sélectionner

angle=acos(cosinus)*180.0/PI;


Quand on est un bébé en C il y a pas mal de moyens de se tirer les cheveux pour des détails :-)
Une porte nand prend 2 bits en entrée... cochonne va !!! :langue:

Pourquoi je n'arrive pas à me remettre aux PIC
F6FCO
Avatar de l’utilisateur
Confirmé
Confirmé
Messages : 879
Âge : 65
Enregistré en : décembre 2017
Localisation : Furtif je suis.
Contact :

#18 Message par F6FCO » dim. 15 sept. 2019 19:28

Plutôt que mon blabla un peu touffu voici une explication plus claire de ce qu'est Codingame (nota: je n'ai pas d'action chez eux mais c'est tellement géant et passionnant comme concept que je voulais vous le faire connaître):

CodinGames est un ensemble de défis de programmation présentés sous forme de jeux. Certains d'entre eux sont des énigmes. Parfois, il faut battre une IA. Dans d'autres, vous êtes en concurrence avec des robots écrits par d'autres utilisateurs. Il existe de nombreux défis et énigmes avec différentes difficultés et couvrant différents domaines. Ils ont tous une chose en commun. Vous devez guider votre ou vos héros en écrivant un bot.

"IA": intelligence artificielle
"bot" robot virtuel
Une porte nand prend 2 bits en entrée... cochonne va !!! :langue:

Pourquoi je n'arrive pas à me remettre aux PIC
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 1496
Âge : 69
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#19 Message par paulfjujo » dim. 15 sept. 2019 20:20

bonsoir,

F6FCO a écrit :Comme çà on est sur que c'est un double.


en MikroC , il n'y a pas de double
seulement des floats sur 32 bits ..

d'ou peut etre l'avantage d'utiliser le FPU externe ?
Aides toi, le ciel ou Fantastpic t'aideras

Pourquoi je n'arrive pas à me remettre aux PIC
F6FCO
Avatar de l’utilisateur
Confirmé
Confirmé
Messages : 879
Âge : 65
Enregistré en : décembre 2017
Localisation : Furtif je suis.
Contact :

#20 Message par F6FCO » jeu. 10 oct. 2019 20:11

Un projet intéressant serait de se faire son propre FPU perso, juste un petit truc simple. Par exemple pour ma petite CNC j'ai utilisé des tables trigo précalculées avec une routine qui calcule tan() et atan(). Je verrai bien un petit 16F88 en // avec le PIC principal pour faire les calculs de trigo que j'utilise le plus souvent dans mes montages de petite robotique. La forme de dialogue entre les deux PIC reste à déterminer.
Une porte nand prend 2 bits en entrée... cochonne va !!! :langue:


Retourner vers « Coin Fourre-tout »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 2 invités