CIMSA

Foro de la Comunidad Informatica Mayor de San Andres, postea cualquier duda que tengas.
 
ÍndicePortalFAQGrupos de UsuariosRegistrarseConectarse

Compartir | 
 

 SSTF planificación de discos (c++)

Ver el tema anterior Ver el tema siguiente Ir abajo 
AutorMensaje
Robert.exe



Cantidad de envíos: 72
Fecha de inscripción: 14/07/2008
Edad: 24

MensajeTema: SSTF planificación de discos (c++)   Lun Nov 24, 2008 8:15 pm

Este algoritmo lo que hace es dadas una serie de pistas...busca las que esten mas cerca del cabezal y las atiende primero... por ejemplo si yo tngo las pistas 98, 183, 37, 122, 14, 124, 65, 67 y el cabezal o pista inicial esta en la 53... entonces el orden en q las pistas se atenderían es: 65, 67, 37, 14, 98, 122, 124, 183.


Código:
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <iostream.h>
#include <graphics.h>
#include <ctype.h>
#include <stdlib.h>
#include "c:\tc\bin\mamabru\ventanas.h"
#include "c:\tc\bin\mamabru\esctexto.h"

int pista[40],n, indice;
int pista_inicial;
int buscar(int inicial);
void ordena();
void Flecha1(int x, int y){
    int i, j;
    int bitmap[5][9]={
    15,15,15,15,1,15,15,15,15,
    15,15,15,1,15,1,15,15,15,
    15,15,1,15,15,15,1,15,15,
    15,1,15,15,15,15,15,1,15,
    1,15,15,15,15,15,15,15,1
    };
    for(i=0;i<5;i++)
      for(j=0;j<9;j++)
       putpixel(y+j,x+i,bitmap[i][j]);
}
void Flecha2(int x, int y){
    int i, j;
    int bitmap[9][5]={
    1,15,15,15,15,
    15,1,15,15,15,
    15,15,1,15,15,
    15,15,15,1,15,
    15,15,15,15,1,
    15,15,15,1,15,
    15,15,1,15,15,
    15,1,15,15,15,
    1,15,15,15,15
    };
    for(i=0;i<9;i++)
      for(j=0;j<5;j++)
       putpixel(y+j,x+i,bitmap[i][j]);
}
void EjeXY(){
  int i, j;
  char num[3];
  setfillstyle(1,15);
  bar(0,0,639,479);
  VentanaBarraTitulo("Gr fico de SSTF",4,4,632,472,7,1,15);
  Contenedor(7,32,630,470);
  VentanaTexto(11,36,628,468);
  setcolor(1);
  Flecha1(47,66);
  Flecha2(416,599);
  line(70,440,70,50);
  line(50,420,600,420);
  settextstyle(8,1,2);
  outtextxy(15,160,"Pistas");
  settextstyle(8,0,2);
  outtextxy(350,430,"x");
  j=400;
  settextstyle(2,0,2);
  for(i=2;i<=40;i+=2){
      itoa(i,num,10);
      outtextxy(55,j,num);
      j-=18;
  }
  j=85;
  settextstyle(2,0,2);
  for(i=1;i<=19;i++){          //------
      itoa(i,num,10);
      outtextxy(j,425,num);
      j+=20;
  }
}
void DrawLine(){
  int i, j;
  setlinestyle(0,0xffff,3);
  setcolor(RED);
  moveto(70,420-pista_inicial*9);
  j=1;
  for(i=indice;i>=1;i--){
      lineto(70+j*20,420-pista[i]*9);
      j++;
  }
  moveto(70+indice*20,420-pista[1]*9);
  for(i=indice+1;i<=n;i++){
      lineto(70+i*20,420-pista[i]*9);
  }
  Comentario("Para salir de la ventana digite cualquier tecla...!",150,454,0);
  setlinestyle(0,0xffff,1);
}
void intro()
{    int i,j;
  int sw,pivote,t, posy;
  char num[10], pist[20];
  VentanaBarraTitulo("Algoritmo de SSTF...",99,49,539,429,7,1,15);
  Contenedor(104,79,534,424);
  Comentario("Digite el Numero de Pistas:",150,85,0);
  BarraTexto(410,85,450);
  EscribeTextoBarra(num,410,85,450);
  n=atoi(num);
  Comentario("Digite los Pistas:",190,100,0);
  posy=130;
    for(i=1;i<=n;i++)
    {
   itoa(i,num,10);
   strcpy(pist,"Pista ");
   strcat(pist,num);
   Comentario(pist,200,posy,0);
   BarraTexto(290,posy,330);
   EscribeTextoBarra(pist,290,posy,330);
   pista[i]=atoi(pist);
   if(posy<420)posy+=20;
    }
    getch();
    VentanaBarraTitulo("",150,330,489,440,3,3,3);
    Contenedor(155,335,484,435);
  Comentario("Digite Pistas Inicial:",190,365,8);
  BarraTexto(400,365,440);
  EscribeTextoBarra(num,400,365,440);
  Comentario("Digite una tecla para ver grafico..!",160,415,0);
    pista_inicial=atoi(num);
    //k=pista_inicial;
    ordena();
    indice=buscar(pista_inicial);
//    printf("%d \n",indice);
    pivote=pista[indice];
    j=indice;sw=0;
      t=0;
      for(i=1;i<=n-1;i++)
      {
       if((i==indice)||(sw==1))
       {    j=j+1;
       t=t+abs(pivote-pista[j]);
       pivote=pista[j];
       }
       else
       {  j=j-1;
         t=t+(pivote-pista[j]);
         pivote=pista[j];
         if(j==1)
         {
      sw=1; j=indice;
      }
       }

      }
      itoa(t,num,10);
      strcpy(pist,"El Tiempo es: ");
      strcat(pist,num);
      strcat(pist," t.");
      Comentario(pist,190,385,8);
      getch();
      getch();
}
void  ordena()
{  int i,j,aux;
  for(i=1;i<=n-1;i++)
  {  for(j=i+1;j<=n;j++)
      {
    if(pista[i]>pista[j])
    {    aux=pista[i];
       pista[i]=pista[j];
       pista[j]=aux;
    }
      }
  }
  /* for(i=1;i<=n;i++)
  { printf("%d  ", pista[i]);
  }
  getch();*/
}
int buscar(int inicial)
{
  int i, c;
    for(i=1;i<=n;i++)
    {  if(inicial==pista[i])
      {  c=i;
      }
    }

return(c);
}
void main()
{ clrscr();
  int a=0,b=0;
  initgraph(&a,&b,"c:\\tc\\bgi");
  intro();
  EjeXY();
  DrawLine();
  getch();
  closegraph();
}
Volver arriba Ir abajo
Ver perfil de usuario
 

SSTF planificación de discos (c++)

Ver el tema anterior Ver el tema siguiente Volver arriba 
Página 1 de 1.

 Temas similares

-
» Lo Mejor de la Musica Infantil - 6 Discos
» Lista de DVD´S KARAOKES DISCOS FUENTES
» vendo faja zif para discos de 1.8
» Los discos duros no se montan automaticamente (Solucionado)
» Aumento considerable en la velocidad de discos USB

Permiso de este foro:No puedes responder a temas en este foro.
CIMSA :: Categoria Académica :: 5to Semestre :: INF-151-