Int main()
{
int i,j,k,s; const n = 10;
int a[n],b[n],c[n];
for (i = 0;i<n;i++) cin>>a[i];
for (i = 0;i<n;i++) cin>>b[i];
for (i = 0;i<n;i++) cin>>c[i];
s = 0;
b[1] = a[n-7]*a[n-3];
for(i = 0;i<n-1; i++)
s = s+a[i+1] +b[i];
s = s+1;
c[1] = b[n-7]+b[n-2];
for(j = 0;j<n; j++)
s = s+b[j] +c[j];
s = s+2;
a[1] = c[n-7]-c[n-1];
for(k = 0;k<n-2; k++)
s = s+c[k+2]+a[k];
cout<<s;
return 0;
}
Решение:
В первой строке мы видим что с слева отличие только в названии массива. Значение его зависит от предыдущих и влияет на следующие значит это параметр-переменная(однако любой массив-параметр является параметром переменной). Справа выражения, в которых не удается проследить закономерность, поэтому обозначим его за новый аргумент, т.к. его значение зависит от предыдущей программы. |
Отличие во второй строке в переменной i(j и k), внедряем локальную переменную l1, т.к. она не зависит от предыдущей программы и не влияет на следующую часть программы. Обязательно сразу же заменяем i(j и k) на l1 во всем фрагменте. Oтличии в границе, аналогично в индексе, можно сказать, что в первом случае он l1+1, во втором l1+0, а в третьем l1+2 и для гораницы n-1, во втором n-0, а в третьем n-2. Заменим этот добавок на новый аргумент a4. |
||
a1=b a2=a[n-7]*a[n-3] |
a1[1] = a2; for(i = 0;i<n-1; i++) s = s+a[i+1]+ a1[i]; |
l1 = i a4=1
|
a1[1] = a2; for(l1 = 0; l1<n-a4; l1++) s = s+a[l1+a4]+ a1[l1]; |
a1=c a2= b[n-7]+b[n-2] |
a1[1] = a2; for(j = 0;j<n; j++) s = s+b[j] + a1[j]; |
l1 = j a4=0 |
a1[1] = a2; for(l1 = 0; l1<n-a4; l1++) s = s+b[l1+a4] + a1[l1]; |
a1=a a2= c[n-7]-c[n-1] |
a1[1] = a2; for(k = 0;k<n-2; k++) s = s+c[k+2]+a1[k]; |
l1 = k a4=2 |
a1[1] = a2; for(l1 = 0; l1<n-a4; l1++) s = s+c[l1+a4]+a1[l1]; |
|
__ sum (int a1[10],int a2,___) { a1[1] = a2; … } |
|
__ sum (int a1[10],int a2,int a4,_) { int l1 a1[1] = a2; for(l1 = 0; l1<n-a4; l1++) … } |
В третьей строке отличие в массиве а(b и c), его мы обозначим за аргумент a3, т.к. зависит от предыдущего и влияет на следующее. |
Все различия устранены, теперь можно все оставшиеся переменные передавать как переменные параметры(ставя впереди “&”), т.к. их значения передаются из вне, а изменения важны для последующей программы. Внимание перед n “&” не ставится, т.к. она константа. А возвращаемый тип указывать void. |
||
a1=b a2=a[n-7]*a[n-3] l1 = i a3=a a4=1 |
a1[1] = a2; for(l1 = 0; l1<n- a4; l1++) s = s+a3[l1+a4]+ a1[l1]; |
|
a1[1] = a2; for(l1 = 0; l1<n-1; l1++) s = s+a3[l1+a4]+ a1[l1]; |
a1=c a2= b[n-7]+b[n-2] l1 = j a3=b a4=0 |
a1[1] = a2; for(l1 = 0; l1<n- a4; l1++) s = s+a3[l1+a4]+ a1[l1]; |
|
a1[1] = a2; for(l1 = 0; l1<n-1; l1++) s = s+a3[l1+a4]+ a1[l1]; |
a1=a a2= c[n-7]-c[n-1] l1 = k a3=c a4=2 |
a1[1] = a2; for(l1 = 0; l1<n-a4; l1++) s = s+a3[l1+a4]+ a1[l1]; |
|
a1[1] = a2; for(l1 = 0; l1<n-1; l1++) s = s+a3[l1+a4]+ a1[l1]; |
__ sum (int a1[10],int a2, int a3[10],int a4,____) { int l1 a1[1] = a2; for(l1 = 0; l1<n- a4;l1++) s = s+a3[l1+a4]+ a1[l1]; } |
void sum (int a1[10],int a2, int a3[10],int a4,int n, int &s) { int l1 a1[1] = a2; for(l1 = 0; l1<n-a4;l1++) s = s+a3[l1+a4]+ a1[l1]; } |
Сама программа: