Aide sur fonction Delai

Aide sur fonction Delai - C - Programmation

Marsh Posté le 01-10-2006 à 18:30:10    

Pouvez vous m'aider sur un petit probleme en langage C.
 

Citation :

# define N3000  
Void delai (int p)
{
unsigned int temp = 0;
while (p--) while (--temp%N);
}


 
donc j'en es deduit,
 
fonction delai
{ declaration et initialisation d'un entier non signé propre à la fonction delai
tant que p n'est pas egale à 1, decrementer p
decrementation de temp
tant que le reste de la division de temp divisé par N est different de 1 tourner a gauche  
}
 
 
Voilà pouvez vous me corrigé merci ;)

Message cité 2 fois
Message édité par yakameca le 01-10-2006 à 18:30:36
Reply

Marsh Posté le 01-10-2006 à 18:30:10   

Reply

Marsh Posté le 01-10-2006 à 18:44:52    

c'est quoi cette fonction ignoble [:pingouino] ?

Reply

Marsh Posté le 01-10-2006 à 18:47:17    

surtout le double while. Quelqu'un y comprend quelque chose ?

Reply

Marsh Posté le 01-10-2006 à 18:50:20    

bha il se base sur le cycle processeur pour sa sortie de boucle...
franchement intelligent ...

Reply

Marsh Posté le 01-10-2006 à 19:04:00    

yakameca a écrit :


Code :
  1. # define N3000
  2. Void delai (int p)
  3. {
  4.    unsigned int temp = 0;
  5.    while (p--)
  6.       while (--temp%N);
  7. }



J'espère que tu n'as pas écrit cette abomination... Renseigne toi sur sleep(), nanosleep() (Unixoide) ou Sleep() (Windows).
 
C'est pas Void, mais void...


Message édité par Emmanuel Delahaye le 01-10-2006 à 19:05:43

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 01-10-2006 à 19:42:55    

KangOl a écrit :

bha il se base sur le cycle processeur pour sa sortie de boucle...
franchement intelligent ...


Euh, arrêtez-moi si je dis une bétise, mais je pense qu'en plus l'optimiseur aura vite fait de supprimer tout ça. :o

Reply

Marsh Posté le 01-10-2006 à 20:13:52    

Elmoricq a écrit :

Euh, arrêtez-moi si je dis une bétise, mais je pense qu'en plus l'optimiseur aura vite fait de supprimer tout ça. :o


C'est tout à fait possible. Il faudra du 'volatile' pour empêcher ça...


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 01-10-2006 à 21:22:03    

yakameca a écrit :

Pouvez vous m'aider sur un petit probleme en langage C.
 

Citation :

# define N3000  
Void delai (int p)
{
unsigned int temp = 0;
while (p--) while (--temp%N);
}


 
donc j'en es deduit,
 
fonction delai
{ declaration et initialisation d'un entier non signé propre à la fonction delai
tant que p n'est pas egale à 1, decrementer p
decrementation de temp
tant que le reste de la division de temp divisé par N est different de 1 tourner a gauche  
}
 
 
Voilà pouvez vous me corrigé merci ;)

D'abord tu as une erreur, il faut laisser un espace entre N et 3000 sinon, ça ne passe pas à la compile

Citation :

{ declaration et initialisation d'un entier non signé propre à la fonction delai


Ça OK,
 

Citation :

tant que p n'est pas egale à 1, decrementer p

Faux, tant que p n'est pas égal à 0, on décrémente ensuite.
 

Citation :

tant que le reste de la division de temp divisé par N est different de 1

Faux, l'opérateur -- précède l'opérateur %, on décremente temp d'abord puis on prend le modulo N de temp et s'il est égal à 0 on sort de la boucle.  
C'est volontairement mal écrit, c'est le genre d'exercice pour faire croire qu'on connaît le C alors que ça n'a rien à voir. Ce n'est pas parce qu'on ne fait pas de fautes de grammaire qu'on sait écrire en Français correct.
Ce qui se conçoit bien s'énonce clairement, et là ce n'est pas le cas. Et comme le dit Elmoricq, il y a de fortes chances pour que tout ça soit viré par le compilo  :lol:  
Peut-être que le créateur de ce bout de programme voulait faire une attente active de p fois 3000 (3 secondes ?) , mais dans ce cas il aurait fallu mettre temp++ et non pas temp--.
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed