les fonctions - C++ - Programmation
Marsh Posté le 03-11-2014 à 21:43:58
Salut, qu'est ce que tu ne comprend pas, plus précisément
Alors déjà, tu as ces variables globales :
Code :
|
Il s'agit a chaque fois de tableaux a 2 dimension.
Ce qui me semble déjà bizare, c'est que ton énoncé parle de 12 étudiants, alors que le tableau proposé en a 7.
"On se propose l’automatisation de la gestion des examens du parcours MIPC à la FSTG, On se limite par la réalisation sur machine à 12 étudiants mais la gestion porte sur 3 semestres, un étudiant est décrit par : CNE, Nom et Prénom. Un module est définit par son identification et un étudiant obtient 4 notes par semestre . Chaque note correspond à la note finale obtenue par module. L’objectif de cette étude est d’affecter automatiquement aux cinq meilleurs étudiants une formation de filière d’ingénierie"
Ce que je te propose c'est déjà de définir des constantes sur les nombres dans l'énoncé, comme cela :
Code :
|
J'ai pris le nombre d'étudiants a partir de ce qui est suggeré par le code, mais comme ca on pourra le changer.
Ensuite vienne les variables globale dont je parlais plus haut.
Code :
|
Ensuite, il va falloir définir les différentes fonctions de ton programme, par exemple prise_En_Charge()
Code :
|
Tu fais pareil pour chaque fonctions demandé, et c'est bon
Si t'as plus de questions, hésite pas
(Ton code a l'air d'être du C, si c'est du C++ dit le)
Marsh Posté le 04-11-2014 à 09:46:51
Bonjour
Je complète la réponse, même si, visiblement, le code posté vient DIRECTEMENT DU PROF (le petit commentaire avec le good luck).
Pour information, pour les fonctions, il faut qu'elles soient au moins déclarées (et non définies) avant le premier appel.
Donc en déclaration préalable (je préfère cette forme)
Code :
|
ou alors (je trouve ça moins joli, maintenable, évolutif, etc...) mais bon
Code :
|
D'ailleurs visiblement dans l'énoncé, on ne met pas en place les bonnes pratiques tout de suite : les constantes numériques doivent être déclarées sous forme de macro (les #define).
En plus perso, je déteste les variables globales. C'est pas propre, on ne "voit" pas qui les utilise facilement et ça ne marche pas en multi-thread (ou très mal).
Même si c'est visiblement hors sujet, quitte à revoir les structures des variables, je pense qu'il faut aller au bout et utiliser les structures/énum. En effet faire 3/4 tableaux me parait peu lisible/maintenable.
Code :
|
On a aussi le pb du scanf (j'ai toujours cru comprendre qu'il fallait utiliser fgets/sscanf).
Bon courage, et commence à faire l'algo, car c'est ça le but de l'énoncé.
Marsh Posté le 04-11-2014 à 11:49:40
dreameddeath a écrit : |
Faut voir aussi si ca à été vu dans son cours, si c'est son premier exo avec des fonctions il n'a probablement aucune idée de ce qu'est une structure ou une enum.
Marsh Posté le 04-11-2014 à 12:34:58
@khoyo, Je pense comme toi C'est bien pour cela que j'ai mis "même si c'est visiblement hors sujet" et dans une deuxième partie de message ... Mais je me disais qu'un peu d'ouverture d'esprit ne fait pas de mal , sachant que ce n'est même pas le but de l'exo visiblement.
Maintenant, je ne sais pas si c'est pour apprendre le C ou de l'algo.
Mais pour moi, dans les deux cas c'est bancal :
* si l'exercice veut faire travailler le C, il faut mettre en place les bonnes pratiques dès le départ (constantes, structures de données pas adaptées) et sur des choses simples (la boucle while avec aucune gestion des erreurs de saisies, pas d'init des variables, pas de mélange de pb de saisie, d'affichage, d'algo - boucles, etc...) ==> ce n'est pas le cas
* Si c'est de l'algo, on peut pas dire que le C soit le langage le plus adapté (gestion mémoire avec les pbs de débordement tableau etc, structure de données très bas niveau - pas de liste, ... - ) et l'aspect algorithmique n'est pas mis en exergue (surtout avec une étape fastidieuse de gestion de la saisie en pré-requis )...
Mais bon courage quand même...
Marsh Posté le 04-11-2014 à 13:07:58
dreameddeath a écrit : En effet faire 3/4 tableaux me parait peu lisible/maintenable. |
Et pourtant, c'est une pratique qui peut offrir des avantages. C'est déjà pas mal débattu (cherche soa vs aos si ca te tente)
Marsh Posté le 04-11-2014 à 13:59:27
J'ai probablement été un peu "violent" en parlant de "peu" lisible/maintenable. Je voulais dire moins lisible/maintenable...
Je sais bien que dans certains cas spécifiques, on peut optimiser à l'aide telles présentations de données (structure de tableau - SOA).
A ma connaissance, on a 2 cas possibles :
- la mémoire : l'alignement mémoire des données peut faire perdre pas mal de place
- la gestion vectorielle : les instructions vectorielles fonctionnent sur des tableaux de type de données de bases (entiers/flottants) et donc les tableaux de structures ne peuvent pas les exploiter
On est quand même sur des techniques avancées pour ceux qui maitrisent tout le reste et sur des cas d'optimisation (cf le dicton : Premature optimisation is the root of all evil)
En plus, le SOA nécessite une batterie de fonctions utilitaires plus "structurée/subtile" pour maintenir la consistance des données. Faire un tri est quand même sioux en SOA ...
Mais on est dans des cas à la marges et pour l'informatique de "gestion", on est dans 99% des cas à préférer pouvoir facilement rajouter une variable ou changer la structure globale (passage de tableau à liste chainée ou table de hash, etc...) qu'à pouvoir exploiter des instructions vectorielles/optimiser la mémoire par ce biais (l'allocation dynamique pour les chaines sera en moyenne bien plus efficace en gain mémoire que des optimisations basées sur l'alignement)...
Mais j'ai peut-être loupé une explication/raison...
Marsh Posté le 04-11-2014 à 14:27:19
dreameddeath a écrit : |
Malheureusement, dans beaucoup de formations (sauf, en général, les prépas, qui font souvent du Caml), le C est le langage choisi en premier langage. C'est dommage, mais c'est comme ca
Marsh Posté le 04-11-2014 à 14:34:50
dreameddeath a écrit : A ma connaissance, on a 2 cas possibles : |
Sans même vectoriser, tu gagnes pas mal de performances à grouper les données que tu manipules ensemble. Si le coeur de ton programme par la suite, ca va être de faire des moyennes de notes sur tous les élèves, ca a du sens de grouper ca dans un tableau dédié plutôt que de répartir les notes chez chacun. Tout est question de cas d'utilisation et pour le compromis avec la lisbilité, c'est aussi au cas par cas. Je voulais juste insister sur le fait que ce n'est pas une pratique satanique pour autant.
Marsh Posté le 24-10-2014 à 22:13:05
bns notre prof nous a demande de resolu cette exercice "On se propose l’automatisation de la gestion des examens du parcours MIPC à la FSTG, On se limite par la réalisation sur machine à 12 étudiants mais la gestion porte sur 3 semestres, un étudiant est décrit par : CNE, Nom et Prénom. Un module est définit par son identification et un étudiant obtient 4 notes par semestre . Chaque note correspond à la note finale obtenue par module. L’objectif de cette étude est d’affecter automatiquement aux cinq meilleurs étudiants une formation de filière d’ingénierie"
#include<stdio.h>
#include<stdlib.h>
// ici c'est les variables globales (en dehors du main) :
char cin[7][41];
char nom[7][41];
char prenom[7][41];
char module[12][41];
float notes [12][7];
/*
Vous définissez vos fonctions ici, et vous travaillez avec
les variables globales qui sont au-dessus .Good Luck ^^
*/
int main()
{
int input;
do {
printf( "1. Prise en charge\n" );
printf( "2. Liste des etudiants\n" );
printf( "3. Moyenne par etudiant\n" );
printf( "4. Moyenne par module\n" );
printf( "5. Cinq meilleurs étudiants\n" );
printf( "6. Quitter l'application\n" );
printf( "Selection: " );
scanf( "%d", &input );
switch ( input ) {
case 1:
//prise_En_Charge();
break;
case 2:
//afficher_Liste();
break;
case 3:
//calcul_Moyenne_Par_Etudiant();
break;
case 4:
//calcul_Moyenne_Par_Module();
break;
case 5:
//cinq_Meilleurs_Etudiants();
break;
case 6:
printf( "Merci d'avoir choisi notre application\n" );
break;
default:
printf( "erreur de saisi\n" );
break;
}
}while(input!=6);
}
c'est la 1ere exercice pour moi pour utiliser les fonctions
svp aidez moi a faire la prise en charge des informations du base et merci