Recours par cours

horny

Elite
parce que pour la matrice il fallait initialiser pour obtenir l'infini

J'ai montré mon code à un ingénieur en informatique qui m'a dit que c'était correct 1/0 en C

Voici les liens des preuves que l'on peut initialiser des variables à 1/0

http://stackoverflow.com/questions/1923837/how-to-use-nan-and-inf-in-c
http://www.gnu.org/software/libc/manual/html_node/Infinity-and-NaN.html
Faut tout lire :D Oui tu peux le faire ... mais ça peut renvoyer une erreur qu'il faudra intercepter et c'est à toi de coder en conséquence
"When a calculation produces any of these values, an exception also occurs; see FP Exceptions."

Il faut faire comme conseillé par les réponses ayant le plus de vote positif et TOUJOURS (c'est parfois très chiant mais ça permet d'éviter des résultats différents en fonction des compilateurs et de l'OS) regarder la documentation des fonctions que tu utilises

Donc ce que tu fais est vraiment faux et tu ne peux pas contester à ce niveau
 

[Clad]

Manipulateur de bits
Dans un but de formation d'un étudiant je ne pense pas que mettre 0/100 soit le plus pédagogique possible.

Ok pour bien lui baisser les points en lui faisant un retour clair sur ce qui a cloché surtout si l'étudiant insiste afin qu'il s'améliore, mais pas la peine de le faire redoubler pour cela.

Après reste à voir ton comportement/motivation toute l'année.
 

horny

Elite
1. Ecris toujours en anglais

2.
//définition des fonctions
Ce sont des déclarations
Les définitions c'est ce que t'as mis en bas de ton code

3.
int InfinitySolutions=0;//1=existence d'un nombre infini de solutions
int SolutionInfinie=0;//1=existence d'une solution infinie
Que représente 0 ? Que représente une valeur différente de 0 et 1 ?

Pour plus de clarté tu pourrais simplement mettre 0 = true, 1 = false, vu que j'imagine que tu l'utilises comme booléen

4.
DataSimplex.NbrVarEcarts=0;DataSimplex.NbrVarExcedants=0;DataSimplex.NbrVarArtificielles=0;
Completement illisible ... une ligne par instruction c'est beaucoup plus clair
Tu peux te permettre ce que tu fais pour des compteurs dans une boucle par exemple
int i, j, k = 0;

(i j k sont des noms usuel pour ce genre de fonctions donc on comprend directement l'instruction)

5.
DataSimplex.MatRowNumber=DataSimplex.NbrContraintes+3;//3 lignes en plus car la ligne 0 est la fonction économique,la dernière est zj-cj et l'avant-dernière zj
Pas de commentaire à rallonge sur le côté
Si c'est justifié de mettre un commentaire si long, c'est bien de faire un petit bloc juste au dessus
Là mon browser est en plein écran et je dois encore déplacer le texte vers la gauche pour pouvoir lire tout le commentaire
Il y a généralement encore moins d'espace dans un environnement de programmation

6.
Se donner une limite de nombre de caractère par ligne de code (voir point 5)
(on donne 80 caractères, car c'était historiquement justifié, mais je trouve ça un peu ridicule vu les machines qu'on utilise actuellement ... moi personnellement je monte jusque 100 pour faire un compromis)

7.
Utiliser des espaces plutôt que des tabulations (suivant l'environnement utilisé pour lire ton code, les tabulations seront traduites de différentes façons)

8.
Essayer d'aérer le code
Je pense que c'est assez personnel dans le style, mais moi je préfère voir une séparation entre les opérateurs et les opérandes par exemple:
a=b+c;
a = b + c;

(je ne sais pas quel style est préféré par les professionnels, les conventions, etc, mais moi je trouve la deuxième méthode beaucoup plus lisible)

Tu peux aussi regrouper certaines lignes de codes qui vont ensemble en les entourant d'une ligne vide :

truck1.color= "orange";
truck1.nbWheels = 4;
truck1.brand= "volvo";

truck2.color= "rouge";
truck2.nbWheels = 4;
truck2.brand= "volvo";

car.color= "noir";
car.nbWheels = "5";
car.brand= "audi";


9.
Être consistant avec le style choisi (le point 8 par exemple ... soit on utilise la première méthode, soit la deuxième, mais pas un mixe des deux)

10.
if(SigneContrainte>0) {DataSimplex.NbrVarExcedants++;puts("");DataSimplex.NbrVarArtificielles++;};
Si tu veux faire un if sur une seule ligne, alors il ne doit y avoir qu'une seule instruction dans ton bloc

Personnellement, je compose toujours un bloc, quel que soit le nombre d'instruction après la condition
Je justifie cette pratique par le fait qu'un code peut être modifié, et qu'une instruction supplémentaire devant se faire suivant la condition devra de toute façon nécessiter un bloc
Autant ne pas emmerder le programmeur à devoir changer toute la ligne en créant directement le bloc qu'il pourrait éventuellement créer plus tard
Si la taille du code sera plus importante, le résultat de la compilation, lui, restera inchangé

11.
{ //nombre de colonnes du tableau
Wut ? Il correspond à quoi ce commentaire ?
Comment ça se fait que tu doives ajouter un commentaire pour dire ça ? Le nom de tes variables doivent être explicites autant que possible

12.
fclose(InputFile); // On ferme le fichier qui a été ouvert
Éviter les commentaires inutiles
'fclose' est suffisant pour comprendre ce que ça fait
Si ce n'est pas le cas, un simple '//close file' aurait été suffisant

13.
Identation correcte : par exemple dans le main on se retrouve sans indentation, ce qui laisserait croire qu'on est en dehors du 'scope' de main

14.
Toujours donner une description (documentation) d'une fonction que tu définis


Voilà pour ce que je vois sans essayer de comprendre ton code (juste la présentation sans le contenu, quoi)

Je te conseille ce lien si tu veux apprendre à coder proprement
https://www.cs.arizona.edu/~mccann/style_c.html
 
  • J'aime
Les réactions: SpY_
1er
OP
D

dav1994

Elite
Merci
est-ce que le programme compile chez vous ?
 

horny

Elite
Merci
est-ce que le programme compile chez vous ?
Pour ce qui est de tester le programme complet ... faudrait déjà avoir les fichiers que tu ouvres dedans
 

gregsting

Chat!
Sauf que ton boss/client il veut un truc qui tourne et pas forcément un beau code.
Ou pas... un truc qui compile pas, c'est généralement simple à corriger, un code dégueulasse c'est une autre histoire. Après si ton client ne regarde pas ton code c'est un autre histoire...
 

horny

Elite
Ou pas... un truc qui compile pas, c'est généralement simple à corriger, un code dégueulasse c'est une autre histoire. Après si ton client ne regarde pas ton code c'est un autre histoire...
Et quand c'est les deux, alors ? Quand ça compile pas et que c'est dégueulasse :D
 
"Je viens de me faire licencier, j'ai installé un soft chez le client il ne fonctionne pas, pourtant ça compile et ça tourne sur mon PC. S'il vous plait appelez les syndicats pour me sauver ..."

Plus sérieusement. Accepte que t'as fait une erreur et assume, sinon tu risques encore de te prendre quelques fois une gamelle dans la vie ... Tout le monde en prend, mais avec une mentalité "du déni" pareille, t'es voué à l'échec.
 
1er
OP
D

dav1994

Elite
Le recours ne passe pas. Pour eux, le programme doit compiler sur n'importe quel compilateur ...
 

Dieu Bisounours

Créateur de Dieu
Le recours ne passe pas. Pour eux, le programme doit compiler sur n'importe quel compilateur ...
En soi, ce n'est pas faux. Attends leur réponse officielle et regarde si un recours externe est possible (l'externe est souvent plus souple).
 

eGm_

Gibon Blasé
ctrl + k + d ca fonctionne sous un IDE C ? ^^
 

YoupiDollarZ

Je suis un ananas
+1 pour le recours externe.

S'ils n'ont pas spécifié visual burne, je vois pas ou est le mal
 
1er
OP
D

dav1994

Elite
J'ai été convoqué chez le directeur, il m'a expliqué que ça ne passait pas et m'a rendu le rapport.
Il était indiqué comme motif : recours recevable mais non fondé, aucune irrégularité constatée
 
Haut