| SERGE_BLIZNUK 
 Silver Member
 | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору nowar
 
 Цитата:
 | дали задание по алгоритмизации, написать на Turbo Pascal программу "Шахматы". А до этого ничего подобного в Паскале не делали! Делали там матрицы, массивы всякие. | 
 Ну Вы программист или где?
 учитесь дотошно (досконально) читать задание/ТЗ и прочие постановки задачи.
 Поясняю, что я имею в виду:
 если в условии задачи не было сказано, что задача должна быть выполнена в графическом режиме - то у Вас появляется возможность нарисовать поле в текстовом экране, вместо фигур буквы (Q - ферзь, K - конь, N - слон и т.д....)
 
 второе. Если не сказано, что программа должна сама играть (ну, что тоже самое, обеспечивать режим игры игрока с компьютером), то можно сделать игру шахматы для двух человек - поочерёдно ходящих на одной компьютерной доске.
 графику в DOS можно посмотреть здесь - http://sources.ru/pascal/graph/index2.htm
 или http://pascal.sources.ru/cgi-bin/incoming.cgi
 например, я проверил модуль PCX-Sharp 2.01 - Модуль для Работы с PCX файлами   Ivan Kalininskiy   Модуль для вывода на экран PCX изображений
 работает как часы ;-)
 и, кстати, там есть игра Шахматы в текстовом режиме - Game "Chess"
 
 
 ну и последнее.
 вот готовые реализации шахмат:
 Chess Program Sources
 вот, например, проверил KC CHESS Kevin & Craig's Chess Program - всё играет... (правда, очень слабенько ;-))
 
 
 
 Добавлено:
 
 Цитата:
 | Для заданного K, вычислить K-тую цифру последовательности 2 4 6 8 1 0 1 2 1 4 1 6 1 8 2 0 2 2 2 4 2 6 2 8 3 0 ...
 | 
 
 a008888
 
 Цитата:
 | Код:
 | for i:=1 to K do St:=St+StAUX;
 | 
 | 
 есть одна особенность (не знаю, специально или так получилось...),
 но цикл тут крутится ЯВНО с избытком (например, для того, чтобы найти 10 член последовательности (а это последняя цифра числа 14) - то будет составлена последовательность всех чисел до 20 включительно...)
 
 Кроме того, в TurboPascal/MS DOS - длина строки ограничена 255 символами, это означает, что при K>250  (приблизительно) данный алгоритм работать не будет....
 
 вот решение лишённое этих недостатков:
 
 Код:
 | {Для заданного K, вычислить K-тую цифру последовательности
 2 4 6 8 1 0 1 2 1 4 1 6 1 8 2 0 2 2 2 4 2 6 2 8 3 0 ...}
 var
 k,i,m,LenAll : integer;
 s : string;
 begin
 Write(' Введите k: ');
 readln(k);
 
 LenAll := 0;
 i:=2;
 
 while LenAll<k do begin
 Str(i:1, s);
 if (LenAll+Length(S))>=k then
 begin
 m := k - LenAll;
 WriteLn(k:1,'-я цифра = ',Copy(S,m,1));
 end;
 LenAll := LenAll+Length(S);
 i := i + 2
 end;
 
 readln;
 end.
 
 | 
 
 |