Нужно написать программу на Pascal: как определить по дате (число.месяц.год) день недели? Т.е. вводите дату, а должно вывести номер дня недели. Эта программа послужит процедурой для более сложной программы.
Отслеживать
80.2k 9 9 золотых знаков 77 77 серебряных знаков 133 133 бронзовых знака
задан 11 дек 2011 в 19:24
natalia yackunina natalia yackunina
1 3 3 бронзовых знака
Не изобретайте велосипед. Используйте возможности языка программирования
11 дек 2011 в 19:36
Точное определение (с учетом особенностей перехода на летнее/зимнее время в конкретном регионе или даже изменением календаря (РСФСР 1918 год)) для произвольной даты (например много лет назад) может быть весьма сложным. Хотя, судя по названию вопроса, этот комментарий носит теоретический характер.
11 дек 2011 в 20:54
а как переход на зимнее/летнее время может повлиять на определение дня недели по дате.месяцу.году ?
11 дек 2011 в 21:03
А разве процедуры могут возвращать значение?
12 дек 2011 в 7:31
12 дек 2011 в 8:40
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
Free Pascal Program Tutorial 13 — Random Numbers Code Example — Lazarus
Ну смотря на каком языке программируете и возможно эти данные необходимо получить из бд. А вообще переводят дату а юникстаймстамп и далее получают то чего Вы и хотите. Если СУБД то у него есть огромные возможности для работы со временем и датой, можно уже выдернуть с базы данные в нужным Вам виде.
Отслеживать
ответ дан 11 дек 2011 в 21:17
Продолжение банкета.
Я вот не знаю Паскаль, и то погуглил и сразу нашел сайт
Function EncodeDate(Year, Moth, Day: Word): TDateTime; — создает переменную типа дата по дню-месяцу-году
Function DayOfWeek(Date: TDateTime): Integer; — вычисляет день недели по дате
Источник: ru.stackoverflow.com
Программирование на языке паскаль
Вывести сообщения для дней недели с использованием оператора множественного ветвления. Проект – консольное приложение. В программе в разделе объявления типов type определен тип WeekDay из 7 строк. В разделе переменных var объявлена переменная MyWeek этого типа, значениям которой в исполняемой части программы присвоены русскоязычные имена дней недели.
Программа содержит цикл запроса у пользователя номера дня недели в пределах 1..7. После ввода номера в этом интервале с помощью оператора выбора case..of формируется текстовое сообщение о дне недели. Если пользователь вводит номер 0, работа приложения завершается. Ввод чисел, отличных от 0..7, программа рассматривает, как ошибку, и просит повторить ввод,
Classes, SysUtils, RusTrans;
WeekDay=array[1..7] of string;
writeln(Rus(‘Введите номер дня недели 1..7, для конца 0′));
0: s:=Rus(‘Спасибо, до свидания’);
1: s:=Rus(MyWeek[x])+Rus(‘ – день бездельник’);
Паскаль с нуля [ч9]. Оператор выбора case-of и решение задачи про дни недели
2,3,4: s:=Rus(MyWeek[x])+Rus(‘ – рабочий день’);
5: s:=Rus(MyWeek[x])+Rus(‘. Уф, завтра отдыхаем!’);
6: s:=Rus(MyWeek[x])+Rus(‘ – выходной день’);
7: s:=Rus(MyWeek[x])+Rus(‘ – выходной день, а завтра…’);
writeln(Rus(‘Вы ошиблись, повторите’));
if x<>0 then goto 10;
Консоль перед закрытием программы:
- Для безусловной передачи управления применяется инструкция goto .
- Для ветвлений — инструкция If then < инструкция 1>else < инструкция 2>.
- Возможна сокращенная инструкция ветвлений if then < инструкция>.
- Для множественного ветвления можно применить инструкцию выбора case…of. Селектор этой инструкции должен быть порядкового типа (чаще всего целочисленного, например integer).
- Если в ветвях then или else нужно выполнить несколько инструкций, то их нужно объединить в одну составную инструкцию с помощью скобок begin…end.
- Инструкция ветвления может применяться для создания циклов.
Источник: pascal-cod.ru
Написание программы на Паскале с использованием операторов ввода-вывода данных, операторов присваивания и безусловного перехода
Цель работы: Выработать практические навыки работы с системой Free Pascal, научиться создавать, вводить в компьютер, выполнять и исправлять простейшие программы на языке Pascal в режиме диалога, познакомиться с диагностическими сообщениями компилятора об ошибках при выполнении программ, реализующих линейные алгоритмы.
Методические указания:
Линейным называется алгоритм, в котором результат получается путем однократного выполнения заданной последовательности действий при любых значениях исходных данных. Операторы программы выполняются последовательно, один за другим, в соответствии с их расположением в программе.
Пример. Определить расстояние на плоскости между двумя точками с заданными координатами M1(x1, y1) и M2(x2, y2).
Решение задачи.
Математическая модель: расстояние на плоскости между двумя точками M1(x1, y1) и M2(x2, y2) высчитывается по формуле:
Блок-схема алгоритма:
Рис. 1. Блок-схема алгоритма
Переводим блок-схему на язык Паскаль, доработав программу, чтобы улучшить ее интерфейс:
program example1; var x1, x2, y1, y2: Integer; d: Real; begin Writeln(‘Эта программа вычисляет расстояние между двумя точками на плоскости’); Writeln(‘Введите координаты двух точек: ‘); Write(‘x1= ‘); Readln(x1); Write(‘y1= ‘); Readln(y1); Write(‘x2= ‘); Readln(x2); Write(‘y2 =’); Readln(y2); d: =sqrt(sqr(x2-x1)+sqr(y2-y1)); Writeln(‘d= ‘, d: 6: 2); Writeln(‘нажмите Enter для завершения работы программы’); Readln; end.
Контрольные задания.
Задание 1. Даны x, y. Составить программу вычисления значения выражения:
1.1) ![]() |
1.2) ![]() |
1.3) ![]() |
1.4) ![]() |
1.5) ![]() |
1.6) ![]() |
1.7) ![]() |
1.8) ![]() |
1.9) ![]() |
1.10) ![]() |
1.11) ![]() |
1.12) ![]() |
1.13) ![]() |
1.14) ![]() |
1.15) ![]() |
Задание 2. Составить программу для решения следующей задачи:
2.1) Дана длина ребра куба. Найти объем куба и площадь его боковой поверхности.
2.2) Известна длина окружности. Найти площадь круга, ограниченного этой окружностью.
2.3) Вычислить высоту треугольника, опущенную на сторону а, по известным значениям длин его сторон a, b, c.
2.4) По данным сторонам прямоугольника вычислить его периметр, площадь и длину диагонали.
2.5) Три сопротивления R1, R2, R3 соединены параллельно. Найти сопротивление соединения.
2.6) Определить расстояние, пройденное физическим телом за время t, если тело движется с постоянным ускорением а и имеет в начальный момент времени скорость V0.
2.7) Вычислить площадь треугольника по формуле Герона, если заданы его стороны.
2.8) Определить координаты вершины параболы y=ax 2 +bx+c.
2.9) Вычислите число А, если его часть В составляет С%.
2.10) Треугольник задан координатами своих вершин. Найти периметр треугольника.
2.11) Треугольник задан координатами своих вершин. Найти площадь треугольника.
2.12) Определить время падения камня на поверхность земли с высоты h.
2.13) Вычислить площадь треугольника по известным значениям длин его сторон a, b, c.
2.14) Дано действительное число а. Не пользуясь никакими другими операциями, кроме умножения, получить а 7 за четыре операции.
2.15) Дано действительное число а. Не пользуясь никакими другими операциями, кроме умножения, получить а 8 за три операции.
ЛАБОРАТОРНАЯ РАБОТА №3-4.
Написание программы на Паскале с использованием условных операторов и оператора выбора Case
Написание программы на Паскале с использованием
Операторов повтора (For, Repeat)
Цель работы: Научиться правильно использовать условный оператор IF и оператор выбораCASE; научиться составлять программы решения задач на разветвляющиеся алгоритмы.
Методические указания.
Перед выполнением работы необходимо ознакомится с правилами записи логических выражений, операций сравнения, операторов IF, CASE.
Условный оператор if … then … else
Условный оператор предназначен для выбора одного из двух действий, в зависимости от результата проверки условия. В языке Паскаль условный оператор состоит из ключевых слов if (читается как ЕСЛИ), then (ТО, ТОГДА), else (ИНАЧЕ), и имеет два вида – полную и сокращенную формы записи:
IF «условие» THEN «оператор1» ELSE «оператор2»;
где » условие» — выражение логического типа;
» оператор1″ выполняется, если условие верно ( True ),
» оператор2″ выполняется, если условие не верно ( False ).
Сокращенная форма записи условного оператора:
IF «условие» THEN «оператор»;
В этом случае, если условие истинно, то выполняется оператор стоящий за THEN, если же оно ложно, то управление передается оператору, следующему за оператором IF.
Для облегчения чтения программы условный оператор удобно оформлять так:
THEN оператор1
ELSE оператор2;
IF условие THEN оператор1
ELSE оператор2;
Если после Then или Else необходимо выполнить несколько действий подряд в зависимости от условия, то используют составной оператор, который имеет вид:
BEGIN оператор1; оператор2; …END
В этом случае последовательность операторов, заключенных между служебными словами Begin и End (они называются операторными скобками) воспринимаются Паскалем как один оператор.
Условные операторы могут быть также » вложены» друг в друга, а также содержать сложные условия, составленные с помощью логических операций (not (НЕ), or (ИЛИ), and (И)). Отношения, связываемые логическими операциями, заключаются в скобки. Например, требуется определить, есть ли среди чисел А, В, С хотя бы одно отрицательное. Эту задачу решает следующий оператор ветвления:
then write ( ‘YES ‘)
Пример 1. Определить большее из 3 чисел.
Структура этого алгоритма — вложенные ветвления.
Program Primer1;
var А, В, С, D: real;
begin readln(А, В, С);
if A> B
then if A> C then D: =A else D: =B
else if B> C then D: =B else D: =C;
End.
Обратите внимание на то, что перед else точка с запятой не ставится. Вся ветвящаяся часть структуры алгоритма заканчивается на точке с запятой после оператора D: =C.
Пример 2. Составить программу упорядочения значений двух переменных.
Program Primer2;
var X, Y, С: real;
begin readln(X, Y);
if X> Y
then begin С: =X;
end;
End.
Оператор выбора CASE
Оператор CASE (случай) служит для выбора одного из помеченных вариантов действия (операторов), в зависимости от значения » параметра». Оператор имеет вид:
Case » параметр» Of
» список помеченных операторов»
Здесь » параметр» — выражение или переменная простого порядкового типа (целый, символьный, логический), называемая селектором или переключателем.
Из » списка помеченных операторов» выполняется оператор с меткой, включающей значение » параметра», иначе оператор после слова Else. Отметим, что переключатель и метки должны быть одного и того же скалярного типа (но не тип Real! ).
Конструкция Else » оператор» может отсутствовать.
Пример 3. С клавиатуры вводится номер дня недели. Вывести на экран название этого дня.
Program Primer3;
Var
Begin
Write (‘Введите номер дня недели: ’); Readln (day);
case day of
1: writeln (‘Понедельник’);
2: writeln (‘Вторник’);
6: writeln (‘Суббота’)
else writeln (‘Воскресение’)
End
End.
Пример 4. Найти наибольшее из двух действительных чисел, используя оператор выбора. (Здесь селектором является логическая величина).
Program Primer4;
Var Max, X, Y: Real;
Begin
Write (‘Введите два неравных числа: ’); Readln (X, Y);
case X> Y of
true: Max: =X;
false: Max: =Y
End;
WriteLn (‘Максимальное из двух есть’, Max: 12: 6)
End.
Пример 5. В старояпонском календаре был принят двенадцатилетний цикл. Годы внутри цикла носили названия животных: крысы, коровы, тигра, зайца, дракона, змеи, лошади, овцы, обезьяны, петуха, собаки и свиньи. Написать программу, которая по номеру года определяет его название в старояпонском календаре, если известно, что 1996 г. был годом крысы – началом очередного цикла.
Поскольку цикл является двенадцатилетним, поставим в соответствие название года остатку от деления номера этого года на 12. При этом учтем, что остаток от деления 1996 на 12 равен 4.
Program Primer5;
Var Year: integer;
Write (‘введите год’); readln (Year);
case Year mod 12 of
0: WriteLn (‘Год Обезьяны’);
1: WriteLn (‘Год Петуха’);
2: WriteLn (‘Год Собаки’);
3: WriteLn (‘Год Свиньи’);
4: WriteLn (‘Год Крысы’);
5: WriteLn (‘Год Коровы’);
6: WriteLn (‘Год Тигра’);
7: WriteLn (‘Год Зайца’);
8: WriteLn (‘Год Дракона’);
9: WriteLn (‘Год Змеи’);
10: WriteLn (‘Год Лошади’);
11: WriteLn (‘Год Овцы’)
End
End.
Контрольные задания.
Задание 1. Составить программу для нахождения значение функции в точке а. Значение а вводится с клавиатуры.
1.1) ![]() ![]() |
1.2) ![]() ![]() |
1.3) ![]() ![]() |
1.4) ![]() ![]() |
1.5) ![]() ![]() |
1.6) ![]() ![]() |
1.7) ![]() ![]() |
1.8) ![]() ![]() |
1.9) ![]() ![]() |
1.10) ![]() ![]() |
1.11) ![]() ![]() |
1.12) ![]() ![]() |
1.13) ![]() ![]() |
1.14) ![]() ![]() |
1.15) ![]() ![]() |
Задание 2
2.1) По номеру y (y> 0) некоторого года определить С – номер его столетия. Учесть, что, к примеру, началом ХХ столетия был 1901, а не 1900 год.
2.2) По номеру дня недели вывести на печать рабочий это день или выходной, считая выходными субботу и воскресенье.
2.3) По номеру месяца указать, к какому времени года он относится.
2.4) По номеру месяца вывести на печать количество дней в нем.
2.5) Единицы массы пронумерованы следующим образом: 1 – килограмм, 2 – миллиграмм, 3 – грамм, 4 – тонна. Дан номер единицы массы и масса тела M в этих единицах (M — вещественное число). Вывести массу данного тела в килограммах.
2.6) Написать программу, которая бы по введенному номеру времени года (1 – зима, 2 – весна, 3 – лето, 4 – осень) выдавала соответствующие этому времени года месяцы, количество дней в каждом из месяцев.
2.7) Пусть элементами прямоугольного равнобедренного треугольника являются: 1) катет а; 2) гипотенуза b; 3) высота h, опущенная из вершины прямого угла на гипотенузу; 4) площадь S. Составить программу, которая по заданному номеру и значению соответствующего элемента вычисляла бы значение всех остальных элементов треугольника.
2.8) Дано натуральное число N. Если оно делится на 4, вывести на экран ответ N = 4k (где k – соответствующее частное); если остаток от деления на 4 равен 1 – N = Ak + 1; если остаток от деления на 4 равен 2 – N = 4k + 2; если остаток от деления на 4 равен 3 – N = 4k + 3. Например, 12 = 4 • 3, 22 = 4 • 5 + 2.
2.9) Пусть элементами равностороннего треугольника являются: 1) сторона а; 2) площадь S; 3) высота h; 4) радиус вписанной окружности r; 5) радиус описанной окружности R. Составить программу, которая по заданному номеру и значению соответствующего элемента вычисляла бы значение всех остальных элементов треугольника.
2.10) Составить программу для определения подходящего возраста кандидатуры для вступления в брак, используя следующее соображение: возраст девушки равен половине возраста мужчины плюс 7, возраст мужчины определяется соответственно как удвоенный возраст девушки минус 14.
2.11) Составить программу, которая для любого натурального числа печатает количество цифр в записи этого числа.
2.12) Пусть элементами круга являются радиус (первый элемент), диаметр (второй элемент) и длина окружности (третий элемент). Составить программу, которая по номеру элемента запрашивала бы его соответствующее значение и вычисляла бы площадь круга.
2.13) Для целого числа А от 1 до 99 напечатать фразу «Мне k лет», учитывая при этом, что при некоторых значениях k слово «лет» надо заменить на слово «год» или «года». Например, 11 лет, 22 года, 51 год.
2.14) Для каждой введенной цифры (0 – 9) вывести соответствующее ей название на английском языке (0 – zero, 1 – one, 2 – two. ).
ЛАБОРАТОРНАЯ РАБОТА №5-6.
Источник: lektsia.com