2016-05-30 77 views
0

我是編程新手,如果有人能幫助我解決以下問題,我會很高興的:「寫一個程序,詢問學生的班級和人數,在詢問學生的姓名後,以學生姓名申請成績,顯示平均水平並顯示最高成績「。我被困在第3部分,不能將名稱鏈接到下一部分。這是我走到這一步:C#基礎學校項目SOS

static void Main(string[] args) 
    { 

     // 1 give a name and number of students 
     Console.Write("Class = "); 
     Convert.ToString(Console.ReadLine()); 
     Console.Write("Number of students = "); 
     int aantalStudenten = Convert.ToInt32(Console.ReadLine()); 

     Console.WriteLine(); 

     // 2 ask for the names 
     int[] aantal = new int[aantalStudenten]; 
     Random RandomNumber = new Random(); 

     for (int i = 0; i < aantalStudenten; i++) 
     { 
      Console.Write("Geef naam van de {0}e student : ", i + 1); 
      string studentNaam = Convert.ToString(Console.ReadLine()); 
     } 
     Console.WriteLine(); 

     // 3 give the grade of each student by the name      
     for (int j = 0; j < aantalStudenten; j++)     
     { 
      Console.Write("Cijfer van {0} : "); // here i need the students name)// 
      int cijfers = Convert.ToInt32(Console.ReadLine()); 
     } 

     //class avarege here 


     //highest grade of the class 
     int hoogste = stuCijfer.Max(); 
     Console.WriteLine("De hoogste cijfer is {}," hoogste; 

     //name and grade of each student 
     Console.WriteLine(); 

     Console.WriteLine("Press any key to stop"); 
     Console.ReadKey(); 
    } 
+0

將名稱存儲在字符串數組中,然後將其用作具有等級的並行數組。所以他們都會在回憶這個名字時使用相同的j索引。所以名稱0將映射到0級等。以等級或花車存儲的等級,您可以將它們相互比較以找到最高等級。循環執行此操作時,可以將索引存儲到一個變量中,該變量將在循環關閉後用於顯示結果 – Shon

回答

1
Console.Write("Class = "); 
     Convert.ToString(Console.ReadLine()); 
     Console.Write("Number of students = "); 
     int aantalStudenten = Convert.ToInt32(Console.ReadLine()); 

     Console.WriteLine(); 

     // 2 ask for the names 
     string[] namen = new string[aantalStudenten]; 
     int[] cijfers = new int[aantalStudenten]; 
     Random RandomNumber = new Random(); 

     for (int i = 0; i < aantalStudenten; i++){ 
      Console.Write("Geef naam van de {0}e student : ", i + 1); 
      namen[i] = Convert.ToString(Console.ReadLine()); 
     } 
     Console.WriteLine(); 

     // 3 give the grade of each student by the name      
     for (int i = 0; i < aantalStudenten; i++){ 
      Console.Write("Cijfer van {0} : ", namen[i]);  // here i need the students name)// 
      cijfers[i] = Convert.ToInt32(Console.ReadLine()); 
     } 

     double gemiddeld = 0; 
     //class avarege here 
     for (int i = 0; i < cijfers.Count(); i++) { 
      gemiddeld += cijfers[i]; 
     } 

     gemiddeld = gemiddeld/cijfers.Count(); 
     Console.WriteLine("Het gemiddelde van de klas is: {0}", gemiddeld); 


     //highest grade of the class 
     int hoogste = 0; 
     for (int i = 0; i < cijfers.Count(); i++) { 
      if (cijfers[i] > hoogste) { 
       hoogste = cijfers[i]; 
      } 
     } 

     Console.WriteLine("De hoogste cijfer is {0}",hoogste); 

     //name and grade of each student 
     Console.WriteLine(); 

     Console.WriteLine("Press any key to stop"); 
     Console.ReadKey(); 

你應該把學生的名字放在你正在工作的方式列表中,每次用戶輸入一個新的名字時你都要重寫。然後你可以循環存儲數組中的分數的名字,在這種情況下,你可以使用兩個單獨的一個,但使用字典或二維數組會更好。 但好運氣進一步

0

它看起來像你試圖讓在那裏你挑選出了名的字符串,但它可能已被轉換爲int。在收到名稱時更改將其轉換爲int的部分。 它也看起來像你有int j。在您將它命名爲int i之前。確保它每次引用回到您確定的名稱。

在側面說明中,您可以嘗試將名稱存儲到數組中,並將它們拉出以引用數組。這可能有幫助。

0

如果我要編寫這樣的程序妥善我將創建一個新Student類包含一個名字和一個分數,然後創建一個列表或數組包含的Student多個實例。希望您熟悉創建新類和列表或數組的概念。如果您需要幫助瞭解其中的任何內容,請告訴我。

+0

在此級別,使用並行數組和多維數組將更容易。 – Shon

+0

@Shon如果不熟悉類和封裝的概念,那麼並行數組或多維數組可能是合適的,但是這個練習似乎被設計用來教授關於類的用法,並且如果熟悉這些概念,我會斷言它實際上是更簡單的解決方案。 – BlueMonkMN

+0

這裏的課是指課堂而不是編程術語 – Shon