Programme somme - C - Programmation
Marsh Posté le 01-05-2010 à 16:50:06
Deja tu devrais initialiser S à 0 sinon t'auras pas ce que tu veux (enfin t'auras la somme + la valeur initiale à cet endroit de la mémoire ...)
Le nombre d'instructions est 2 (somme + retour), mais la somme est execute m-n fois .
Après tu peux eviter de te servir de i, puisque il te suffit d'incrementer n jusqu'à <= m .
Pour la question sur la "classe de mémorisation", je comprend pas ce que tu veux dire, (enfin plus exactement j'ai peur que tu fasses une confusion avec de la poo)
Pour pouvoir inverser, il te suffit de faire une recherche du max des deux avant.
Marsh Posté le 01-05-2010 à 18:04:04
Merci pour ta réponse
Oui effectivement j'ai oublié d'initialiser s à 0.
Le programme était à trou, donc je pense que j'étais obligée d'introduire i. Mais c'est vrai que c'est pas mal d'incrémenter n !
Je ne sais pas ce que c'est que la poo à part la signification en anglais XD
Ensuite pour pouvoir inverser, on me parle de rajouter une instruction, sans variable supplémentaire et sans modifier les autres instructions :s Apparemment c'est spécifique au langage C, mais je vois vraiment pas.
Est-ce que la boucle est comptée comme une instruction ? Ou même ce qu'il y a dans la boucle ? Puisque ça finit par un ;
Merki encore
Marsh Posté le 01-05-2010 à 18:06:08
Ah vi, est-ce que en C, un booléen vaut 0 ou 1, ou bien est-ce que ce sont des TRUE ou FALSE ?
Marsh Posté le 02-05-2010 à 18:40:50
Les booléens n'existent que en C99. Donc c'est toi qui choisis comment les représenter.
Dans une boucle for, le dernier "argument" (ici i++) est une instruction oui (réécris le avec un while pour compter plus facilement le nombre d'instructions)
Est ce que tu peux réexpliquer plus clairement cette phrase : "- est-ce que l'indicateur de classe de mémorisation par défaut pour une variable locale est bien "auto" ? " ????
Marsh Posté le 02-05-2010 à 19:00:50
La question exacte c'est "quel est l'indicateur de classe de mémorisation (ici par défaut) de s ?" s, qui est une variable locale
Marsh Posté le 02-05-2010 à 19:26:25
belettete a écrit : La question exacte c'est "quel est l'indicateur de classe de mémorisation (ici par défaut) de s ?" s, qui est une variable locale |
Oui. Sa portée est le bloc au sein duquel elle est déclarée.
Marsh Posté le 02-05-2010 à 20:05:58
Yep, mais dans ce cas, l'indicateur c'est quoi (indicateur = static, ou d'autres choses)
Marsh Posté le 01-05-2010 à 11:38:49
Bonjour,
Bon ça peut paraître vraiment bête comme questions, mais j'suis pas informaticienne de formation...
On a un programme :
int somme(int n, int m){
int s ..., ... ;
for (...) ... ;
return ... ;
}
qui retourne la somme des entiers compris entre n et m.
- quel est le nombre d'instructions ? Je dirais 3, mais je ne suis pas sûre
- si on suppose que n<m, compléter.
Alors j'ai beaucoup de mal quant à la disposition des points des "trous" : j'aurais mis
int s, i ;
for (i=n; i<=m; i++) s+=i ;
return s ;
dans le corps de la fonction
mais justement dans la première ligne, ça ne correspond pas au "trou". Suis-je partie sur la mauvaise piste ?
- quelles sont les variables locales ? s et i, non ?
- est-ce que l'indicateur de classe de mémorisation par défaut pour une variable locale est bien "auto" ?
- est-ce que c'est possible de le remplacer par static pour la variable s ? A mon avis oui, mais je ne sais pas quoi dire quand on demande ce que ça change pour la suite...
- quelle instruction rajouter pour que la fonction soit commutative ? En d'autres termes, quelle ligne rajouter pour que le programme soit valable, que n soit inférieur ou supérieur à m ?
Ca fait beaucoup de questions, mais si vous pouvez m'aider sur seulement quelques-unes d'entre elles, ça m'aidera déjà pas mal...
Merci !
P.S. : j'espère que c'est ici qu'il faut poster, et pas en section aide aux devoirs... (et je précise, c'est une annale, pas un truc que je dois rendre ^^)
---------------
今日事,明日毕