Алгоритм решения задачи кузнечика Саньков Денис гр. IA-112

Скачать презентацию Алгоритм решения задачи кузнечика Саньков Денис гр. IA-112 Скачать презентацию Алгоритм решения задачи кузнечика Саньков Денис гр. IA-112

presentation.ppt

  • Количество слайдов: 26

>Алгоритм решения задачи кузнечика Саньков Денис гр.IA-112 Алгоритм решения задачи кузнечика Саньков Денис гр.IA-112

>Представим плоскость по которой скачет кузнечик,как прямоугольную систему координат. Представим плоскость по которой скачет кузнечик,как прямоугольную систему координат.

>

>Блок схема алгоритма Блок схема алгоритма будет состоять из 4 пользовательских функции и одной Блок схема алгоритма Блок схема алгоритма будет состоять из 4 пользовательских функции и одной функции main. Одна функция необходима для ввода значений,а каждая из 3 функции будет рассматривать определённый случай.

>x и y равны или разность между ними чётная В этих случаях не имеет x и y равны или разность между ними чётная В этих случаях не имеет значения как начнёт двигаться кузнечик. Он может двигаться начиная как с оси X ,так и с оси Y. Как он бы не начал двигаться количество шагов будет одинаковое

>Начало Kp=0;i=0;j=0 i=x? i=i+1; kp=kp+1; i=i-1; kp=kp+1; j=y? j=j+1; kp=kp+1; i=x or j=y ? Начало Kp=0;i=0;j=0 i=x? i=i+1; kp=kp+1; i=i-1; kp=kp+1; j=y? j=j+1; kp=kp+1; i=x or j=y ? конец Блок схема для этого случая да нет да нет да нет j=j-1; kp=kp+1;

>Код данной функции int x_y_ico(int x,int y) { int kp=0; Int i=0; Int j=0; Код данной функции int x_y_ico(int x,int y) { int kp=0; Int i=0; Int j=0; do { if (i==x) { i--; kp++; } else { i++; kp++; } if (j==y) {j--; kp++; } else { j++;kp++; } } while (i!=x || j!=y); return kp; }

>x больше y В этом случае,то относительно какой оси кузнечик начнёт двигаться в начале, x больше y В этом случае,то относительно какой оси кузнечик начнёт двигаться в начале, играет роль.Кузнечик совершит меньшее количество шагов в том случае,если начнёт двигаться относительно оси X.

>Блок схема для этого случая Начало Kp=0;i=0;j=0 i=x? kp=kp-1; i=i+1; kp=kp+1; j=y? j=j+1; kp=kp+1; Блок схема для этого случая Начало Kp=0;i=0;j=0 i=x? kp=kp-1; i=i+1; kp=kp+1; j=y? j=j+1; kp=kp+1; i=x or j=y ? конец да нет да нет да нет j=j-1; kp=kp+1; break

>Код данной функции int x_big_y(int x,int y) { int kp=0; Int i=0; Int j=0; Код данной функции int x_big_y(int x,int y) { int kp=0; Int i=0; Int j=0; do { if (i!=x) { i++; kp++; } else { kp--;break;} if (j==y) {j--; kp++; } else { j++;kp++; } } while (i!=x || j!=y); return kp; }

>y больше x В этом случае,то относительно какой оси кузнечик начнёт двигаться в начале, y больше x В этом случае,то относительно какой оси кузнечик начнёт двигаться в начале, играет роль.Кузнечик совершит меньшее количество шагов в том случае,если начнёт двигаться относительно оси Y.

>Блок схема для этого случая Начало Kp=0;i=0;j=0 j=y? kp=kp-1; j=j+1; kp=kp+1; i=x? i=i+1; kp=kp+1; Блок схема для этого случая Начало Kp=0;i=0;j=0 j=y? kp=kp-1; j=j+1; kp=kp+1; i=x? i=i+1; kp=kp+1; i=x or j=y ? да нет да нет да нет i=i-1; kp=kp+1; break конец

>Код данной функции int y_big_x(int x,int y) { int kp=0; Int i=0; Int j=0; Код данной функции int y_big_x(int x,int y) { int kp=0; Int i=0; Int j=0; do { if (j!=y) { j++; kp++; } else { kp--;break;} if (i==x) {i--; kp++; } else { i++;kp++; } } while (i!=x || j!=y); return kp; }

>Фунция ввода значений Функция будет предлагать ввести точку с координатами x и у. Фунция ввода значений Функция будет предлагать ввести точку с координатами x и у.

>Блок схема для функции ввода Начало x,y X<0?| x=x* -1 y<0?| y=y* -1 конец Блок схема для функции ввода Начало x,y X<0?| x=x* -1 y<0?| y=y* -1 конец да да нет нет

>void input_x_y(int &x,int &y) { printf(“Введи координату по x: ”); scanf(“%d”,&x); if (x<0) x*=-1; void input_x_y(int &x,int &y) { printf(“Введи координату по x: ”); scanf(“%d”,&x); if (x<0) x*=-1; printf(“Введи по координату по y: ”); scanf(“%d”,&y); if (y<0) y*=-1; } Код функции

>Функция main будет вызывать в ходе выполнения программы одну из этих функции в зависимости Функция main будет вызывать в ходе выполнения программы одну из этих функции в зависимости от введённых x и y. Главная функция

>Блок схема функции main Начало x-y%2=0 ? x_y_ico y>x? да нет нет да x,y Блок схема функции main Начало x-y%2=0 ? x_y_ico y>x? да нет нет да x,y x_y_ico x_big_y x_big_y y_big_x y_big_x конец

>Код программы main int main( ) { int x,y; input_x_y(x,y); if (x==0 && y==0) Код программы main int main( ) { int x,y; input_x_y(x,y); if (x==0 && y==0) { printf(“Количество прыжков =0”);return 0;} if ((x-y)%2==0 || x==y || (y-x)%2==0) { printf(“Количество прыжков =%d”,x_y_ico(x,y));return 0; } If (x>y) { printf(“Количество прыжков =%d”,x_big_y(x,y));return 0; } If (x

>Получаемый вывод при различных случаях Получаемый вывод при различных случаях

>x и y равны между собой x и y равны между собой

>Разность между x и y чётная Разность между x и y чётная

>Разность между y и x чётная Разность между y и x чётная

>x больше y x больше y

>y больше x y больше x

>Спасибо за просмотр:) Спасибо за просмотр:)