Sad treba ici od unutra ka spolja. Petlja
Code:
for (k=1; k<=(i+j)*s0; k=k+1)
{
s = s + k + s0;
}
je ekvivalentna kodu
Code:
u = (i+j)*s0
for (k=1; k<=u; k=k+1)
{
s = s + k + s0;
}
gde je u neka nova promenljiva, jer se vrednost izraza koji opisuje gornju granicu indeksa ne menja unutar petlje. Petlja
Code:
for (k=1; k<=u; k=k+1)
{
s = s + k + s0;
}
Je ekvivalentna sa
Code:
s = s+u*s0;
for (k=1; k<=u; k=k+1)
{
s = s + k;
}
odnosno sa
Code:
s = s+u*s0;
s = s+u*(u+1)/2;
Dakle, celu petlju sa pocetka mozemo sabiti u jednu liniju
Code:
s = s+(i+j)*s0*s0+(i+j)*s0*((i+j)*s0+1)/2;
pa je nas program ekvivalentan sa
Code:
#include <iostream>
using namespace std;
int main()
{
int i,j,k,n,s,s0;
cout << "Unesi prirodan broj " << flush;
cin >> n;
s = 0;
s0 = 0;
for (i=1; i<=n ; i=i+1)
{
s = s + n;
s0 = s0 + n;
for (j=1; j<=s0; j=j+1)
{
s = s + n*j;
s = s+(i+j)*s0*s0+(i+j)*s0*((i+j)*s0+1)/2;
}
}
cout << "Rezultat je " << s << endl;
return 0;
}
odnosno sa
Code:
#include <iostream>
using namespace std;
int main()
{
int i,j,k,n,s,s0;
cout << "Unesi prirodan broj " << flush;
cin >> n;
s = 0;
s0 = 0;
for (i=1; i<=n ; i=i+1)
{
s = s + n;
s0 = s0 + n;
for (j=1; j<=s0; j=j+1)
{
s = s+n*j+(i+j)*s0*s0+(i+j)*s0*((i+j)*s0+1)/2;
}
}
cout << "Rezultat je " << s << endl;
return 0;
}
To be continued...
[Ovu poruku je menjao Nedeljko dana 08.07.2008. u 17:30 GMT+1]
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.