Помогите составить блок-схему

Тема в разделе "Общие вопросы по С и С++", создана пользователем Firen, 5 ноя 2006.

Статус темы:
Закрыта.
  1. Firen

    Firen Гость

    Помогите составить блок схему!
    Я знаю, что программа совсем лёгкая, но я вообще всю жизнь програмировал на Delphi и паскале, а в универе меня заставляют учить чужеродный С!
    Надеюсь вы мне поможете вот код программы:
    Код (Text):
    #include <stdio.h>
    #include <conio.h>
    #include <math.h>
    #include <alloc.h>
    #define inabn(a,b,n){printf("\n Input a=0.3,b=1,n=3,4,5,6,7:");scanf("%g%g%i",&a,&b,&n);printf("a=%g, b=%g, n=%i\n\"Esc\" for continue.", a, b, n);}
    float f2(float x){return x*log(x)+exp(x-4);}

    void maly(int n, int m, float ***y2)
    {int i; *y2=(float**)malloc(m*sizeof(float*));
    for(i=0;i<m;i++)
    (*y2)[i]=(float*)malloc((n+1)*sizeof(float));
    }

    void tabl (int n, float a, float b, float **y2, float (*p)(float y2))
    {int i; float x, h=(b-a)/n;
    y2[0][0]=a;
    for(i=0;i<=n;i++)
    { x=y2[0][i]; y2[1][i]=p(x);
    if(i>=n)continue;
    y2[0][i+1]=x+h;
    } }
    void outt(int n, float **y2){int i; for(i=0;i<=n;i++)
    {printf("\n y2[0][%2i]=% -9.6g, y2[1][%2i]=% -9.6g",
    i, y2[0][i], i, y2[1][i]);
    getch(); }
    }
    void mm(int n, float*f, float*min, float*max){ int j; float f2;
    *min=*max=f[0];
    for(j=1;j<=n;j++)
    {f2=f[j];
    if(f2>*max)*max=f2;else if(f2<*min)*min=f2;
    }
    }
    void main(){
    float **y2,a,b,min,max; int m=2, n;
    inabn(a,b,n);
    maly(n, m, &y2);
    tabl(n, a, b, y2, f2);
    outt(n,y2);
    mm(n,y2[1], &min,&max);
    printf("\n min=%g, max=%g\n\"Esc\"for continue\n", min, max);
    getch();
    }
    Заранее благодарен.
     
  2. pushkin

    pushkin Гость

    Правильное форматирование кода сильно помогает с блок схемами, а тут код просто отвратительно отформатирован. Названия переменных вообще ни о чем не говорят, а за названия функций автору программы нужно вставить флаг в задницу за краткость. Отдельное спасибо автору - за код, просящий пользователя ввести что-то с клавиатуры, реализованный через макрос.

    А по поводу легкости программы - она на самом деле не совсем легкая - в ней используются такие понятия как "указатель на указатель" и даже "указатель указателя на указатель" :))) Короче, с первого взгляда видно, что в программе используются какие-то таблицы (даже, наверное, трехмерные) для каких-то вычислений и для нахождения минимального и максимального значения.

    Если хотите, я могу нарисовать блок-схему для нее, но только за деньги, т. к. у меня уйдет далеко не 5 минут на то, чтобы это сделать.
     
  3. Firen

    Firen Гость

    Я знаю, что программа не вызовет благоприятных чувств!
    Но я уже написал блок-схему сам!!! Пришлось посидеть над ней...
    А флаг в задницу можете вставить моему преподу в универе, ему будет очень приятно!
     
  4. pushkin

    pushkin Гость

    Честно признаться, я так и думал, что это не ты написал программу, а препод из университета. Эти преподы преподают программирование так, как их учили в 70-х годах. Тогда просто не было никакого ООП и классов, зато было такое суеверие, что программа работает в разы быстрей, если переменные называть i1, i2, i3 и т. д.

    Преподы в университетах все жутко ностальгируют по перфокартам и огромным ламповым компам. А когда студент может внятно объяснить, что такое перфокарта, у преподавателя вообще наступает недетская эрекция, а слюна течет по подбородку если он молчит и брызгает во все стороны, если он говорит :)

    З. Ы. Было бы любопытно узнать, что за университет, какой факультет, какая кафедра, ФИО преподавателя (вдруг знакомы) ;))
     
Загрузка...
Статус темы:
Закрыта.

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