Hola, me gustaria saber como funciona este programa.
#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);
}
}
Hay alguna forma de cambiar los numeros por una estructura de datos
que funcione igual pero que muestre nombre del proceso, monto de memoria tiempo de calculo archivos abiertos, "inventados porsupuesto"
struct Informacion{
char nombre[50];
char montodememoria[100];
char tiempodecalculo[100];
char archivosabiertos[100];
};
struct Nodo{
struct Informacion info;
struct Nodo *sig;
};