Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
726 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Partiel de C++

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

Partiel de C++

n°1565564
Mac-H1
Posté le 26-05-2007 à 13:06:30  profilanswer
 

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;
          }

mood
Publicité
Posté le 26-05-2007 à 13:06:30  profilanswer
 

n°1565567
matafan
Posté le 26-05-2007 à 13:23:18  profilanswer
 

Première chose, il faudrait savoir si c'est un partiel de C ou de C++.

n°1565572
bjone
Insert booze to continue
Posté le 26-05-2007 à 13:38:09  profilanswer
 

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)


Message édité par bjone le 26-05-2007 à 13:46:54
n°1565581
Mac-H1
Posté le 26-05-2007 à 14:02:10  profilanswer
 

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 !

n°1565612
bjone
Insert booze to continue
Posté le 26-05-2007 à 16:10:06  profilanswer
 

bin c'est des mauvaises tendances :D
 
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 :D)
...
}
 
forcément ça marche poa


Message édité par bjone le 26-05-2007 à 16:15:21
n°1565633
Mac-H1
Posté le 26-05-2007 à 17:35:14  profilanswer
 

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 ?


Message édité par Mac-H1 le 26-05-2007 à 17:40:44
n°1565667
bjone
Insert booze to continue
Posté le 26-05-2007 à 19:09:37  profilanswer
 

complètement. (par contre le coup du elmt A en paramètre et en variable locale à la fonction ça compile pas)

n°1565703
Mac-H1
Posté le 26-05-2007 à 22:03:31  profilanswer
 

l'element A appartient a une collection d'element defini dans un type element ;)

n°1565757
bjone
Insert booze to continue
Posté le 27-05-2007 à 02:15:57  profilanswer
 

heu ? :D

n°1565812
Mac-H1
Posté le 27-05-2007 à 13:42:54  profilanswer
 

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 !

mood
Publicité
Posté le 27-05-2007 à 13:42:54  profilanswer
 

n°1565822
did-54
Posté le 27-05-2007 à 14:25:35  profilanswer
 

il manque le ; après le return.
Sinon tu aurais pu faire return A.epaisseur - B.epaisseur directement :)

n°1565830
Mac-H1
Posté le 27-05-2007 à 15:00:40  profilanswer
 

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;
        }
 

Message cité 1 fois
Message édité par Mac-H1 le 27-05-2007 à 17:25:56
n°1565840
gocho
Posté le 27-05-2007 à 16:07:57  profilanswer
 

tu declares un double E, mais tu utilises D ...  :D

n°1565862
Mac-H1
Posté le 27-05-2007 à 17:26:25  profilanswer
 

tu disais ?  :D  
 
 
c'est juste ?

n°1565863
did-54
Posté le 27-05-2007 à 17:27:59  profilanswer
 

c'est juste, la gestion d'erreurs en moins :)

n°1565869
Mac-H1
Posté le 27-05-2007 à 17:41:40  profilanswer
 

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 !

n°1565870
did-54
Posté le 27-05-2007 à 17:45:47  profilanswer
 

juste qu'en fonction de ce que l'utilisateur tape, ca peu partir en sucette :) (s'il ne rentre pas un chiffre par exemple)

n°1565881
KangOl
Profil : pointeur
Posté le 27-05-2007 à 18:07:01  profilanswer
 

did-54 a écrit :

c'est juste, la gestion d'erreurs en moins :)


non, il modifie une variable locale ...

n°1565887
did-54
Posté le 27-05-2007 à 18:18:42  profilanswer
 

si l'utilisateur entre "rienafoutredeserreurs" ca va pas partir en torche ?

n°1565897
KangOl
Profil : pointeur
Posté le 27-05-2007 à 18:33:54  profilanswer
 

si ...

n°1565922
bjone
Insert booze to continue
Posté le 27-05-2007 à 19:24:36  profilanswer
 

Mac-H1 a écrit :

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;
        }
 


 
 
cout et cin, c'est du C++, on s'éloigne vraiment d'un cours de C.

n°1565923
Mac-H1
Posté le 27-05-2007 à 19:26:00  profilanswer
 

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  

n°1565931
bjone
Insert booze to continue
Posté le 27-05-2007 à 19:39:41  profilanswer
 

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.

n°1565957
KangOl
Profil : pointeur
Posté le 27-05-2007 à 21:02:11  profilanswer
 

mais totalement stupide ...

n°1565965
Mac-H1
Posté le 27-05-2007 à 21:33:33  profilanswer
 

faut bien commencer par qqch  :sweat:

n°1565975
Joel F
Real men use unique_ptr
Posté le 27-05-2007 à 22:17:30  profilanswer
 

oui par apprendre les choses proprement. C'est quoi ton école que j'evite d'y envoyer mes gamins pkus tard ?

n°1566055
did-54
Posté le 28-05-2007 à 10:57:24  profilanswer
 

hey du calme, il dit qu'il est en école de méca...

n°1566058
Joel F
Real men use unique_ptr
Posté le 28-05-2007 à 11:00:45  profilanswer
 

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 :o

n°1566063
Mac-H1
Posté le 28-05-2007 à 11:04:56  profilanswer
 

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.

Message cité 1 fois
Message édité par Mac-H1 le 28-05-2007 à 11:07:00
n°1566075
Joel F
Real men use unique_ptr
Posté le 28-05-2007 à 11:36:54  profilanswer
 

Mac-H1 a écrit :


du droit j'en fais aussi l'ami ! par contre je doute que tu fasse de la meca...

 

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 ?


Message édité par Joel F le 28-05-2007 à 11:37:17
n°1566088
did-54
Posté le 28-05-2007 à 12:00:35  profilanswer
 

t'as fait quoi comme école Joel ?


Message édité par did-54 le 28-05-2007 à 12:00:45
n°1566113
Mac-H1
Posté le 28-05-2007 à 12:52:13  profilanswer
 

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.


Message édité par Mac-H1 le 28-05-2007 à 13:23:07
n°1566118
Mac-H1
Posté le 28-05-2007 à 12:57:45  profilanswer
 

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 ;)


Message édité par Mac-H1 le 28-05-2007 à 12:59:05
n°1566134
Joel F
Real men use unique_ptr
Posté le 28-05-2007 à 13:58:25  profilanswer
 

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 :
  1. /*
  2.     version C
  3.     Question A.1.
  4. */
  5. typedef struct elt
  6. {
  7.   int epaisseur;
  8.   int longeur;
  9.   int presence_pieds;
  10. } element;
  11. /* Question A.2. */
  12. int element_get_epaisseur( const element* e )
  13. {
  14.   return e->epaisseur;
  15. }
  16. /* Question A.3. */
  17. int element_diff_epaisseur( const element* a, const element* b)
  18. {
  19.   return element_get_epaisseur(a) - element_get_epaisseur(b);
  20. }
  21. /* Question A.4. */
  22. void element_set_epaisseur( element* elt, int e)
  23. {
  24.   elt->epaisseur = e;
  25. }
 

Version 2

Code :
  1. // version C++
  2. // Question A.1.
  3. class element
  4. {
  5.   public:
  6.   element( int e, int l, bool p )
  7.   : epaisseur(e), longeur(l), presence_pieds(p) {}
  8.   private:
  9.   int epaisseur;
  10.   int longeur;
  11.   bool presence_pieds;
  12. };
  13. // Question A.2.
  14. int element::getEpaisseur() const
  15. {
  16.   return epaisseur;
  17. }
  18. // Question A.3.
  19. int diff_epaisseur( const element& a, const element& b)
  20. {
  21.   return a.getEpaisseur() - b.getEpaisseur();
  22. }
  23. // Question A.4.
  24. void element::setEpaisseur(int e)
  25. {
  26.   epaisseur = e;
  27. }
 

Version 3

Code :
  1. /*
  2.     version C
  3.     Question A.1.
  4. */
  5. typedef struct elt
  6. {
  7.   int epaisseur;
  8.   int longeur;
  9.   int presence_pieds;
  10. } element;
  11. /* Question A.2. */
  12. int element_get_epaisseur( const element e )
  13. {
  14.   return e.epaisseur;
  15. }
  16. /* Question A.3. */
  17. int element_diff_epaisseur( element a, element b)
  18. {
  19.   return element_get_epaisseur(a) - element_get_epaisseur(b);
  20. }
  21. /* Question A.4. */
  22. /* cette question, sans pointeur, n'a pas de raison d'exister, à part
  23. pour faire 1000000 de copies ... mais bon ... */
  24. element element_set_epaisseur( element a, int e)
  25. {
  26.   element elt;
  27.   elt.longeur= a.longeur;
  28.   elt.epaisseur = e;
  29.   elt.presence_pieds= a.presence_pieds;
  30.   return elt;
  31. }
 

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.


Message édité par Joel F le 28-05-2007 à 21:44:41
n°1566223
bjone
Insert booze to continue
Posté le 28-05-2007 à 15:33:31  profilanswer
 

y'a glissade sur le type de retour element_set_epaisseur() je suppose ?

n°1566232
Joel F
Real men use unique_ptr
Posté le 28-05-2007 à 15:37:07  profilanswer
 

mauvais C+P, je corrige ;)

n°1566354
Mac-H1
Posté le 28-05-2007 à 19:36:45  profilanswer
 

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 ?

n°1566410
Joel F
Real men use unique_ptr
Posté le 28-05-2007 à 21:43:42  profilanswer
 

oui, j'ai juste copier/coller la soluce C++.  
Toujours mieux de s'appuyer sur des accesseurs qu'acceder aux membres directement.

n°1566430
Mac-H1
Posté le 28-05-2007 à 22:57:10  profilanswer
 

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 ;) !

n°1569287
Mac-H1
Posté le 03-06-2007 à 14:38:33  profilanswer
 

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 :)
 

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Partiel de C++

 

Sujets relatifs
[C#] [Résolu] Comment communiquer avec une dll c++[C] Des accolades "just pour le fun" ?
Partiel de programmation (C++)ki pourrait me corriger vite fait deux exos d'un partiel sur pascal
Doublons dans un affichage partiel d'un résultat SQLImport/export partiel d'une BDD
[Partiel]Est ce qu'un mec cool pourrait m'aider à faire ça ?Urgent - Besoin d'aide pour un partiel
[mysql-php] importation partiel de base de donnéeBouton parcourir avec VB6 [URGENT - PARTIEL IMMINENT]
Plus de sujets relatifs à : Partiel de C++


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR