Partiel de C++ - C - Programmation
Marsh Posté le 26-05-2007 à 13:23:18
Première chose, il faudrait savoir si c'est un partiel de C ou de C++.
Marsh Posté le 26-05-2007 à 13:38:09
déjà ouais. en partant sur le C :
"tydedef" à la place de "typedef"
"elemt" à la place de "elmt"
bool n'existe pas en C (faire un faux bool avec int/char).
pour epaisseur() passer un pointeur est plus économique (sinon recopie sur la pile en principe, et const parceque tu modifies pas la structure), donc epaisseur( const elmt *Element );
juste "return A.ep"; (Element->ep avec la remarque précédente)
Marsh Posté le 26-05-2007 à 14:02:10
Alors, c'est pour un cours de C a la base mais le prof a tendance à mettre quelques commande en C++.
Pour la definition du type, "typedef struct" c'est dans mon cours. Et puis elemt ou elmt ne change rien vu que c'est le nom du type, le nom n'influence rien.
Pour info, je n'avais pas encore vu les pointeurs, les structures sont iteratives.
Merci !
Marsh Posté le 26-05-2007 à 16:10:06
bin c'est des mauvaises tendances
pour le reste c'est juste des fautes de frappe (bon c'est le genre de truc que tu fais facilement sur un bout de papier sans pouvoir compiler, donc c'est pas dramatique)
par contre j'ai oublié de te faire la remarque avec:
double epaisseur (elmt A)
{
...
elmt A; (elemt )
...
}
forcément ça marche poa
Marsh Posté le 26-05-2007 à 17:35:14
je me doute bien mais je me contente de faire comme le prof dit lol
si j'avais mis :
double epaisseur (elmt A) {
return A.epaisseur;
}
ca n'aurait pas encore été plus simple ?
Marsh Posté le 26-05-2007 à 19:09:37
complètement. (par contre le coup du elmt A en paramètre et en variable locale à la fonction ça compile pas)
Marsh Posté le 26-05-2007 à 22:03:31
l'element A appartient a une collection d'element defini dans un type element
Marsh Posté le 27-05-2007 à 13:42:54
Je me permet de vous embeter pour la suite.
La 3 eme question etait de founir un sous programme permettant de connaitre l'ecart d'epaisseur entre deux elements (valeur positive ou negative)
Voici ce que j'ai fait :
double difference_epaisseur (Elemt A, Elemt B)
{
double D;
D = A.epaisseur - B.epaisseur;
return D
}
J'attend l'avis des pros !
Marsh Posté le 27-05-2007 à 14:25:35
il manque le ; après le return.
Sinon tu aurais pu faire return A.epaisseur - B.epaisseur directement
Marsh Posté le 27-05-2007 à 15:00:40
correct, j'adore me compliquer la vie ! lol
pour la 4 eme, je dois cette fois pouvoir changer l'epaisseur
Voici mon idée :
void changer_epaisseur (Elemt A)
{
double E;
cout<<"entrez l'epaisseur :";
cin>>E;
A.epaisseur = E;
}
Marsh Posté le 27-05-2007 à 17:27:59
ReplyMarsh Posté le 27-05-2007 à 17:41:40
qu'entend tu par la gestion d'erreur ? je suis dsl je dois vous paraitre minable lol cela dit c pas faux, l'info et moi fais vraiment 10 ! mais pas le choix !
Marsh Posté le 27-05-2007 à 17:45:47
juste qu'en fonction de ce que l'utilisateur tape, ca peu partir en sucette (s'il ne rentre pas un chiffre par exemple)
Marsh Posté le 27-05-2007 à 18:07:01
ReplyMarsh Posté le 27-05-2007 à 18:18:42
si l'utilisateur entre "rienafoutredeserreurs" ca va pas partir en torche ?
Marsh Posté le 27-05-2007 à 19:24:36
Mac-H1 a écrit : correct, j'adore me compliquer la vie ! lol |
cout et cin, c'est du C++, on s'éloigne vraiment d'un cours de C.
Marsh Posté le 27-05-2007 à 19:26:00
malheureusement c'est pourtant ce que j'ai vu en cours... et je vous assure que ca fait bien partie d'un cours de C.
Content gaetan, je passe a la suite ! lol
Marsh Posté le 27-05-2007 à 19:39:41
bon en même temps, on peut supposer que c'est pour éviter de causer pointeur dans un premier temps. question d'approche dans la formation.
Marsh Posté le 27-05-2007 à 22:17:30
oui par apprendre les choses proprement. C'est quoi ton école que j'evite d'y envoyer mes gamins pkus tard ?
Marsh Posté le 28-05-2007 à 10:57:24
ReplyMarsh Posté le 28-05-2007 à 11:00:45
did-54 a écrit : hey du calme, il dit qu'il est en école de méca... |
moi en ecole d'info, on avait des cours de droit mais ils étaient néanmoins correct.
Même si ce n'est aps sa formation initiale, ca n'empeche que les cours doivent etre correct
Marsh Posté le 28-05-2007 à 11:04:56
Merci did !
du droit j'en fais aussi l'ami ! par contre je doute que tu fasse de la meca...
et puis je demande de l'aide, pas des remarque du genre ! merci de ton aide mais elle est inutile si tu viens me pourrir de remarque semblable. Ce n'est pas moi qui fait les cours, s'il y a quelqu'un a critiquer, c'est le prof ! On a 5 mois pour avoir des notions, je pense qu'il doit choisir.
Enfin quoi qu'il en soit je dois m'y faire et l'important est de valider le module !
J'espère que certains seront tout de même d'accord pour m'aider.
Marsh Posté le 28-05-2007 à 11:36:54
Mac-H1 a écrit :
|
vaut mieux pour toi que tu ne t'aventures pas sur ce genre d'arguments ad hominem
Même sous couvert de n'avoir que 6 mois, ca ne le dispense pas de faire un cours correct...
le mélange C/C++ sans réel articulation est un vrai drame, je passe assez de temps à reformer des
stagiaires passés apr ce genre de formations pour savoir que c'est néfaste.
Sinon, pour en revenir à ta question - histoire d'etre constructif - tu pourrais poster ttes les questions d'un coup, histoire de voire la ou il veut en venir ?
Marsh Posté le 28-05-2007 à 12:00:35
t'as fait quoi comme école Joel ?
Marsh Posté le 28-05-2007 à 12:52:13
Les arguments ad hominem ne sont pas forcement des insultes, ne te met pas sur la defensive, un etudiant en info ne fais pas toujours de la méca . J'ai pour habitude de ne pas me laisser repprocher des choses inutilement et puis faire de l'info en ecole de meca est à peu pres aussi souvent benefique que l'inverse, je pense que tu comprendra !
Cela dit je suis assez d'accord, j'ai essaye de me mettre au C seul et son cours est complètement different. Quoiqu'il en soit, je dois m'y faire !
Je vous post le partiel complet sous peu, je vais le scanner.
Marsh Posté le 28-05-2007 à 12:57:45
les voici
http://img502.imageshack.us/my.php [...] 135ig2.jpg
http://img145.imageshack.us/my.php [...] 915if9.jpg
a noter que je n'utilise pas les pointeurs ds ce partiel
merci bcp !
et comme ça Joel tu pourras dire qu'à l'ensmm les cours d'info sont pas top
Marsh Posté le 28-05-2007 à 13:58:25
did-54 a écrit : t'as fait quoi comme école Joel ? |
Rien de fulgurant : l'ISIMA de Clermont-FErrand (www.isima.fr).
Mais bon, on y fait de bon cours de génie log et de prog C/C++
@MAC-H1
J'ai regardé vite fait, vla une correction possible du probleme.
Trois versions, histoire d'etre didactique :
1/ une version pure C;
2/ une version pure C++;
3/ une version "ENSMM" vu que ton prof n'a pas parlé de pointeurs (ni de references), c'est probablement le code qu'il(elle) attend même si c'est uber-moche.
/!\ j'enjoins les lecteurs hors ENSMM de s'en tenir au version 1 et 2 /!\
Partie A :
Version 1
Code :
|
Version 2
Code :
|
Version 3
Code :
|
Pour la Partie B, qu'as tu vu en cours comme type 'collection' ?
les tableaux styles tab[N], les tabelaux dynamiques avec malloc/free ou new/delete ? les std::vector ?
Ensuite, je te donne une correction pour la partie B.
Marsh Posté le 28-05-2007 à 15:33:31
y'a glissade sur le type de retour element_set_epaisseur() je suppose ?
Marsh Posté le 28-05-2007 à 19:36:45
Pour la question A3, on ne peut pas juste appeler l'epaisseur de l'element A et B par quelquechose comme A.epaisseur - B.epaisseur au lieu d'appeler une autre fonction ?
Marsh Posté le 28-05-2007 à 21:43:42
oui, j'ai juste copier/coller la soluce C++.
Toujours mieux de s'appuyer sur des accesseurs qu'acceder aux membres directement.
Marsh Posté le 28-05-2007 à 22:57:10
Ca roule, j'essaye de faire la suite et si tu veux bien, tu me dira ce qu'il en est.
J'ai vu tout ce que tu m'a demandé sauf les std::vector mais après ce partiel. Je comprend d'ailleurs pas comment j'ai pu le rater... j'ai vraiment bien fais de faire de la mécanique !
Marsh Posté le 03-06-2007 à 14:38:33
Salut à tous,
desole pour l'absence, j'ai eu vraiment plein de choses a faire ces jrs ci. Concernant le partiel, merci beaucoup à tous pour votre aide. J'ai fait la fin et ai reussi à croiser le prof pour qu'il me corrige tout ça. Visiblement, rien de bien complique. Je dois revenir sur quelques details mais rien d'affolant, je devrai m'en sortir.
Par contre maintenant, je me retrouve avec un projet d'info. Et cette fois, ce sont les listes chainée qui sont a l'honneur.
en effet, je dois representer une matrice creuse. En clair je dois creer une matrice en fonction de ce que l'utilisateur rentrera comme données puis faire des operations.
si l'un d'entre vous a des idées, qu'il n'hesite pas, elles seront les bienvenues.
merci d'avance
Marsh Posté le 26-05-2007 à 13:06:30
Salut à tous !
Je me permets de vous demander vos service car, ayant beaucoup de mal à obtenir la logique de l'informatique, je persiste en travaillant, refaisant même les partiels ratés ! (il est à noter que je suis en école de mécanique, ce qui pourra légèrement justifier mon manque de compétence en info)
Nous avons eu un partiel qui posait un probleme d'assemblage d'elements. il fallait simuler des assemblages d'elements porteurs.
Deux elements etaient possible : avec ou sans pieds.
Chaque element est caracterisé par sa longeur, son epaisseur et s'il ont ou non des pieds.
La premiere question est de definir un type permettant de modeliser un element
Voici ce que j'ai fait :
tydedef struct elmt
{
double lgeur;
double ep;
bool pied;
}elmt;
Pour le coup, je pense que c'est bon, vos avis ?
2eme question, et la je doute déja plus de mon sous programme, trop simple me semble t il. Il fallait ici ecrire un sous programme fournissant l'epaisseur d'un element donné
Voici ce que je propose :
double epaisseur (elmt A)
{
double E;
elemt A;
E = A.ep;
return E;
}