Version imprimable du sujet

Cliquez ici pour voir ce sujet dans son format original

Forums MacBidouille _ Technologies Apple _ programme en C

Écrit par : castafiory 8 Nov 2012, 19:41

bonsoir ,
Mon programme permet d'afficher la somme de la suite S
sans utiliser la fonction pow de la bibliotheque <<math.h>>
avec S=1/2!+2/3!+3^2/4!+....+N^(N-1)/(N+1)!
voila ce que j'ai fait:

#include<stdio.h>
int main()
{int j,i,s,s1,s2,somme,n;
n=1;
s=0;
s1=0;
s2=0;
for (i=1;i<=n;i++)
{
for(j=1;j<i;j++)
s1=j*i;
s2=s2*i;
s=s1/s2;
somme=somme+s;
n++;
}
printf("la somme de la suite est:%d\n",somme);

}

je veux bien que vous m'aider à corriger se programme
Merci à tous



Écrit par : noop 8 Nov 2012, 23:17

as tu essayé de faire tourner ton programme ´a la main ´ ?


Écrit par : castafiory 9 Nov 2012, 01:02

j'ai essaye de le faire a la main mais il y a un problème au niveau du factorielle

Écrit par : audionuma 9 Nov 2012, 09:04

Bonjour,
plutôt que de balancer ton code brut en demandant de l'aide, tu pourrais :
- utiliser une mise en forme un peu plus lisible (indentation par exemple)
- mettre des commentaires pour expliciter ce que tu essayes de faire
- et effectivement prendre en compte le fait que les factorielles croissent très rapidement et te demander pour quel n n! va dépasser la capacité de ton processeur si n! est un int (càd pour quel n n! va être plus grand que le plus grand entier représentable sur ta machine, le plus grand entier représentable valant probablement (2^32 - 1) ou (2^64 - 1) suivant ton processeur)

rien que ça devrait t'aider à améliorer toi même ton code ...

Écrit par : noop 9 Nov 2012, 09:34

Citation (audionuma @ 9 Nov 2012, 09:04) *
Bonjour,
plutôt que de balancer ton code brut en demandant de l'aide, tu pourrais :
- utiliser une mise en forme un peu plus lisible (indentation par exemple)
- mettre des commentaires pour expliciter ce que tu essayes de faire
- et effectivement prendre en compte le fait que les factorielles croissent très rapidement et te demander pour quel n n! va dépasser la capacité de ton processeur si n! est un int (càd pour quel n n! va être plus grand que le plus grand entier représentable sur ta machine, le plus grand entier représentable valant probablement (2^32 - 1) ou (2^64 - 1) suivant ton processeur)

rien que ça devrait t'aider à améliorer toi même ton code ...


+1.

Je ne sais pas qui est son professeur d'informatique, mais il me semble que aucune base de la programmation n'a été enseigné.
C'est ahurissant de voir celà.

Par le passé, l'algorithmique était enseignée avec un pseudo langage dans lequel on met des commentaires !
Code
SI ....
    ALORS......
    SINON
    FINSI
TANT QUE ....
    FAIRE ....
    FAIT

i = i + 1

etc....


Avant de se lancer dans un problème, on le décrit et on fait l'algo. Puis on fait touner l'algo à la main pour vérifier son adéquation au problème.

La traduction de l'algo en langage de programmation n'est qu'un problème de syntaxe et de cuisine. Après il est temps de se pencher sur les problèmes comme cités ci-dessus des débordements de valeur, registre et autre joyeusetés propres à chaque langage.

Écrit par : audionuma 9 Nov 2012, 09:43

À vrai dire, je ne comprends même pas si le but de l'exo est de faire implémenter pow() par l'étudiant, ou bien de manipuler l'expression de la série pour trouver une expression plus simple à implémenter, ou ... ?

Écrit par : Jaypee 9 Nov 2012, 09:54

Pour présenter du code dans le forum, dans une boite avec la barre rose "Code" , il faut utiliser les tags [ code ] et [ /code ] sans les espaces après ou avant les crochets.

Si le code devient long, le lecteur peut le trouver barbant (syndrome du "tl;dr" <=> "Too long; did not read") dans ce cas, pour ramasser un peu la présentation, utiliser le tag [ codebox ] et [ /codebox ]

On colle ensuite le code à présenter entre les tags.

J-P

Écrit par : Jaypee 9 Nov 2012, 10:19

Puisque l'exercice semble de toute évidence destiné à travailler les boucles "for" (indiquées ici puisqu'on parcourt la totalité des indices) l'énoncé en clair c'est calculer:
Somme de i = 1 à n de i à la puissance (i - 1) divisé par factorielle ( i + 1)

Note: Si i vaut 0, i puissance i - 1 = 0^-1 = 1/0 => Boom !

Voici la version détaillée de l'énoncé :

1) Ecrire en utilisant une boucle for les fonctions suivantes :
int puis(int p, int n); /* équivalente de p à la puissance n, avec n >= 0 pour simplifier */
- Tester avec puis(2, 10) == 1024
int fact(int n); /* calcule la factorielle */
- Tester que fact(5) == 120
int somme(int T[], int n); /* calcule la somme des cellules d'un tableau de 0 à n - 1 */
- Tester avec int T[] = { 1, 2, 3} le résultat somme(T, 3) doit être 6

2) Faire une boucle utilisant les fonctions puis et fact pour remplir le tableau : Attention au décalage des indices
Dans la cellule j= 0 à n-1
- Calculer: i = j + 1
- Calculer p = puis(i, i - 1)
- Calculer f = fact(i + 1)
- Calculer le quotient p / f et placer le résultat dans la cellule j du tableau

3) Utiliser la fonction somme(T,n) pour calculer le résultat

Plus détaillé que ça c'est le code lui-même

J-P
PS: Mon tout premier CDD était prof d'informatique pendant 3 mois...

Écrit par : schlum 9 Nov 2012, 12:54

Citation (noop @ 9 Nov 2012, 10:34) *
Je ne sais pas qui est son professeur d'informatique, mais il me semble que aucune base de la programmation n'a été enseigné.
C'est ahurissant de voir celà.


Ou alors ces bases ont été dispensées, et l’étudiant a séché / n’a pas écouté / n’a pas compris / n’est pas fait pour l’informatique…

Ça me paraît étonnant également de voir donnés ce genre d’exercices sans le bagage nécessaire pour les résoudre.

Écrit par : Jaypee 9 Nov 2012, 13:51

A propos de l'exo lui-même : En fait, y'a un piège...
Tout semble être en entier... mais i^(i - 1) / !(i + 1) ce n'est plus de l'entier... faut transformer les entiers en "double".

J'ai tendance à malgré tout encourager les étudiants, parce d'ici dix ans voire moins, on se plaindra de la désertification du paysage des programmeurs. Il n'y aura plus que des chefs de projets certifiés PMP, ou Scrum, mais plus personne pour faire le vrai boulot...

Comme par ailleurs, les lignes bougent toujours, des technos apparemment indétrônables commencent à trembler sur leur piédestal, de nouvelles apparaissent... Y'a du boulot, pour des gens d'expérience, qui ont appris à évoluer dans un monde changeant.

J-P





Écrit par : yponomeute 22 Nov 2012, 00:20

Citation (Jaypee @ 9 Nov 2012, 13:51) *
J'ai tendance à malgré tout encourager les étudiants, parce d'ici dix ans voire moins, on se plaindra de la désertification du paysage des programmeurs. Il n'y aura plus que des chefs de projets certifiés PMP, ou Scrum, mais plus personne pour faire le vrai boulot...

Je dirai que c'est déjà le cas.

Écrit par : chombier 22 Nov 2012, 20:07

Citation (yponomeute @ 22 Nov 2012, 01:20) *
Citation (Jaypee @ 9 Nov 2012, 13:51) *
J'ai tendance à malgré tout encourager les étudiants, parce d'ici dix ans voire moins, on se plaindra de la désertification du paysage des programmeurs. Il n'y aura plus que des chefs de projets certifiés PMP, ou Scrum, mais plus personne pour faire le vrai boulot...

Je dirai que c'est déjà le cas.

C'était mieux aaavaaant ? biggrin.gif

Dans la boite pour laquelle je bosse actuellement, ça Scrumme 1/4 d'heure tous les matins, et y'a pas mal de d'jeuns qui codent, pour la plupart plutôt bien. huh.gif

Écrit par : yponomeute 22 Nov 2012, 22:09

Citation (chombier @ 22 Nov 2012, 20:07) *
Citation (yponomeute @ 22 Nov 2012, 01:20) *
Citation (Jaypee @ 9 Nov 2012, 13:51) *
J'ai tendance à malgré tout encourager les étudiants, parce d'ici dix ans voire moins, on se plaindra de la désertification du paysage des programmeurs. Il n'y aura plus que des chefs de projets certifiés PMP, ou Scrum, mais plus personne pour faire le vrai boulot...

Je dirai que c'est déjà le cas.

C'était mieux aaavaaant ? biggrin.gif

Par expérience personnelle je dirai qu'il était plus facile aaavaaant de trouver des développeurs compétents sur le marché du travail. Le dernier embauché que j'ai cotoyé (et qui n'a pas fait long feu), modifiait les tests unitaires pour qu'ils passent au vert au lieu de corriger le code qu'il avait pondu. Le précédent ne savait pas ce qu'était la récursivité, et tous les deux sont diplômés sortis tout frais d'une école soit disant renommée.
Maintenant ce n'est que mon impression personnelle, peut être qu'avec l'âge je deviens trop exigeant emot_012.gif

Écrit par : chombier 22 Nov 2012, 22:22

Citation (yponomeute @ 22 Nov 2012, 23:09) *
Par expérience personnelle je dirai qu'il était plus facile aaavaaant de trouver des développeurs compétents sur le marché du travail. Le dernier embauché que j'ai cotoyé (et qui n'a pas fait long feu), modifiait les tests unitaires pour qu'ils passent au vert au lieu de corriger le code qu'il avait pondu. Le précédent ne savait pas ce qu'était la récursivité, et tous les deux sont diplômés sortis tout frais d'une école soit disant renommée.
Maintenant ce n'est que mon impression personnelle, peut être qu'avec l'âge je deviens trop exigeant emot_012.gif

Laisse moi deviner... c'est une école qui a fait de la pub à la télé ? biggrin.gif

Écrit par : yponomeute 22 Nov 2012, 22:31

Citation (chombier @ 22 Nov 2012, 22:22) *
Citation (yponomeute @ 22 Nov 2012, 23:09) *
Par expérience personnelle je dirai qu'il était plus facile aaavaaant de trouver des développeurs compétents sur le marché du travail. Le dernier embauché que j'ai cotoyé (et qui n'a pas fait long feu), modifiait les tests unitaires pour qu'ils passent au vert au lieu de corriger le code qu'il avait pondu. Le précédent ne savait pas ce qu'était la récursivité, et tous les deux sont diplômés sortis tout frais d'une école soit disant renommée.
Maintenant ce n'est que mon impression personnelle, peut être qu'avec l'âge je deviens trop exigeant emot_012.gif

Laisse moi deviner... c'est une école qui a fait de la pub à la télé ? biggrin.gif

C'est pas celle-là non, mais c'est du même genre, vivement recommandé par le DRH qui a du être impressionné par la plaquette en papier glacé biggrin.gif
Personnellement ça ne me gêne pas, je suis prestataire pour la boite qui les avait embauchés. Je me dit qu'avec des développeurs de ce niveau là sur le marché, je suis pas près d'être sans travail.

Écrit par : noop 22 Nov 2012, 23:50

ben moi dans ma boite il n'y en a plus. ils sont en inde, egypte ou roumanie.
je suis un des derniers dinosaures.

Propulsé par Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)