[Archiv!] Reine Mathematik, Physik, Chemie usw.: Gehirntrainingsprobleme, die in keiner Weise mit dem Handel zusammenhängen - Seite 235

 

Verwechseln Sie nicht Operand mit Operation! In unserem Fall.

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

Alle vier sind Operationen, nicht Operanden!

MetaDriver, ich glaube nicht, dass alle Bedingungen außer einer verworfen werden müssen. So einfach ist das nicht, es ist Pi. Und außerdem langweilst du mich mit deiner Rekursion...

Hier ist übrigens die allererste Schleife, die mit dem E-Compiler überprüft werden kann und alle notwendigen Debugging-Informationen ausgibt. C-4 sagt, dass die Schleife nur einmal ausgeführt wird (warum auch nur einmal?), während ich den Eindruck habe, dass sie viele Male ausgeführt wird.

 
Mathemat >>:

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

aus Strausrup ("The C++ Programming Language", Kapitel "Reference Manual", Abschnitt 14 (Summary of Syntax)):

| выражение:

| терм

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

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

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

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

| выражение:

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


In Blau habe ich hervorgehoben, worauf Sie achten sollten.

 
Mathemat >>:

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

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

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

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

Sie müssen es tun!

Weitere Beschreibungen des Komma-Operators finden Sie im Internet. Zu Ihrer vollen Zufriedenheit (:floating arrow:).

 
Mathemat >>:

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

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

Das wäre schön. Ich habe einige, aber ich möchte den Speicher für VS nicht entladen.

(Ich habe eine Menge Programme laufen, der Speicher ist voll. Ich arbeite immer noch an der Website für das Spannen und die Decke:)

 

Gut, dann warten wir bis morgen. Ich werde mir den Komma-Operator ansehen. Das Kriterium wird weiterhin die Praxis sein - bis hin zur schwimmenden Nadel.

 
Mathemat >>:

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

Gut, dann machen wir es morgen. :)

 
 

Ich konnte nicht widerstehen, ein Projekt im Atelier zu machen. Nach der nächsten Reform (siehe unten) funktioniert der Code:
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;
}
Als Nächstes werde ich das letzte for'a loswerden und es durch while ersetzen.  
Dann können wir uns langsam mit dem Algorithmus befassen und die Identifikatoren nach und nach durch sinnvollere ersetzen.

 
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[])
{

für (;(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;
}
0zurückgeben;
}

Es hat geklappt!!!
 

Und was, Pi kommt raus, oder?