Теперь давайте рассмотрим решение следующей задачи. Допустим, нам даны два числа D и M, целого типа. Первое число подразумевает день, второе - месяц. Их вводит пользователь, имея в виду какую-либо дату. Требуется определить и вывести значения D и M для даты, которая бы предшествовала введенной пользователю.
Собственно задача целиком и полностью посвящена, на мой взгляд, корректному использованию условий. И скорее всего основная загвоздка будет заключаться в том, что и с чем сравнивать и как написать оптимальный код. Но давайте начнем с алгоритма. Мы имеем два числа, предполагаем, что пользователь, вводящий дату, вводит ее правильно, без 32 декабря или 31 апреля, что значительно облегчает задачу. Переменная M может принимать двенадцать значений, соответствующих порядковым номерам месяцев. Переменная D также может принимать двенадцать значений, но соответствовать они будут количеству дней в каждом месяце. Чтобы решить задачу нам потребуется ориентироваться на значения, которые может принимать D, чтобы верно отобразить дату начала или конца месяца. ПОэтому целесообразно заключить известные нам значения D в массив, не забыв при этом что год у нас високосный. Иными словами arD:Array(31,29,31,30,31,30,31,31,30,31,30,31). На мой взгляд, удобно и значения месяцев также заключить в массив: arM:Array(1,2,3,4,5,6,7,8,9,10,11,12). При введении пользователем даты нам потребуется лишь проверить ее, не является ли она датой начала месяца и если является то, свериться с количеством дней в предыдущем месяце из массива. Также немаловажно учесть, что предыдущим числом по отношению к 1 января является 31 декабря. Таким образом, получим следующие исходники Delphi:
for i := 0 to Length(arM)-1 do begin if M=arM[i] then if (D=arD[i]) or (D>1) then // число из середины месяца begin newD:=D-1; newM:=M end else begin // первое число какого-либо месяца if i>0 then // Если первое с февраля по декабрь begin newD:=arD[i-1]; newM:=M-1 end else begin //Если первое января newD:=arD[length(arD)-1]; newM:=arM[length(arD)-1] end; end end;
В целом, задача несложная, но требует внимательности при расстановке условий, ведь данных, завуалированных в условии предостаточно. Если у вас вызывает сложность такая же программа, только немного другая, готова предложить свои услуги по средствам решения на заказ. Об условиях программы на заказ можно узнать в контактах.
люди подскажите как решеить в турбо делфи задачу такую:
В типизированном файле хранится информация о средней температуре за неделю. а) Вывести информацию о средней температуре за неделю. б) Вывести дни, в которые температура поднималась выше средней. в) Вывести самые тёплые и самые холодные дни.