Язык СИ:
#include<stdio.h>
#include<stdlib.h>
#include<float.h>
#include<time.h>
int main(){
srand(time(0));
const long double cbc=64.0L-FLT_EPSILON;
unsigned short int r1=cbc/RAND_MAX*rand(),
r2=cbc/RAND_MAX*rand();
printf("R1: %c%c\n",65+r1%8,49+r1/8);
printf("R2: %c%c\n",65+r2%8,49+r2/8);
printf("%s\n",r1%8==r2%8 || r1/8==r2/8?"yes":"no");
return 0;
}
1. → 2 [сдвинуться вправо, перейти на строку 2]
2. → 3 [сдвинуться вправо, перейти на строку 3] — в вопросе опечатка?
3. → 4 [сдвинуться вправо, перейти на строку 4]
4. ? 5;2 [если в текущей ячейке нет метки, перейти на строку 5, иначе вернуться на 2]
5. ← 6 [сдвинуться влево, перейти на строку 6]
6. V 7 [поставить метку, перейти на строку 7]
7. ! [закончить работу]
Программа делает следующее: переходит на метку вправо, шагами по две ячейки идёт вправо, пока не дойдёт до пустой ячейки, возвращается на ячейку влево, ставит там метку и заканчивает работу.
Пусть метки расположены в ячейках 0 - (n-1), каретка под ячейкой 0.
Тогда сначала каретка окажется подячейкой 1, сделает [n/2] шагов по 2 вправо ([x] — целая часть x), оказавшись под ячейкой 1 + 2 * [n/2], вернётся на ячейку влево (ячейка 2 * [n/2]) и поставит там метку.
Если n было четным, будут заполнены ячейки от 0 до n, каретка под ячейкой n
Если n было нечетным, будут заполнены ячейки от 0 до n - 1, каретка под ячейкой n - 1
Седловые точки редко рандомятся, так что вводите значения с клавиатуры. Надо вначале программе раскомментировать ввод через клавиатуру и закоментировать ввод спомощью рандома.
И где вопрос???????????????????
Из рисунка следует, что для N-1 пары отверстий, считая сверху, потребуется пройти двойное количество расстояний a и b, т.е. 2(N-1)(a+b). Еще одно расстояние a надо пройти между нижней парой отверстий и еще с каждой стороны остается свободный конец длины l. Тогда общая длина шнурка составит 2(N-1)(a+b)+a+2l
<em><u>Ниже приведена программа на языке Паскаль (версия TP 7.01).</u></em>
uses Crt;
var
a,b,l,N:integer;
begin
ClrScr;
Write('Vvedite a,b,l,N: ');
Read(a,b,l,N);
Writeln('Dlina=',2*(N-1)*(a+b)+a+2*l);
ReadKey
end.
<em><u>Тестовое решение:</u></em>
Vvedite a,b,l,N: 40 20 120 6
Dlina=880