#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(); } |