| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 123
 124
 125
 126
 127
 128
 129
 130
 131
 132
 133
 134
 135
 136
 137
 138
 139
 140
 141
 142
 143
 144
 145
 146
 147
 148
 149
 150
 151
 152
 153
 154
 155
 156
 157
 158
 159
 160
 161
 162
 163
 164
 165
 166
 167
 168
 169
 170
 171
 172
 173
 174
 175
 176
 177
 178
 179
 180
 181
 182
 183
 184
 185
 186
 187
 188
 189
 190
 191
 192
 193
 194
 195
 196
 197
 198
 199
 200
 201
 
 | #include <iostream>  //inclusion de fichier
#include <iomanip>
#include "GL/contGL/glut.h"
using namespace std;  //utilisation du namespace std
const int MAXTAILLECHAINE = 16; //taille max des chaines
//variable qui va contenir le nombre d'eleves
int NBELEVES;
//structure eleve
struct eleve 
{
	char nom[MAXTAILLECHAINE];  // Nom de famille de l'élève
	char prenom[MAXTAILLECHAINE];   // prenom de l'eleve
    float moyenne;  //moyenne de l'eleve
};
eleve *tab = NULL;   //tableau d'eleves declare global
void saisieeleve (eleve & param);		
//********************
//saisie d'un eleve
//*********************
void saisieeleve (eleve & param)    {
	cout << "entrez le nom : ";
	cin >>param.nom;  
	/*saisie du prenom*/
	cout <<"entrez le prenom : ";
	cin>>param.prenom;  //on saisit la chaine du prenom
	/*saisie de la moyenne*/
	cout<< "entrez la moyenne : ";
	cin>>param.moyenne;
	
	//system("pause");   //pause
}
void GraphiqueRedim();
void GraphiqueRedim(int x, int y)  {
	glViewport(10,10,x-20,y-20);
	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();
	gluOrtho2D(0.0,100.0,0.0,100.0);
}
void GraphiqueAffichage();
void GraphiqueAffichage()
{
	//definit la couleur de fond
	glClearColor(1.0, 1.0, 1.0, 1.0);
	//efface l'ecran
	glClear(GL_COLOR_BUFFER_BIT);
	glMatrixMode(GL_MODELVIEW);
	//toutes les instructions d'
	// affichage sont a placer ici
	glColor3d(0.0,0.0,0.0);  //passe en couleur noire
	//commence l'affichage d'une ligne brisee
	glBegin(GL_LINE_STRIP);
	//place tous les points
	for (int i=0; i<NBELEVES; i++)
		glVertex2d(i, tab[i].moyenne);
	//termine la ligne brisee
	glEnd();
	glFlush();  //Fin de l'affichage
}
void graphique();  //declaration
void graphique()  //definition
{  /*creation de la fenetre*/
	glutInitWindowPosition(10,10);  //position de la fenetre
	glutInitWindowSize(640, 480);  // taille de la fenetre
	// type d'affichages
	glutInitDisplayMode(GLUT_RGBA);
    glutInitDisplayMode(GLUT_SINGLE);
	//affichage de la fenetre
	glutCreateWindow("graphique");	/*gestion du graphique*/
	//specifie les fonctions 
	//d'affichage....
	glutDisplayFunc(GraphiqueAffichage);
	//.. de redimensionnement
	glutReshapeFunc(GraphiqueRedim);
	//lance la boucle de traitement GLUT
	glutMainLoop();
}
void main (void)
{  
tab= new eleve[NBELEVES];
cout<< "ecrivez le nomre d'eleves"   <<endl;
	cin >> NBELEVES; //l'utilisateur entre la taille
	// si l'allocation n'est pas possible,
	//arret du programme
	
	if (tab == NULL) { 
		cout << "erreur lors de l'allocation" 
			<< " du tableau d'eleves"<< endl;
		exit (0); 
	}
	//parcours des eleves un par un
    for (int i=0; i<NBELEVES; i++)
    {
		saisieeleve(tab[i]);  //Appel de la fonction de saisie
		
	}
	//cout<< "Fin de la saisie des "<< NBELEVES
	//	<< "eleves"<<endl;
	//system("pause");  //pause
	
	//variable de bouclage initialisee a vrai
	bool boucler = true;
	//repete le menu tant que "boucler" est vrai
	while (boucler)
	{
		//*************************
		//gestion du menu
		//*************************
		cout << "*****Menu******"<<endl;
		cout << "1-afficher la classe"<<endl;
		cout << "2-modifier un eleve"<<endl;
		cout <<"3-afficher le graphique"<<endl;
		cout << "4-quitter le programme"<<endl;
		int choix;
		cout <<"Entrez votre choix: ";
		cin >> choix;   //saisie du choix de l'utilisateur
		//choix correct exige
		while (!(choix >=1 && choix <= 4))  {
			cout << "choix incoorect ! "
					<<"veuilez le saisir a nouveau : ";
			cin>>choix; 
		}
	
		system("cls"); // efface le contenu de la console
	
		//commutateur pour traiter chaque cas
		switch(choix)  {
			case 1 : {	
				cout<< "1 -afficher la classe"<<endl;
				for (int i=0; i<NBELEVES; i++)
				cout <<setfill(' ')
				     << setw(2)<< i+1 <<":"
					 <<setw(20)<< tab[i].nom
					 <<setw(20)<< tab[i].prenom
					 <<setw(20)<< tab[i].moyenne<<endl; 
				break;
					 }
				
			case 2 : 
			{
				cout << "2 - modifier un eleve" <<endl;
				// saisie du numero de l'eleve
				cout << "entrez le numero de l'eleve: ";
				int num; cin >> num;
				//en cas de saisie de numero incorrect
				while (!(num>=1 && num<= NBELEVES)) {
					cout<< "incorrect ! "
					<< "veuillez entrer un numero juste : ";
				    cin>>num;
				}
				
				 // Appel de la fonction avec l'eleve d'indice num-1
					 saisieeleve (tab[num-1]);
					 break;
			}
			case 3 : {cout << " 3 - Afficher le graphiique"
							<<" "<<endl;
					graphique();
					break;
			}
			case 4 : {cout << "4 - quitter le programme"<< endl;
				     // le programme ne reviendra pas dans la boucle
					 boucler = false; 
					break;}
		}  //fin du commutateur switch
	}  //fin de la boucle while du menu
	
} | 
Partager