2017-02-22 50 views
0

我需要幫助編寫一個程序,該程序需要三個單獨字段的學生信息(ID Number, first name, last name)。然後,根據last name字段按字母順序對錶格進行排序。用戶將輸入學生數據,然後我希望它將last name數據分成兩個桶,然後將其置於氣泡排序中。我無法將數據添加到單獨的存儲桶中。使用字符串作爲值在C#中編寫桶排序

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace _123_Assignment2 
{ 
    using System; 
    using static System.Console; 
    class Program 
    { 
     struct student 
     { 
      public int studentId; 
      public string firstName; 
      public string lastName; 
     }; 

     static void Main(string[] args) 
     { 
      student[] studentInfo = new student[20]; 
      string[] bucketLow = new string[0]; 
      string[] bucketHigh = new string [0]; 
      int x = 0; 
      int y = 0; 

      WriteLine("Enter student ID number:"); 
      studentInfo[x].studentId = Convert.ToInt32(ReadLine()); 

      while (studentInfo[x].studentId != 999)     
      { 
       WriteLine("Enter first name:"); 
       studentInfo[x].firstName = ReadLine(); 
       WriteLine("Enter last name:"); 
       studentInfo[x].lastName = ReadLine(); 
       x++; 
       WriteLine("Enter student ID number:"); 
       studentInfo[x].studentId = Convert.ToInt32(ReadLine()); 
      } 

      for (int j = 0; j < studentInfo.Length; j++) 
      {  
       if (studentInfo[j].lastName.CompareTo(studentInfo[j + 1].lastName) > 0) 
        bucketLow[y] = studentInfo[j].lastName; 
       else 
        bucketHigh[y] = studentInfo[j].lastName; 
       y++; 
      }             
     } 
    } 
} 
+1

功課,考慮** **的Linq' –

+0

「我有麻煩」' - 什麼麻煩?具體是什麼問題? – David

+0

如果你不做家庭作業,而且你實際上正在編寫自己的泡泡分類,那麼你做錯了。 –

回答

0

試試這個代碼,你可以檢查我的意見的解釋是:如果你不這樣做

 student[] studentInfo = new student[20]; 

     //Make sure you initialize the correct number of variables on your string 
     string[] bucketLow = new string[20]; 
     string[] bucketHigh = new string[20]; 
     int x = 0; 
     int y = 0; 

     //I commented out this line since you are already asking for inputs on without going on your counter scenario 

     //Console.WriteLine("Enter student ID number:"); 
     //studentInfo[x].studentId = Convert.ToInt32(Console.ReadLine()); 

     //I made changes on this line, since, you are doing a condition based on the number of increment on your counter 
     while (x <= 2) 
     { 
      //I put the enter student ID above since it will not be counted if it was put after the counter x 
      Console.WriteLine("Enter student ID number:"); 
      studentInfo[x].studentId = Convert.ToInt32(Console.ReadLine()); 
      Console.WriteLine("Enter first name:"); 
      studentInfo[x].firstName = Console.ReadLine(); 
      Console.WriteLine("Enter last name:"); 
      studentInfo[x].lastName = Console.ReadLine(); 
      x++; 

     } 

     for (int j = 0; j < x; j++) 
     { 
      //Make sure you put group all your conditions on round brackets to achieve your desired condition 
      if ((studentInfo[j].lastName.CompareTo(studentInfo[j + 1].lastName)) > 0) 
       bucketLow[y] = studentInfo[j].lastName; 
      else 
       bucketHigh[y] = studentInfo[j].lastName; 
      y++; 
     } 
+0

謝謝,這讓我走上了正在尋找的正確軌道。 – CoreyC

+0

你現在可以接受它作爲答案,如果這回答你的問題:) @CoreyColgan –