[アーカイブ!】純粋数学、物理学、化学など:トレードとは一切関係ない脳トレ問題集 - ページ 235

 

オペランドとオペレーションを混同しないようにしましょう私たちの場合

d+=f[b]*a,f[b]=d%--g,d/=g--,--b

4つともオペランドではなく、オペレーションです

メタドライバー 1つの条件以外は捨てなければならないとは思っていません。そんな単純な話じゃないんです、円周率なんです。そして、とにかく、あなたは再帰で私を退屈させている......。

ちなみに、必要なデバッグ情報を出力するとともに、e-compilerでチェックできる一番最初のループはこちらです。C-4では 、ループは1回しか実行されないとありますが(なぜ1回なのでしょうか?

 
Mathemat >>:

Дык операнд, а не операция!

Strausrup ("The C++ Programming Language", chapter "Reference Manual", section 14 (Summary of Syntax)) から引用しました。

| выражение:

| терм

| выражение бинарная_операция выражение

| выражение ? выражение : выражение

| список выражений

| список выражений:

| выражение:

| список_выражений, выражение


青字は、見るべきところを強調したものです。

 
Mathemat >>:

Дык не путай операнд и операцию! В нашем случае

все четыре - операции, а не операнды!

1) MetaDriver, не верю, что все условия окромя одного придецца отбросить. Не такое оно простое, это Pi. И вообще, запылил мне мозги своей рекурсией...

Кстати, вот самый первый цикл можно и проверить, у кого компилятор е, вместе с выводом нужной отладочной инфы. С-4 говорит, что цикл выполнится только 1 раз (а почему даже 1 раз-то выполнится?), а мне кажется, что много раз.

やるしかないでしょう!

コンマ演算子についての説明をもう少しWebで調べてみてください。ご満足いただけるように(:floating arrow:)。

 
Mathemat >>:

1) Кстати, вот самый первый цикл можно и проверить, у кого компилятор е, вместе с выводом нужной отладочной инфы.

2) С-4 говорит, что цикл выполнится только 1 раз (а почему даже 1 раз-то выполнится?), а мне кажется, что много раз.

それはいいことだと思います。あるんだけど、VSのためにメモリをおろしたくないんだよね。

(たくさんのプログラムを起動していて、メモリがすべて一杯になっています。ストレッチと天井のホームページはまだまだ続きますよ:)

 

よし、明日まで待とう。コンマ演算子を見てみる。基準はやはり練習-浮き針まででしょう。

 
Mathemat >>:

Ладно, погодим до завтра. Я посмотрю оператор запятой. Критерием все равно будет практика.

よし、明日からやろう。:)

 
とりあえずのリンクはこちら:forループの条件におけるカンマ演算子
 

ついつい、スタジオで企画を作ってしまいました。 次の改革(下記参照)の後、コードは動作します。
int a=10000, b, c=2800, d, e, f[2801], g;

int _tmain(int argc, _TCHAR* argv[]) // Вполне заменяет классический main()
{
   while(( b- c)!=0)  
   {
     f[ b++]= a/5;
   }
   while( g= c*2)
   {
      for( b= c; d+= f[ b]* a, f[ b]= d%-- g, d/= g--,-- b; d*= b);
      
      c-=14;
      printf("%.4d", e+ d/ a);
      e= d% a;
  
      d=0;
  }
   getch(); // Добавил, чтоб тормозить окно от преждевременного захлопывания.
return 0;
}
次に、最後のfor'aを取り除き、これもwhileに置き換えます。  
そして、その途中で識別子をより意味のあるものに置き換えながら、ゆっくりとアルゴリズムに対処していけばよいのです。

 
C-4 >>:

int a=10000,b,c=2800,d,e,f[2801],g;
int main(void){
for(;b-c;)f[b++]=a/5;
for(;d=0,g=c*2;c-=14,printf("%.4d",e+d/a),e=d%a)
for(b=c;d+=f[b]*a,f[b]=d%--g,d/=g--,--b;d*=b);
}

int a=10000, c=2800, b, d, e, g;
int f[2801];

int main(int argc, char* argv[])
{

に対して、 (b-c!=0;b++)
{
f[b]=a/5 とする
}


for(d=0;c>0;)
{
g=c*2-1です
e=d%aです
for(b=c; b>0;)
{
d=d*bです。
d=d+f[b]*a;
f[b]=d%g;
d=d/gです
g=g-2です
b--;
}

printf("%.4d",e+d/a)
c=c-14です
}
0を返します
}

うまくいった !!!
 

そして、何、ピが出てくるのでしょう?