Procedure a utiliser si plusieurs types de variables dans une même formule ?

develdelphi Messages postés 97 Date d'inscription mercredi 7 avril 2004 Statut Membre Dernière intervention 20 avril 2009 - 25 mai 2007 à 14:53
nickydaquick Messages postés 416 Date d'inscription vendredi 31 janvier 2003 Statut Membre Dernière intervention 19 décembre 2013 - 5 déc. 2007 à 20:25
Bonjour,

voici que je suis face à un probleme classiqe sans doute mais je voudrais savoir quelle est la bonne methode pour formatter des different stypes de variables dans une même formule, dois je passer par d'autres fonctions et comment ?

voici mon code :
//////////////////////
<!-- BEGIN TEMPLATE: bbcode_code -->unsignedint volume = 0x00;
data unsignedint moyenne;  //data pour liberer mem
 
 
unsignedlong moyenne2;  
int a = 25;
float b = 0.001;
int c =-77;
 
 
moyenne2 = a * log10(moyenne/b)+c; //Erreur ici genere overspace memory
printf("Moyenne en dB: %li\n", moyenne2) ; 
 
//////////////////////

Moyenne est intialisée à 0 au départ.

Avec cette formule je croyais qu'il fallait faire des castings, j'ai essayé
comme ça mais ca ne marche pas :

a * log10(moyenne/(int)b)+c;

comment pourrais je faire ?

Merci

 

8 réponses

THEwarrior333 Messages postés 192 Date d'inscription vendredi 19 mars 2004 Statut Membre Dernière intervention 30 janvier 2008
25 mai 2007 à 15:26
c'est quoi data?

car tu fais

data unsigned int moyenne;


ca ne peut pas marcher ca!


de plus tu as oublié tous les espaces apres les unsigned
0
julienbj Messages postés 452 Date d'inscription jeudi 4 décembre 2003 Statut Membre Dernière intervention 19 décembre 2008 15
25 mai 2007 à 15:50
Thewarrior>> Le type "data" (ou mot clef) est utilisé sous certains compilos pour microprocesseur.
Il indique en général que la variable est mise en mémoire volatile et ne sera plus utilisée en sortie de fonction.

Vive le C
Savon
0
develdelphi Messages postés 97 Date d'inscription mercredi 7 avril 2004 Statut Membre Dernière intervention 20 avril 2009
25 mai 2007 à 15:54
Exact le 'data' permet dans les systemes a µC de gagner de l'espace memoire entre autre.
Je travaille avec un Atmel AT89C51SNDC1.
0
cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 24
25 mai 2007 à 16:09
Je pense que tu devais mettre des cast
((float)a) * log10(((float)moyenne)/b)+((float)c)

le (int)b c'est que sûr que ca ne va pas marcher.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
develdelphi Messages postés 97 Date d'inscription mercredi 7 avril 2004 Statut Membre Dernière intervention 20 avril 2009
25 mai 2007 à 16:26
Encore une chose c'est que la fonction, log10 retourne un double ça ne poserait pas de problème ?
0
develdelphi Messages postés 97 Date d'inscription mercredi 7 avril 2004 Statut Membre Dernière intervention 20 avril 2009
25 mai 2007 à 17:40
Je pense que tu devais mettre des cast
((float)a) * log10(((float)moyenne)/b)+((float)c)

J'ai essayé ce code mais ça ne va pas peut etre parce que moyenne2 est un unsigned long ou car log10 retourne un double j'ai remplaceé tous les types de variables par double ça ne va pas non plus

Apperementil faut caster autrement ??

Merci
0
THEwarrior333 Messages postés 192 Date d'inscription vendredi 19 mars 2004 Statut Membre Dernière intervention 30 janvier 2008
25 mai 2007 à 18:58
OK merci pour le "data", je ne connaissais point
0
nickydaquick Messages postés 416 Date d'inscription vendredi 31 janvier 2003 Statut Membre Dernière intervention 19 décembre 2013 3
5 déc. 2007 à 20:25
Salut,
float b 0.001> (int)b = 0;
attention tu fais une division par 0.

je suis heureux de faire partie d'une grande famille ...!
0