Pb en language C

Fermé
Elodie - 4 déc. 2002 à 09:46
 pascal - 4 déc. 2002 à 14:24
J'aurai vraiment de votre aide. J'ai un programme en language C à faire et je n'y comprends rien!!!
Je dois le présenter à l'oral.
Si quelqu'un pouvait m'aider ça serait très sympa!!!
Merci d'avance!

Suite de Syracuse

La suite de Syracuse de base a est la suite récurrente définie par :

u0 = a
un+1= un/2 si un est pair
un+1= (3un + 1)/2 si un est impair



On constate que cette suite finit toujours par atteindre la valeur 1 (après quoi elle prend alternativement les valeurs 1 et 2), et on considère toujours la suite finie
qui se termine par 1. Par exemple, pour a = 7 :


n 0 1 2 3 4 5 6 7 8 9 10 11
un 7 11 17 26 13 20 10 5 8 4 2 1




1.Ecrire une fonction Syracuse( ), avec un paramètre a, qui calcule la suite de Syracuse de base a. Exemple d'exécution :

Syracuse( 7 ) = 7, 11, 17, 26, 13, 20, 10, 5, 8, 4, 2, 1


2.Copier la fonction précédente , et transformer la copie en une fonction maximum Syracuse, avec un paramètre a, qui calcule le "point culminant" atteint par
la suite de Syracuse de base a. Exemple d'exécution :

maximumSyracuse( 7 )=26



3.Ecrire une fonction longueurSyracuse, avec un paramètre a, qui calcule le nombre de termes de la suite (finie) de Syracuse de base a. Exemple d'exécution :

LongueurSyracuse(7)=12

4.Ecrire une fonction mms, avec un paramètre n, qui calcule la valeur de a ? n pour laquelle la suite de Syracuse de base a "monte le plus haut possible" ; la
procédure calculera aussi la hauteur de ce point culminant. Exemple d'exécution :

mms(100)=27, 4616



5.Ecrire une fonction mms, avec un paramètre n, qui calcule la valeur de a ? n pour laquelle la suite de Syracuse de base a est la plus longue possible ; la
procédure calculera aussi cette longueur maximale. Exemple d'exécution :



lms(100)=97, 76

Ecrire un programme qui retourne Syracuse( ),maximum Syracuse( ), LongueurSyracuse( ), lms( ) et mms( ).

Les pièces à fournir seront les suivantes :
1 - Le code source de l'application programmée en langage C. Cette application devra tourner sur les machines de l?université en vue d'une démonstration.

2 - Un court descriptif de votre application contenant :

2.1 : La décomposition fonctionnelle des principales fonctions.

2.2 : Le mode d'emploi de votre application.

2.3 : Des commentaires explicatifs, des idées d'amélioration et tout ce qui vous semble aider à la compréhension de votre démarche.

4 réponses

teebo Messages postés 33491 Date d'inscription jeudi 14 octobre 2004 Statut Modérateur Dernière intervention 24 février 2011 1 793
4 déc. 2002 à 10:05
Bon, et tu coinces ou?

ö,ö  "Il est plus facile de donner des conseils
\_/    que de les appliquer"
0
Le problème c'est que je suis nouvelle dans cette école et je n'avais jamais fait de language c auparavant.
Donc je ne sais pas faire grand chose.
0
teebo Messages postés 33491 Date d'inscription jeudi 14 octobre 2004 Statut Modérateur Dernière intervention 24 février 2011 1 793
4 déc. 2002 à 10:35
OK, alors je preconise :
Lis ca : http://www.commentcamarche.net/c/cintro.php3
Lances toi
Et quand tu bloques, poses une question precise...
Honnetement, je ne pense pas que ce soit un cadeau a te faire de le faire pour toi...surtout que le probleme n'est pas demesure...
Bon courage...

ö,ö  "Il est plus facile de donner des conseils
\_/    que de les appliquer"
0
Bon! le probléme n'est vraiment pas difficile mais
si tu n'as jamais fait de C tu risque d'avoir du mal.
je vais donc t'aiguiller dans la bonne voie.
la suite de syracuse peut être transcrit par une boucle
telle que celle ci:

while(nb<1)
if(nb%2==0)
nb/=2;
else
nb=(nb*3+1)/2;

- Pour le max de la suite tu pourrait par exemple utilisé
une variable max que tu inclurais dans ta boucle
avec une ligne qui pourrais resembler à:
if (nb>max) max=nb;
(Rq: n'oublie pas d'initialiser max)

- Pour le nombre d'itération de ta suite utilise un compteur
que tu incrémente à chaque boucle (ligne i++;).

je te laisse chercher pour mms et lms mais la méthode est la même
(le tout est de trouver la bonne ligne à inclure dans ta boucle).

pour plus d'info n'hesite pas...
0