2017-12-09 10 views
0

私はC#開発が初めてです。私は、次のシーケンス1,1,1,3,5,9とボタンを示すフォーム上のラベルを持っています。ボタンをクリックすると、ラベルに数字のシーケンスを追加します。例: 上記のシーケンスが1 + 1 + 1 = 3,3 + 1 + 1 = 5,5 + 3 + 1 = 9の仕組みを知っているので、シーケンスに追加する前の3つの数値を計算します。 私が達成しようとしているのは、次の数字を表示する必要があるたびにボタンがクリックされたときです:9の後に、3 + 5 + 9 = 17のように17になります。クリックするたびにあなたのヘルプが高く評価されます。C#Windowsフォームアルゴリズムの計算

+2

それはあなたがこれまで行ってきたどのくらいかを決定することは非常に困難です。あなたは、既存の数字のリストを取り、新しいものが何であるべきかを計算する関数を持っていますか?その配列をラベルに表示できる文字列に変換する方法を知っていますか?ボタンのクリックハンドラで利用できるように、数字のリストをどこに保存するか知っていますか? –

+0

あなたのアルゴリズムが一連の数字を見て、そのパターンが何であるか把握したいと言っていますか?または、パターンは常に同じですか? –

+0

@Dylanいいえ私には何の機能もありません。私はそれがボタンクリックイベントの後ろに行くことを知っています。 1,1,1,3,5,9がラベルに追加されました。次の数値を計算するアルゴリズムを追加する方法が不明です。 – Sarah

答えて

2

あなたが探しているアルゴリズムは、ラベルに使用されるintを含むようにList<int>を作成すると思います。

List<int> numbers = new List<int>(); 

ので、同じよう次にあなたがリストに.Addに最初の6つの開始番号をしようとしている:ユーザーがボタンをクリック

numbers.Add(1); 
numbers.Add(1); 
numbers.Add(1); 
numbers.Add(3); 
numbers.Add(5); 
numbers.Add(9); 

たら、また結果を持って、元のラベルのテキスト情報を変更しますList<int>内の最後の3つの要素をintに追加します。

int x = numbers[numbers.Count - 1]; //Last number/element in List 
int y = numbers[numbers.Count - 2]; //Second to last 
int z = numbers[numbers.Count - 3]; //Third to last 
int result = x + y + z; //sum of last number plus second to last number plus third to last number 

.Addへの終わりに最後の三つの要素を加算した結果を忘れてはいけない:

この

は、以下の方法で List<int>の長さ/サイズを取得するために .Countを使用して行うことができます List<int>

numbers.Add(result); 

あなたは結果を追加した後、あなたは次のように文字列の結合にラベルの.Text値を設定することができます。

numbersLabel.Text = string.Join(", ", numbers); 

ボタンを含むクラスのサンプルデモは、このアルゴリズムを実現するラベルは以下の通りです。ラベルに

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 

namespace WindowsFormsApp1 
{ 
    public partial class LabelAlgorithm : Form 
    { 
     public List<int> numbers = new List<int>(); 

     public LabelAlgorithm() 
     { 
      numbers.Add(1); 
      numbers.Add(1); 
      numbers.Add(1); 
      numbers.Add(3); 
      numbers.Add(5); 
      numbers.Add(9); 

      InitializeComponent(); 
      numbersLabel.Text = string.Join(", ", numbers); 
     } 

     private void SubmissionButton_Click(object sender, EventArgs e) 
     { 
      int x = numbers[numbers.Count - 1]; 
      int y = numbers[numbers.Count - 2]; 
      int z = numbers[numbers.Count - 3]; 

      int result = x + y + z; 

      numbers.Add(result); 

      numbersLabel.Text = string.Join(", ", numbers); 


     } 
    } 
} 

出力:

1, 3, 5, 9, 17, 31, 57, 105, 193, 355, 653, 1201, 2209, 4063... 
+1

ありがとうございます。 – Sarah