терминатор начала и конца работы функции
терминатором начинается и заканчивается любая функция. тип возвращаемого значения и аргументов функции обычно указывается в комментариях к блоку терминатора.
операции ввода и вывода данных
в гост определено множество символов ввода/вывода, например вывод на магнитные ленты, дисплеи и т.п. если источник данных не принципиален, обычно используется символ параллелограмма. подробности ввода/вывода могут быть указаны в комментариях.
выполнение операций над данными
в блоке операций обычно размещают одно или несколько (гост не запрещает) операций присваивания, не требующих вызова внешних функций.
блок, иллюстрирующий ветвление алгоритма
блок в виде ромба имеет один вход и несколько подписанных выходов. в случае, если блок имеет 2 выхода (соответствует оператору ветвления), на них подписывается результат сравнения — «да/нет». если из блока выходит большее число линий (оператор выбора), внутри него записывается имя переменной, а на выходящих дугах — значения этой переменной.
вызов внешней процедуры
вызов внешних процедур и функций помещается в прямоугольник с дополнительными вертикальными линиями.
начало и конец цикла
символы начала и конца цикла содержат имя и условие. условие может отсутствовать в одном из символов пары. расположение условия, определяет тип оператора, соответствующего символам на языке высокого уровня — оператор с предусловием (while) или постусловием (do … while).
подготовка данных
символ «подготовка данных» в произвольной форме (в гост нет ни пояснений, ни примеров), задает входные значения. используется обычно для циклов со счетчиком.
соединитель
в случае, если блок-схема не умещается на лист, используется символ соединителя, отражающий переход потока между листами. символ может использоваться и на одном листе, если по каким-либо причинам тянуть линию не удобно.
комментарий
комментарий может быть соединен как с одним блоком, так и группой. группа блоков выделяется на схеме пунктирной линией.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int *arr;
int x, y, i, j, sum = 0, min = 0, minstr = 0;
srand(time(NULL));
x = 2 + rand() % 10;
y = 2 + rand() % 6;
arr = (int*)malloc(x*y*sizeof(int));
printf("Array %d x %d: \n", x, y);
for (i = 0; i < x; i++){
for (j = 0; j < y; j++){
*(arr + i*y + j) = -50 + rand() % 100;
printf("arr[%d][%d] = %3d; ", i, j, *(arr + i*y + j));
}
printf("\n");
}
for (i = 0; i < y; i++)
min += *(arr + i);
minstr = 0;
for (i = 1; i < x; i++){
for (j = 0; j < y; j++)
sum += *(arr + i*y + j);
if (sum < min) {
min = sum;
minstr = i+1;
}
sum = 0;
}
printf("Minimum amount: %d (%d line)", min, minstr);
free(arr);
return 0;
Объяснение:
это пример как делать
2. 3) 9•10 во второй + 3•10 в первой +6•10 нулевой степени