2012-03-20 18 views
4

私は月に3人のsalepeopleと5つの製品の売上金額を入力できるプログラムを書いています。私はデータを格納するために3次元配列を使用しています。 3つの営業担当者の列と5つの製品の行を含む表形式でデータを印刷したいとします。それぞれの金額は、その月の製品の合計売上高、つまり31の値の合計です。私は私のように3次元配列からデータを取得する方法を見つけ出すことはできません3次元配列の検索値

class Program 
{ 
    static void Main(string[] args) 
    { 

     Slip [,,] sales = new Slip[3, 5, 31]; 
     for (int day = 1; day <= 31; day++) 
     { 
      for (int i = 1; i <= 3; i++) 
      { 
       Console.WriteLine("Enter the salesperson number of #" + i + ":"); 
       int salesPersonNumber = Convert.ToInt16(Console.ReadLine()); 
       Console.WriteLine("Enter the information for day " + day + ", salesperson " + salesPersonNumber + " below:"); 
       for (int j = 1; j <=5; j++) 
       { 

        Console.WriteLine("Enter the product number for product " + j + ":"); 
        int productNumber = Convert.ToInt16(Console.ReadLine()); 
        Console.WriteLine("Enter the total dollar value of the product sold day " + day + ":"); 
        decimal value = Convert.ToDecimal(Console.ReadLine()); 
        Slip slip = new Slip(salesPersonNumber, productNumber, value); 
        sales[i-1, j-1, day-1] = slip; 

       } 
      } 
     } 



     for (int i = 0; i < sales.GetLength(0); i++){ 
      for (int j = 0; j < sales.GetLength(1); j++){ 
       decimal total = 0; 
       for (int k = 0; k < sales.GetLength(2); k++){ 
        total += sales[i, j, k].ValueSold; 
       } 

       Console.WriteLine(total); 

      } 

     } 

    } 
} 

:また、私はすべての列の末尾にクロス集計を持っており、これは私のコードである

行する必要がありますテーブルを印刷するには

+1

質問:毎回タイプ3X5X31値ですか? –

+0

はい営業担当者、製品、および値の番号が毎回入力されます – trs

+1

要素を取得する方法、行を印刷する方法、アイテムを反復する方法を知っていることが示されています。 (これは、より一般的なループの記述方法であるため、他の人には読みやすく=(int i = 0; i

答えて

1

アレイを2回ループする必要があります。販売担当者のヘッダーを表示するには、1つのループが必要です。行を表示するには、ネストされたループが必要です。最初の内部ループに行識別子のテキスト(曜日)を生成することができます。また、そこで終わる行を生成することもできます。最も内側のループは、その日と営業担当者の合計数を表示するために使用できます。

0

これはあなたの質問に直接答えるものではありませんが、自分で簡単に答えられるかもしれません。

多次元配列ではなくオブジェクトの使用を検討しましたか?これは、すべてのことをより簡単に追跡することができ、このような複雑な構造の一般的なより良い習慣です。また、計算を抽象化することもできます。例えば、1か月以内に販売された製品の総数を得るなどです。

私が理解したところから、SalesPersonProductの2つのクラスがあります。それぞれは、オブジェクトの次のレベルの配列を「格納」します。次に、メインメソッドの1次元配列をSalesPerson[3]にするだけです。このようなもの:

/// <summary> 
/// A sales person 
/// </summary> 
public class SalesPerson 
{ 
    /// <summary> 
    /// Gets or sets an array of products 
    /// </summary> 
    public Product[] Products { get; set; } 

    /// <summary> 
    /// Constructs a new sales person class, constructing a new products array 
    /// </summary> 
    public SalesPerson() 
    { 
     this.Products = new Product[5]; 
    } 
} 

/// <summary> 
/// A product 
/// </summary> 
public class Product 
{ 
    /// <summary> 
    /// Gets or sets the sales amount array 
    /// </summary> 
    public int[] SalesAmount { get; set; } 

    /// <summary> 
    /// Constructs a new product, constructing a new sales amount array 
    /// </summary> 
    public Product() 
    { 
     this.SalesAmount = new int[31]; 
    } 

    /// <summary> 
    /// Gets the total sold 
    /// </summary> 
    public int GetTotalSold() 
    { 
     return this.SalesAmount.Sum(); 
    } 
} 

希望に役立ちます。 :)

関連する問題