• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Задача про День учителя

  • Автор темы Автор темы ypaxapa
  • Дата начала Дата начала

ypaxapa

Новые
Регистрация
17 Ноя 2009
Сообщения
16
Реакции
0
Баллы
0
Задача про День учителя

Уважаемые... задание таково : День учителя ежегодно отмечается в первое воскресенье октября. Дано натуральное число n, означающее номер года. Определить число, на которое в октябре указанного года приходится День учителя. Язык делфи.
 
Сдать нужно было, как всегда, вчера? Как срочно нужно сделать?
 
ну правда твоя почти правильна) сдать так то завтра, но я до послезавтра оттяну)...
 
VCL или терминальное приложение?
 
А вы вообще понимаете, о чем я вас спросил? Просто листинг, в принципе, будет совпадать, а выглядеть приложения будут по разному.

Если никто раньше не сделает, отложим до завтра, реализация, думаю, будет в виде VCL-приложения, но нужно малость обдумать код, а сейчас не могу, потому что ночь уже :).
 
прошу прощения... я конечно понимаю что на мат нарываюсь, но для решения этой задачи можно использовать лишь простые команды(без массивов)...
задание уточнено было просто...
 
Естественно, без массивов. В программе только формулы и обработчики (процедуры), больше ничего нет :). Благодаря Vladimir_S был определен способ решения, программа реализована при помощи Borland Developer Studia 2006, в виде VCL-приложения.

Архив приаттачен с посту, скачайте, распакуйте и запускайте исполнимый файл.
 

Вложения

Скажу спасибо я)... только жаль что не примут))... как представляете что студент первого курса сделал такое вот?)) Просто нельзя такие команды использовать... самое сложное что можно это циклы. Ну а программа то супер написана конечно))
 
Представляю прекрасно. У меня в школе на профиле подобные задачи одиннадцатиклассники пишут :).

Я же вас спрашивал, в какой именно форме нужно реализовать! Консольное (терминальное) приложение было бы похоже на программу на Паскале, но вы не дали четкого ответа. Вот я и выбрал вариант, что полегче :D.

Найдите в распакованном архиве файл unit1.pas и откройте его с помощью Блокнота. Можете убедиться, что, кроме процедур обработчиков, команд ветвления и вычислений, в листинге программы ничего неизвестного нет, даже циклов :).
 
ну я то открою, да вот препод вряд ли это сделает))... тем более уж извини, но студент которые якобы только только основы языка изучил такую матёрую прогу не напишет)) А касательно чёткого ответа прошу прощения... я не совсем просто понял эти два ветвления, и об одинаковом значении слов консольная-терминальная не имел знания...
 
какие ветвления вы не поняли?

Код:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in ['0'..'9']) then key:=#0;
end;
Эта процедура отслеживает нажатия клавиш при вводе даты и не позволяет ввести вместо цифр другие символы. key - оператор, возвращающий значение нажатого символа.

В процедуре обработчика нажатия кнопки Button1 ветвление
Код:
if not (edit1.Text='') then n:=strtoint(edit1.Text) else n:=0;
нужно для избежания ошибки обработки текстового поля Edit1. Если не введено никакого значения, то считается, что введен 0. Далее идет ветвление, обрабатывающее значение введенного года. Так как праздник День Учителя у нас в стране начали отмечать с 1994 года, то все даты до этого года считаются ошибочными, в том числе и 0. Если дата введена верно, то идет расчет. Окончательный результат передаются в Memo1 в виде добавления строки.

В программе предусмотрено контекстное меню, содержащее 3 команды: Расчет, О программе, Выход. Эти команды привязаны к соответствующим обработчикам.
 
Значения слов терминальная и консольная различаются, просто нужно было уточнить, что я имел в виду, а не отдавать все на откуп моему извращенному Pascal-ем мышлению :)

Для терминального приложения листинг можете взять здесь, но нужно будет его адаптировать под вашу версию Delphi.
 
я конечно понимаю что на вашем-то уровне это всё лёгко и очевидно... Препод вредный на радостях попросит ввести и 1756 г. только ради проверки программы, причём именно чтобы число выдало... так что прошу простить, но эта программа слишком крута для первокурсника...
 
спасибо за ссылку... ну и за помощь соответственно))
 
Ну так вы ему объясните, что вводить даты ранее даты введения праздника - верх бессмысленности, поэтому и установлен нижний предел во 2 октября 1994 года :D

Если будут вопросы, на что опирались при написании программы, скажите, что воспользовались базой Delphi World, настоящий дельфоид знает, что это такое и вопросы отпадут :)
 
ну я так и сделаю по вашему совету)) я даже знаю что ответит она мне, но не важно... думаю выкручусь))
 
У вас какая версия Delphi установлена? А то я напишу консольный вариант, а вы проект не сможете открыть, чтобы показать. Экзешник, конечно, можно запустить, но для преподавателя важен ход мыслей, что и откуда вы брали при создании программы.
 
У меня версия 7.0.4...
 
Borland Delphi если вас это интересует)
 
Назад
Сверху