CALCULATEUR DE MOYENNE AU BAC

cs_Kaid Messages postés 949 Date d'inscription mardi 2 octobre 2001 Statut Membre Dernière intervention 8 juillet 2006 - 2 oct. 2002 à 16:27
luciedem Messages postés 1 Date d'inscription mardi 15 avril 2014 Statut Membre Dernière intervention 15 avril 2014 - 15 avril 2014 à 13:03
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/10028-calculateur-de-moyenne-au-bac

luciedem Messages postés 1 Date d'inscription mardi 15 avril 2014 Statut Membre Dernière intervention 15 avril 2014
15 avril 2014 à 13:03
Hello,

Très sympa ton code en cherchant sur le web je suis tombé sur ton article, à vrai dire n'étant pas dans l'informatique je me suis contenté de celui que j'ai trouvé à cette url : http://www.izi-bac.fr/index.php/revisions-bac/simulateur-de-moyenne ;)
BeB3Re Messages postés 24 Date d'inscription dimanche 17 novembre 2002 Statut Membre Dernière intervention 31 mai 2003
24 nov. 2002 à 15:53
le principe est bon mais ta meme oublié dans ta source d'inclure la lib stdlib.h
mais c marrant
cs_Kaid Messages postés 949 Date d'inscription mardi 2 octobre 2001 Statut Membre Dernière intervention 8 juillet 2006 1
3 oct. 2002 à 11:12
Concernant la mémoire, tu déclares un tableau de 20 char*, c'est à dire un tableau de 20 chaines de caractères. Jusque que là c'est ok, mais ensuite, quand tu affectes une valeur à un élément du tableau (par exemple tab[0]), il te manque une allocation mémoire. Dans une "case" du tableau, il n'y a "de la place" que pour un pointeur de char* et non un char*.

#define STR_SAMPLE "Exemple"

char* matieres[20];
matieres[0]=new char [strlen(STR_SAMPLE) + 1];
strcpy(matieres[0], STR_SAMPLE);

// ...

delete [] matieres[0];

Si tu as développé ton programme avec Visual C++, passes en mode release ou utilises un outil comme Purify, l'erreur apparaitra tout de suite.

Dernière chose que j'avais oublié, attention à la comparaison de chaines de caractères. Le test matieres[x]=="0" est faux, c'est une erreur classique, il faut le remplacer par strcmp(matieres[x], "0")==0.
cs_tavernier Messages postés 47 Date d'inscription mardi 1 octobre 2002 Statut Membre Dernière intervention 3 juin 2003
2 oct. 2002 à 21:42
je l'avais en fait deja compilé et executé mais sur un autre ordinateur. Je le retapais donc de mémoire. Ca explique quelques erreurs que j'ai essayé de modifier mais que voulez-vous dire en ce qui concerne l'allocation de mémoire ?
cs_GoldenEye Messages postés 527 Date d'inscription vendredi 14 septembre 2001 Statut Membre Dernière intervention 6 octobre 2008 4
2 oct. 2002 à 17:03
L'intention est louable et je t'en félicite. Mais la réalisation n'est pas encore parfaite (voir remarques de Kaid). De plus les conditions d'arrêt des boucles for me semblent douteuses.
Mais on peut faire encore plus condensé ! A vos compilateurs !
cs_Kaid Messages postés 949 Date d'inscription mardi 2 octobre 2001 Statut Membre Dernière intervention 8 juillet 2006 1
2 oct. 2002 à 16:27
Euh tu as essayé de compiler / d'exécuter ta source avant de la publier ? Car

- Variable i non déclarée
- On passe de la variable "matiere" à la variable "matière"
- Ne pas spécifier le type de retour d'une fonction équivaut à supposer que la fonction retourne un entier (alors que "main" ne retourne rien)
- Prototype main() faux
- Manque une allocation mémoire au niveau de la saisie des matières.
Rejoignez-nous