Процедуры/функции

Тема в разделе "C/C++/C#", создана пользователем crewww, 28 янв 2012.

  1. crewww

    crewww Гость

    условие
    Три фрагмента нижеприведенной программы, выделенные жирным курсивом, представляют собой решение одной и той же подзадачи для различных исходных данных – параметров этой подзадачи. Для подходящей подзадачи опишите процедуру (функцию) с параметрами и без глобальных переменных. Перепишите нижеприведенную программу в более компактной форме, используя операторы (этой) процедуры (вызовы функции) для реализации выделенных фрагментов

    Код (C++):
    int main()
    {
    int i,j; double u,v,w,z,x,y,p,q,r,s,a[100],b[100],c[200],f[200];
    //ввод (p,q,r,a,b,c)
    for (j=0;j<200; j+=2)
    {
    s=r;
    // фрагмент выделен жирным курсивом (начало 1 фрагмента)
    x=p;y=cos(c[j]);
    u=x+y;
    for (i=0;i<100;i++)
    {
    z=(x-cos(c[j])); w=(sin(s)-y);
    u=u+(a[i]*q-z/a[i])*(p-b[i]*w);
    x=(y-x)*(p-u); y=(y-c[j+1])*cos(c[j]);
    }
    //конец 1 фрагмента выделенного жирным курсивом
    if (sin(u)>cos(u))
    {
    //начало 2 фрагмента выделенного жирным курсивом
    y=q; z=sin(c[j+1]); f[j]=y+z;
    for (i=0;i<100;i++)
    {
    x=(y-sin(c[j+1])); b=(log(s)-z);
    f[j]=f[j]+(b[i]*p-x/a[i])*(p-a[i]*v); y=(z-y)*(q-f[j]);
    z=(z-c[j])*sin(c[j+1]);
    }
    //конец 2 фрагмента выделенного жирным курсивом
    s=cos(s-u);
    //начало 3 фрагмента выделенного жирным курсивом
    z=p;x=log(c[j]);f[j+1]=z+x;
    for (i=0;i<100;i++)
    {
    y=(z-log(c[j])); w=(cos(s)-x);
    f[j+1]=f[j+1]+(a[i]*p-y/b[i])*(q-a[i]*w); z=(x-z)*(p-f[j+1]);
    x=(x-c[j]*c[j+1])*log(c[j]);
    }
    //конец 3 фрагмента выделенного жирным курсивом
    }
    else
    {
    f[j]=sin(u-c[j]); f[j+1]=sin(u*c[j+1]);
    }
    }
    //вывод (f)
    return 0;
    }
    проверьте мое решение:
    Код (C++):
    void pro(double a1, double a2,double a3[100],double a4,double a5[100], double a6,double a7[100], double a8,double a9,double &res)
    {int i; double x,y,z,w;
    x=a8;
    y=a1;
    res=x+y;
    for (i=0; i<100;i++)
    {
    z=x-a1;
    w=a2-y;
    res=res+(a3[i]*a4-z/a5[i])*(a6-a7[i]*w);
    x=(y-x)*(a8-res);
    y=(y-a9)*a1;
    }
    }

    int main()
    {
    int i,j; double u,v,w,z,x,y,p,q,r,s,a[100],b[100],c[200],f[200];
    //ввод (p,q,r,a,b,c)
    for (j=0;j<200; j+=2)
    {
    s=r;
    pro(cos(c[j]),sin(s),a,q,a,p,b,p,c[j+1],u);
    if (sin(u)>cos(u))
    {
    pro(sin(c[j+1]),log(s),b,p,a,p,a,q,c[j],f[j]);
    s=cos(s-u);
    pro(log(c[j]),cos(s),a,p,b,q,a,p,c[j]*c[j+1],f[j+1]);
    }
    else    {
    f[j]=sin(u-c[j]); f[j+1]=sin(u*c[j+1]);
    }
    }
    //вывод (f)
    return 0;
    }
     
Загрузка...

Поделиться этой страницей