2014-10-16 2 views
0

C#에서 SSTF 알고리즘을 계산하기위한 콘솔 프로그램을 작성하고 있습니다. 나는 디스크 컨트롤러 나 운영체제를위한 SSTF 알고리즘을 쓰지 않는다. 값이 합계에 추가되는 마지막 줄에서 컴파일러는 index 변수에 대한 오류를 제공하므로 while 루프 전에 index 변수를 선언했지만 컴파일러는 여전히 오류를보고합니다.C#으로 콘솔에서 sstf 알고리즘을 계산합니다.

static void Main(string[] args) 
{ 
    List<int> tracks = new List<int>(); 
    Console.WriteLine(" enter the current track"); 
    int key = Convert.ToInt32 (Console.ReadLine()); 

    Console.WriteLine("enter the tracks's number and -1 to end."); 
    int track = Convert.ToInt32(Console.ReadLine()); 
    while(track != -1) 
    { 
     tracks.Add(Convert.ToInt32(track)); 
     track = Convert.ToInt32(Console.ReadLine()); 
    } 
    int sum=0; 
    int count_of_tracks = tracks.Count; 
    int distance; 
    int minmum; 
    int first; 
    int index; 

    while (tracks.Count != 0) 
    { 
     first = tracks[0]; 

     if (key > first) 
      minmum = key - first; 

     else 
      minmum = first - key; 

     for (int j = 1; j <= count_of_tracks; j++) 
     { 
      if (key > tracks[j]) 
      { 
       distance = key - tracks[j]; 

       if (minmum > distance) 
       { 
        minmum = distance; 
        index = j; 
       } 
      } 
      if (key < tracks[j]) 
      { 
       distance = tracks[j] - key; 

       if (minmum > distance) 
       { 
        minmum = distance; 
        index = j; 
       } 
      } 
     } 

     sum = sum + (key - tracks[index]); 
     tracks.RemoveAt(index); 
    } 

    int seek_time = sum/count_of_tracks;   
} 
+0

그냥 완성도 : 당신이 컴파일러 오류 메시지를 포함 할 수 귀하 문제? – helb

답변

1

index에는 절대 값이 지정되지 않을 수도 있습니다. 컴파일러 행복하게 기본값을 지정하려면 :

int index = -1; 

제대로 당신이 뭔가를 필요로 그것을 처리 할 경우

if(index >= 0) 
{ 
    sum = sum + (key - tracks[index]); 
    tracks.RemoveAt(index); 
} 
else 
{ 
    // Show/log error ... 
}