• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

  • Автор темы Firen
  • Дата начала
Статус
Закрыто для дальнейших ответов.
F

Firen

Помогите составить блок схему!
Я знаю, что программа совсем лёгкая, но я вообще всю жизнь програмировал на Delphi и паскале, а в универе меня заставляют учить чужеродный С!
Надеюсь вы мне поможете вот код программы:
Код:
#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(); 
}
Заранее благодарен.
 
P

pushkin

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

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

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

Firen

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

pushkin

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

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

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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!