Histogramme en mouvement mode graphique turbo c++2

Description

Genere des nombres aleatoirement et en fait des graphiques en mouvement

Source / Exemple :


//  PROGRAMME EN C SOUS DOS TURBO C++2 BORLAND
//  ecrit le 30-06-2002 par cmarsc
//  GRAPHIQUE EN HISTOGRAMME MODE GRAPHIQUE

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <time.h>
#include <string.h>
#include <dos.h>

#define COUL_CADRE  CYAN
#define MAXI  300
#define N_BARRES  12

enum reponse1  { NON,OUI };

int main(void) {

	int gdriver = DETECT, gmode, errorcode;

	int i,x;
	int y1[N_BARRES], reponse[N_BARRES];
	int graph1[N_BARRES], graph1_precedent[N_BARRES];
	char texte[N_BARRES][5];

	initgraph(&gdriver, &gmode, "c:\\tc\\bgi");

	errorcode = graphresult();
	if (errorcode != grOk)
	{
		printf("Graphics error: %s\n", grapherrormsg(errorcode));
		printf("Press any key to halt:");
		getch();

	  exit(1);
	}

	srand( (unsigned) time(NULL) );
	memset(texte, '\0', N_BARRES);

	// initialiser a zero
	for (i = 0; i < N_BARRES; i++) {
	  y1[i] = 0;     reponse[i] = OUI;
	  graph1[i] = 0; graph1_precedent[i] = 0;
	}

	 // grand cadre
	 setfillstyle(1,COUL_CADRE);
	 bar (1, 00,getmaxx(), 355);

	 setcolor(BLACK);
	 rectangle(2 ,20 , getmaxx()-1,355 );

	 setcolor(WHITE);
	 rectangle(1 ,22 , getmaxx(),356+00 );

	 settextstyle(SMALL_FONT, HORIZ_DIR, 5);
	 sprintf(texte[0],"Projections des ventilations : 2003");

	 // effet d'ombre
	 setcolor(BLACK);
	 outtextxy(180 ,1,texte[0]);

	 // texte en rouge
	 setcolor(RED);
	 outtextxy(181 ,1,texte[0]);

	 // elargir le texte en longueur * 3 et en hauteur * 10
	 setusercharsize(3, 1,10, 1);

	 setfillstyle(1,CYAN);
	 bar (1,375,getmaxx() , getmaxy()-15);
	 setcolor(YELLOW);
	 rectangle (1,375,getmaxx() , getmaxy()-15);

	 setcolor(LIGHTCYAN);
	 sprintf(texte[0],"APPUYEZ SUR UNE TOUCHE POUR QUITTER");
	 outtextxy(12 ,360,texte[0]);

	 setcolor(BLACK);
	 // faire un effet 3D
	 for (i = 0; i < 2;i++)  {
	 outtextxy(13 +i,360+i,texte[0]);
	 }

while( !kbhit() ) {
						// x = 52  ecart entre les barres
  for (i = 0, x =  5 ; i < N_BARRES; i++, x +=52) {

	 // determiner la hauteur de la barre
	 if (reponse[i] == OUI) {

		// garder la valeur de graph1[i] precedente
		graph1_precedent[i] =  graph1[i];
		graph1[i] = (rand() % MAXI) +1;

		// effacer le chiffre en blanc sous la barre
		setfillstyle(1, COUL_CADRE);
		bar (15 + x,333 , 50 + x,350 );

		// convertir le nombre tire
		sprintf(texte[i],"%3d",graph1[i]);

		// afficher ce nombre sous la barre
		settextstyle(SMALL_FONT, HORIZ_DIR, 6);
		setcolor(BLACK);
		outtextxy(15 + x,331,texte[i]);

		setcolor(WHITE);
		outtextxy(16 + x,332,texte[i]);

	 }

	 if ( graph1[i] > graph1_precedent[i]) {

		 // faire monter la barre
		 if (y1[i] < graph1[i]) {

			 y1[i]++;  reponse[i] = NON;

		 } else if (y1[i] == graph1[i]) {

			  // choisir un autre chiffre
			  reponse[i] = OUI;
		 }

	 } else {

		 // faire descendre la barre
		 y1[i]--;    reponse[i] = NON;
		 if (y1[i] == graph1[i] || y1[i] <= 0 )  reponse[i] = OUI;
	 }

	 setcolor(COUL_CADRE);
	 rectangle(8 + x ,326 - y1[i] , 52 + x,327- y1[i] );

	 // dessiner les 2 traits sur les cotes

	 // trait rouge vif a gauche
	 setcolor(LIGHTRED);
	 rectangle(8 + x,330 - y1[i] , 9 + x,330 );

	 // barre au milieu en rouge
	 setcolor(RED);
	 rectangle(10 + x,330 - y1[i] , 50 + x,330 );

	 // trait noir a droite
	 setcolor(BLACK);
	 rectangle(51 + x,330 - y1[i] ,52 + x,330 );

   } // fin de for (i)

  } // fin de while

   closegraph();
   return 0;

} // fin de main

Conclusion :


// PROGRAMME EN C SOUS DOS TURBO C++2 BORLAND
// ecrit le 30-06-2002 par cmarsc
// GRAPHIQUE EN HISTOGRAMME MODE GRAPHIQUE

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.