cs_Kaid
Messages postés949Date d'inscriptionmardi 2 octobre 2001StatutMembreDernière intervention 8 juillet 2006
-
2 oct. 2002 à 16:27
luciedem
Messages postés1Date d'inscriptionmardi 15 avril 2014StatutMembreDernière intervention15 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.
BeB3Re
Messages postés24Date d'inscriptiondimanche 17 novembre 2002StatutMembreDernière intervention31 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és949Date d'inscriptionmardi 2 octobre 2001StatutMembreDernière intervention 8 juillet 20061 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*.
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és47Date d'inscriptionmardi 1 octobre 2002StatutMembreDerniè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és527Date d'inscriptionvendredi 14 septembre 2001StatutMembreDernière intervention 6 octobre 20084 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és949Date d'inscriptionmardi 2 octobre 2001StatutMembreDernière intervention 8 juillet 20061 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.
15 avril 2014 à 13:03
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 ;)
24 nov. 2002 à 15:53
mais c marrant
3 oct. 2002 à 11:12
#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.
2 oct. 2002 à 21:42
2 oct. 2002 à 17:03
Mais on peut faire encore plus condensé ! A vos compilateurs !
2 oct. 2002 à 16:27
- 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.