Процедури за дати

Да се напише програма, съдържаща и демонстрираща процедури за:

  1. връщане на датата на създаване на програмата (като параметри ден, месец и година)
  2. отпечатване на дата, при подадени като параметър ден, месец и година
  3. преминаване  в следваща година, при подаден параметър текуща година
  4. преминаване в следващ месец, при подадени като параметри месец и година
  5. преминаване в следващ ден, при подаден като параметри ден, месец и година
Публикувано в 10в с етикети . Постоянна връзка.

2 Responses to Процедури за дати

  1. kaloyan каза:

    По пета точка(5.преминаване в следващ ден, при подаден като параметри ден, месец и година) програмата ми работи само с години от 2000 до 2396(заради месец февруари, който през 4 години има 29 дни)

    procedure data_sazdavane;
      begin
        writeln('Programata e sazdanena na 13.14.2013');
      end;
    
    procedure data(den,mesec,godina:integer);
      begin
        write('Vavedi Den.Mesec.Godina: '); readln(den, mesec, godina);
        writeln(den,'.',mesec,'.',godina);
      end;
    
    procedure next_year(godina:integer);
      begin
        write('Tekushta godina: '); readln(godina);
        writeln('Sledvashta godina: ',godina+1);
      end;
    
    procedure next_month(mesec,godina:integer);
      begin
        write('Tekusht mesec(mesec.godina): '); readln(mesec, godina);
        if mesec=12 then
          begin
            godina:=godina+1;
            mesec:=1;
          end
        else mesec:=mesec+1;
        writeln('Sledvasht mesec: ',mesec,'.',godina);
      end;
    
    procedure next_day(den,mesec,godina,i,y:integer);
      begin
      write('Tekushta data: '); readln(den,mesec,godina);
      y:=1996;
        case mesec of
          1,3,5,7,8,10,12:if den=31 then
            begin
              den:=1;
              if mesec=12 then
                begin
                  mesec:=1;
                  godina:=godina+1;
                end
                else mesec:=mesec+1;
            end;
          2:for i:=1 to 100 do
              begin
                y:=y+4;
                if godina=y then
                  if den=29 then
                    begin
                      den:=1;
                      mesec:=mesec+1;
                    end
                  else den:=den+1;
              end;
          4,6,9,11:if den=30 then
                     begin
                       den:=1;
                       mesec:=mesec+1;
                     end
                   else den:=den+1;
        end;
      writeln('Sledvasht den: ',den,'.',mesec,'.',godina);
      end;
    
    VAR den,mesec,godina,i,y:integer;
    BEGIN
      data_sazdavane;
      data(den,mesec,godina);
      next_year(godina);
      next_month(mesec,godina);
      next_day(den,mesec,godina,i,y);
    readln;
    END.
    • Данаил каза:

      Охо, още едно решение! Калояне, имам следните забележки по кода:

      1. В условието пише „връщане на датата на създаване на програмата (като параметри ден, месец и година)(като параметри ден, месец и година)“ – а не отпечатване. Когато го отпечаташ само се вижда на екрана, а когато го върнеш като параметри информацията може да се ползва и от другите функции, например. Така функцията става по-универсална – може да се ползва за различни неща, не само за визуализиране на екрана
      2. не трябва да се въвежда, а да се подава като параметри – отново за да бъде функцията по-универсална
      3. (и следващите) – не трябва входните данни да се въвеждат, а да се подадат като параметри. Не трябва резултата да се извежда, а да се подаде като параметър (или чрез Result) обратно към главната програма.
      4. за намирането на високосна година – виж, има такива задачи решени в сайта или виж в Уикипедия коя година е високосна. Ти си го намерил по много сложен начин. И променливите i и j може да ги декларираш във функцията next_day, а не да ги подаваш като параметри – виж коментара ми към едно от другите ти решения.

      Радвам се, че започна пак да решаваш задачите от сайта. Без самостоятелна работа няма как да се постигне съществен резултат.

Вашият коментар