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. | |