[Архив!] Чистая математика, физика, химия и т.п.: задачки для тренировки мозгов, никак не связанные с торговлей - страница 235

 

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

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

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

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

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

 
Mathemat >>:

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

из Страустрапа ("Язык программирования С++", глава "Справочное руководство", раздел 14 (Краткое описание синтаксиса)):

|выражение:

| терм

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

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

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

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

|выражение:

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


Синим выделил на что посмотреть.

 
Mathemat >>:

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

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

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

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

Таки придетца!

Посмотри ещё несколько описаний оператора запятой в инете. До полного удовлетворения (:плавающей стрелки:).

 
Mathemat >>:

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

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

Хорошо бы. У меня вапчета есть, да больно уж неохота щас память выгружать под VS.

(У меня куча программ запущена, вся память битком. С сайтом натяжнопотолочным всё ещё вожусь:)

 

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

 
Mathemat >>:

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

ОК, давай завтра. :)

 
 

Не удержался, сделал таки проект в студии. После следуещей реформы (см.ниже) код работает:
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[])
{

for (;(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;
}
return 0;
}

Заработало !!!
 

И что, Pi выходит, что ли?