0 Replies - 1055 Views - Last Post: 21 March 2007 - 02:08 PM Rate Topic: -----

#1 endsamsara  Icon User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 16
  • Joined: 24-February 07

How does this program work? processor simulator

Post icon  Posted 21 March 2007 - 02:08 PM

Hi, I'd like to know how the following program work.

#include "stdio.h"
#include "stdlib.h"
#include "conio.h"
#include "graphics.h"
#include "dos.h"

void iniciar_grafica();
void graficar_datos();
void graficar_vectores();

int procesos[4][5]={1,8,2,4,6,
			2,3,8,9,6,
			0,1,2,3,4,
			0,0,0,0,0},procesos_ejecutados[5];

int cpu=5,uso_cpu,mayor,prioridad,i,midx,midy,pid=4,j;
char num[10],c;

int main(void)
{
   clrscr();
   iniciar_grafica();
   midx=getmaxx()/2;
   midy=getmaxy()/2;
   while(1){
	  for(j=0;j<5;j++){
	 graficar_vectores();
	 graficar_datos();
	 cleardevice();
}
   printf("Si deseas salir presiona (s/S) de lo contrario pulsa enter: ");
   scanf("%c", &c);
   if(c=='S'||c=='s')
   {
	  break;
   }
   else
   {
	  j=0;
   }
}
closegraph();
return 0;
}

void iniciar_grafica()
{
   int gdriver = DETECT, gmode, errorcode;
   initgraph(&gdriver, &gmode, "C:\\TC\\BGI");
   errorcode = graphresult();
   if (errorcode != grOk)
   {
   printf("Error de grafica: %s\n", grapherrormsg(errorcode));
   printf("presione una tecla para terminar:");
   getch();
   exit(1);
   }
}

void graficar_datos()
{
   mayor=procesos[0][0];
   prioridad=0;
   //Dibuja la  estructura basica
   circle(midx,midy,80);
   rectangle(10,150,100,450);
   rectangle(540,150,630,450);
   outtextxy(10,50,"ALGORITMO DE PRIORIDAD");
   //verifica el valor mas grande
   for (i=0;i<4;i++)
   {
	  if(mayor<procesos[0][i+1])
	  {
		mayor=procesos[0][i+1];
		prioridad=i+1;
		uso_cpu=procesos[1][i+1];
	  }
   }
   outtextxy(midx-130,80,"Atendiendo al proceso con id= ");
   itoa(procesos[2][prioridad],num,10);
   outtextxy(midx+102,80,num);
   outtextxy(midx-130,90,"con carga de trabajao de ");
   itoa(uso_cpu,num,10);
   outtextxy(midx-5,230,num);
   sleep(uso_cpu);
   procesos[0][prioridad]=rand()%9+1;
   procesos[1][prioridad]=rand()%9+1;
   procesos[2][prioridad]=++pid;
   procesos_ejecutados[prioridad]=uso_cpu;
}

void graficar_vectores()
{
   int k;
   outtextxy(5,460,"Proceso : Prioridad : Uso del CPU");
   for(k=0;k<=4;k++)
   {
	  //Vector Izquierdo
	  itoa(procesos[2][k],num,10);
	  outtextxy(15,175+(k*60),num);
	  itoa(procesos[0][k],num,10);
	  outtextxy(30,175+(k*60),":");
	  outtextxy(50,175+(k*60),num);
	  outtextxy(70,175+(k*60),":");
	  itoa(procesos[1][k],num,10);
	  outtextxy(85,175+(k*60),num);
	  //Vector Derecho
	  itoa(procesos_ejecutados[k],num,10);
	  outtextxy(580,175+(k*60),num);
   }
}



Is there any way to change the numbers of the output (of the program)
for a structure
that contains name of the program , memory used , time of execution, files opened.
"all invented of course!!! "

like :

struct Informacion{
char nombre[50];
char montodememoria[100];
char tiempodecalculo[100];
char archivosabiertos[100];
};

struct Nodo{
struct Informacion info;
struct Nodo *sig;
};

Is This A Good Question/Topic? 0
  • +

Page 1 of 1