2013-01-17 6 views
1

내 프로그램에서 "button1_Click"에 몇 가지 변수를 정의했으며 "button1_Click"함수에 "for"루프가 있습니다. 그 루프에서 나는 그 변수들이 변경되기를 원하지만 그들은 변하지 않는다. 내가해야 할 일은 ... 참조로 전달하는 것일까 요? 그렇다면 어떻게?변수가 For 루프에서 변경되지 않습니다

private void button1_Click(object sender, EventArgs e) 
     { 
      double t=0; 
      double x = double.Parse(X0.Text); 
      double z = double.Parse(Z0.Text); 
      double y = double.Parse(Y0.Text); 
      double u = double.Parse(U0.Text); 
      double tn = double.Parse(Tn.Text); 
      double h = double.Parse(textbox_h.Text); 

      for (int i = 0; i < (tn/h); i++) 
      { 

       double K1x = h * fx(t, x, y, z, u); 

       double K2x = h * fx(t + h/2, x + K1x/2, y + K1y/2, z + K1z/2, u + K1u/2); 

       double K3x = h * fx(t + h/2, x + K2x/2, y + K2y/2, z + K2z/2, u + K2u/2); 

       double K4x = h * fx(t + h, x + K3x, y + K3y, z + K3z, u + K3u); 


       x =x+ (1/6)*(K1x + 2 * K2x + 2 * K3x + K4x); 
       richTextBox1.Text += "X(" + (h * (i + 1)).ToString() + ")=" + x.ToString(); 


      } 

모든 것이 올바르지 만 마지막 줄에는 x의 새 값이 x에없고 이전 값이 유지됩니다. fx, fz, fy, fu는 앞서 정의한 함수입니다.

+0

코드가 괜찮습니다. x가 업데이트되지 않는 이유는 무엇이라고 생각하십니까? richTextBox1.Text에 새 행 (Environment.NewLine)을 추가하여 값을 더 잘 볼 수 있습니다. – Polyfun

+0

richTextBox1.Text ... 행이 for 루프 외부에 있지 않아야합니까? 왜냐하면 그것은 for 루프에서 업데이트 될 것이고, 당신은 무슨 일이 일어나는지 볼 시간이 없을 것입니다 ... –

+0

첫 시도보다 훨씬 좋지만 예상 결과와 실제 결과를 더 잘 문서화해야합니다. –

답변

8

문제 16 모두 int이기 때문에 1/60 것을이므로 결과 또한 int 것이다. int에는 소수 자릿수를 사용할 수 없으므로 간단히 삭제됩니다. 반올림은 발생하지 않습니다. 그리고 소수점이없는 0.16666666...0입니다.

1.0/6 

전체 라인은 이제 다음과 같아야합니다 :

것은 둘 중 적어도 하나의 이중하거나 부동, 그것을 해결하기 위해 당신은 당신의 발현이

x = x + (1.0/6)*(K1x + 2 * K2x + 2 * K3x + K4x); 
+0

오! 정말? 좀 더 설명해 주시겠습니까? – bunNyBug

+1

내가 여기서 더 설명 할 수 있을지 모르겠다. 명확하지 않은 것이 있으면 구체적으로 질문하십시오. –

+0

@daniel hilgarth 고마워요. – bunNyBug

0

1/6 

이는 정수 나누기이며 정수는 0입니다.

1.0/6.0 

을 대신 사용해보십시오.

관련 문제