Постановка задачи: Дан текст, содержащий стоимость некоторых товаров в копейках, например 212, 5003, 103, 3432 и т. д. Выразить цену в рублях и копейках, напри¬мер 2 руб. 12 коп., 50 руб. 03 коп., 1 руб. 03 коп. и т. д. (число копеек записывается всегда двумя цифрами).
Определить функцию для проверки делится ли целое число на каждую из его цифр без остатка.
Язык программирования Паскаль» Категория: Примеры программ.
Постановка задачи: Необходимо определить функцию для проверки делится ли целое число на каждую из его цифр без остатка. Напечатать такие числа в интервале от 10 до 1000.
Анализ задачи: Следует разработать программу, выполняющую обычный поиск чисел с помощью цикла, удовлетворяющих данному условию.
Дано натуральное число N. Необходимо вычислить произведение первых N сомножителей: 1/2*3/4*5/6*. ;
Язык программирования Паскаль» Категория: Примеры программ.
Выполним краткий анализ, постановки задания:
Исходя из приведенной последовательности исходных данных можно проследить закономерность изменения значений числителя и знаменателя. На основании выявленной закономерности изменения значений числителя и знаменателя сомножителей последовательности следует выполнить вычисление произведения заданного количества множителей.
Пример программы на Паскале
Дана матрица A размером KxM. Получить транспонированную матрицу A* и произведение AxA*.
Язык программирования Паскаль» Категория: Примеры программ.
Следует разработать программу, выполняющую стандартные математические операции транспонирования и умножения матриц. Для хранения матриц используются двумерные массивы (исходная матрица А и результирующая матрица А*), размерность матриц задается с клавиатуры.
Для матрицы A (4 строк, 5 столбцов) вычислить выражение y=(1-P[5])^2+(2-P[4])^2+. +(5-P[1])^2 , где P[k] — произведение отрицательных элементов в k-том столбце матрицы А.
Язык программирования Паскаль» Категория: Примеры программ.
Для матрицы A (4 строк, 5 столбцов) вычислить выражение y=(1-P[5])2+(2-P[4])2+. +(5-P[1])2 ), где P[k] — произведение отрицательных элементов в k-том столбце матрицы А.
Для вычисления произведения отрицательных элементов в произвольном столбце матрицы использовать процедуру.
Источник: mojainformatika.ru
Приколы от админа (PASCAL)
Есть у нас на форуме такая рубрика «Приколы от админа». Но вот решил один из приколов выложить в новостях. Дальше приведена простенькая программка на Паскале. Компилируется без проблем, все правильно по синтаксису. Но не работает. Попробуйте найти ответ — почему? Аналогичные задачки можно найти на нашем форуме. (Эта программка когда-то попала в мою коллекцию с какого-то сайта).
Высказывайтесь!
var x1,y1,x2,y2,dx,dy:integer; d:real; begin x2:=520;y2:=200; x1:=320;y1:=200; dx:=x2-x1; dy:=y2-y1; d:=dx*dx+dy*dy; d:=sqrt(d); end.
2008-10-18 • Просмотров [ 20820 ]
Порядок вывода комментариев:
var x1,y1,x2,y2,dx,dy:integer;
мобильная игра F1 на Паскале | (Программирование на PascalABC.net)
d:real;
q;=char;
begin
x2:=520;y2:=200;
x1:=320;y1:=200;
dx:=x2-x1;
dy:=y2-y1;
d:=dx*dx+dy*dy;<. >;
d:=sqrt(d);<. >;
writeln(q
. так там вывода не хватает. у меня 200 получилось
вместо integer нужно вписать logint, тогда все будет нормально.
Serg прав, longint(!) и все.
Здачка в принципе не сложная. Но я сам посидел и поморочился, пока что то сложилось. Проверил несколько способов решения. Есть много информации по этому поводу.
PS.(Не столько совесть замучила, сколько подсознание вернулось).
Решил проверить насколько дал реальные советы по реальному типу:
«2»)оказалось, что локальное приведение типа integer->real в TurboPascal
не работает (в моей голове это глюк- из MatLab’а, др.языков
и общей идеологии компиляции арифметических выражений со смешанными, но совместимыми, типами данных).
«1»)с промежуточными переменными- всё в порядке
(как собственно написал ещё вчера Anton Golub (DoVe)):
добавим в начале:
function test(dx,dy: Real): Real;
Begin
test := dx*dx+dy*dy;
End;
и встроим строчку с вызовом:
+)Пример «не сработает» если компилировать с ключами .
До вычисления кв.корня появится ошибка переполнения.
По-видимому, они (ключи) были у Вас сброшены.
Не забывайте и о TurboDebagger’е, он проявит все детали.
При :
PROGRAM.16: d:= dx*dx+dy*dy; <. >
cs:00D1>A15A00 mov ax,[PROGRAM.DY]
cs:00D4 F7265A00 mul word ptr [PROGRAM.DY]
cs:00D8 8BC8 mov cx,ax
cs:00DA A15800 mov ax,[PROGRAM.DX]
cs:00DD F7265800 mul word ptr [PROGRAM.DX]
cs:00E1 03C1 add ax,cx
cs:00E3 99 cwd
cs:00E4 9A3636CC67 call 67CC:3636 ; преобразование к real
cs:00E9 A35C00 mov [PROGRAM.D],ax
cs:00EC 891E5E00 mov [005E],bx
cs:00F0 89166000 mov [0060],dx
PROGRAM.18: d:=sqrt(d);
При :
PROGRAM.16: d:= dx*dx+dy*dy; <. >
cs:00DF>A15A00 mov ax,[PROGRAM.DY]
cs:00E2 F72E5A00 imul word ptr [PROGRAM.DY]
cs:00E6 7105 jno 00ED
cs:00E8 9AC702CE67 call 67CE:02C7 ; уход на вопли №215
cs:00ED 8BC8 mov cx,ax
cs:00EF A15800 mov ax,[PROGRAM.DX]
cs:00F2 F72E5800 imul word ptr [PROGRAM.DX]
cs:00F6 7105 jno 00FD
cs:00F8 9AC702CE67 call 67CE:02C7
cs:00FD 03C1 add ax,cx
cs:00FF 7105 jno 0106
cs:0101 9AC702CE67 call 67CE:02C7
cs:0106 99 cwd
cs:0107 9A3636CE67 call 67CE:3636
cs:010C A35C00 mov [PROGRAM.D],ax
cs:010F 891E5E00 mov [005E],bx
cs:0113 89166000 mov [0060],dx
PROGRAM.18: d:=sqrt(d);
Паскаль хотя и относится (номинально) к учебным языкам требует
осторожности и чёткого осознания — чего и как программист хочет сделать
(т.е. предполагает скорее профессионального программиста).
(Иначе получается GIGO — «Garbage In Garbage Out»).
Комментарии «почти» правильные, за исключением того, что
по идее компилятор должен был бы посмотреть на тип приёмника (real)
и производить все действия «поднимая» типы промежуточных рез-тов
до него,
на деле же TurboPascal работает с локальным (только для текущей операции) подъёмом типа,
т.е. если бы переменная dy была объявлена extended, то вычисление dy*dy (=0) произошло бы в формате extended,
далее сложение с результатом dx*dx — в нём же
(результат столь же неправильный).
В данном примере, если требуется, чтобы dx была объявлена integer,
то надо использовать: либо промежуточные ячеёки типа real
(и умножать их),
либо локальное приведение типа: d:=real(dx)*dx+real(dy)*dy;
Походу прикол в том, что dx*dx > чем максимальное значение integer. И в результате переменная d в строке d:=dx*dx+dy*dy (d:= 200*200 +0*0) = 40 000 при максимально допустимое 32 768. разница в 7 232. При переполнении число приминает значение -32 768 (минимальное значение) + 7 232 что равно -25536 (чему и равно собственно d до попытки добыть из него корень) . А поскольку комплексных чисел паскаль не знает добыть корень у него не получаеться
при замене всех чисел на действительные всё работает нормально. а так при расчете перменной «де» происходит недопустимая операции при работе с числами с плавающей запятой. почему-пока не понятно.. возможно при преобразовании значений целых чисел в действительное происходит такая ошибка.
Новые сообщения
- Ступінь бакалавра проти магістра: дослід.
- Про отличников и программирование
- Гейм-дизайнеры — архитекторы виртуальных.
- Руководство программиста по поиску идеал.
- CRM-системы для повышения эффективности .
- Чи потрібно витрачатися на професійну си.
- Онлайн игры для девочек: собирай пазлы и.
- Как правильно оформить билеты на поезд о.
- 7 причин купить геймерское кресло
- Электровелосипед — модное и усовершенств.
- Все сообщения
Новое в библиотеке
- Проблемы изучения математики в 3 кла.
- Проверить будет ли число простым — P.
- Сумма цифр числа в Python
- Пузырьковая сортировка в Python
- Алгоритм Эвклида для НОД в Python
- Все материалы библиотеки
Лучшее на сайте
- Онлайн-решебник задач
- MathPad -математический блокнот
- LaTeX+MarkDown редактор формул
- Универсальный калькулятор
- Числовой калькулятор
- Сфоткай и добавь свою задачу
- Решения задач из Сканави
- Характеристика студента онлайн
- Диаграммы и графики онлайн
- Конструктор программ на Паскале
- Самые популярные материалы
- Доска почета: лучшие пользователи
Анекдоты и фразы
«Человеческая глупость дает представление о бесконечности. «
Источник: primat.org
Как написать игру на Паскале
Начинающему программисту не стоит сразу браться за написание на языке Паскаль сложной, многоуровневой игровой программы. Начать следует с логической или математической игры с текстовым интерфейсом. Постепенно набираясь опыта, можно переходить к работе над более крупными проектами.
Статьи по теме:
- Как написать игру на Паскале
- Как создавать игры на Паскале
- Как написать игровую программу
Инструкция
Начните работу над программой с заголовка и указания перечня используемых подключаемых модулей:
program reshiprimer;
uses crt;
Укажите компилятору, какие в состав программы будут входить переменные:
Здесь a и b — слагаемые, c — сумма, d — ответ на вопрос о том, желает ли пользователь играть дальше.
Обозначьте начало программы и бесконечного цикла, а также инициализируйте генератор случайных чисел:
begin
randomize;
while 0=0 do
begin
Запрограммируйте генерацию двух случайных чисел в диапазоне от 0 до 1000:
Покажите пользователю пример, который он должен решить, а затем запросите результат:
Сообщите пользователю, правильно ли он решил пример:
if a+b=c then writeln(‘Правильно!’) else writeln(‘Неправильно!);
Спросите у пользователя, желает ли он играть еще:
writeln(‘Будем играть дальше?’);
readln(d);
При отрицательном ответе завершите работу программы:
if upcase(d)’Y’ then halt(0);
Завершите сначала цикл, а затем и саму программу:
Обратите внимание на точку после второго оператора end.
Запустите программу, нажав Ctrl+F9. На экран будет выведен первый пример. Сосчитайте в уме и введите ответ на него. Машина тут же сообщит вам, правильно ли он решен. Затем будет задан вопрос о том, желаете ли вы играть дальше.
Ответ Y или y приведет к выводу следующего примера, а ввод любой другой буквы — к завершению работы программы.
Добившись правильной работы игры, приступите к ее усовершенствованию. Например, добавьте очистку экрана перед показом каждого нового примера командой cls. Используя процедуру textcolor, сделайте, чтобы надписи выводились различными цветами. Подумайте, как можно заставить программу автоматически менять сложность примеров: при правильных ответах усложнять их, а при неправильных — упрощать. Чтобы разнообразить игру, добавьте функцию генерации примеров на различные математические действия.
Совет полезен?
Статьи по теме:
- Как написать игровой движок
- Как создать свой симулятор
- Как создать игровой движок
Комментарии 1
написал 2 января 2017
Вот только работает некорректно. Потому что секунды идут явно медленнее, чем в жизни.
Добавить комментарий к статье
Похожие советы
- Как написать программу в Turbo Pascal
- Как создать свою игру чайнику
- Как программировать на Pascal
- Как написать программу на паскале
- Как написать программу для игр
- Как создать файл в паскале
- Как создавать игровые движки
- Как программировать игры
- Как написать простую игру
- Как сделать простейшую программу в 2017 году
- Как создать логические игры
- Как решать задачи в паскале
- Как сделать квест
- Как запускать программы на паскале
- Как создать свою аркаду
- Как создать квест-игру
- Как написать игру
- Как создавать текстовые программы
- Как написать движок для игры
Новые советы от КакПросто
Рекомендованная статья
Как происходит заражение компьютера вирусом
Наиболее слабое звено в цепи компьютерной безопасности — это сам пользователь. Наличие установленного на компьютере.
Источник: www.kakprosto.ru