Классные программы в паскале

Постановка задачи: Дан текст, содержащий стоимость некоторых товаров в копейках, например 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 редактор формул
  • Универсальный калькулятор
  • Числовой калькулятор
  • Сфоткай и добавь свою задачу
  • Решения задач из Сканави
  • Характеристика студента онлайн
  • Диаграммы и графики онлайн
  • Конструктор программ на Паскале
  • Самые популярные материалы
  • Доска почета: лучшие пользователи

telegram

Анекдоты и фразы

«Человеческая глупость дает представление о бесконечности. «

Источник: primat.org

Как написать игру на Паскале

Начинающему программисту не стоит сразу браться за написание на языке Паскаль сложной, многоуровневой игровой программы. Начать следует с логической или математической игры с текстовым интерфейсом. Постепенно набираясь опыта, можно переходить к работе над более крупными проектами.

Как написать игру на Паскале

Статьи по теме:

  • Как написать игру на Паскале
  • Как создавать игры на Паскале
  • Как написать игровую программу

Инструкция

Начните работу над программой с заголовка и указания перечня используемых подключаемых модулей:

Читайте также:
Installshield wizard не устанавливает программу

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

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru