Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.05.2012, 11:49   #1
Olga Sharik
 
Регистрация: 23.04.2012
Сообщений: 6
По умолчанию Ограничения на ввод-вывод данных

Добрый день! Мне задали решить вот такую задачку, само решение есть, проблема состоит в ограничениях на ввод и вывод данных.

5 декабря 2009 в порту P собралось N круизных лайнеров, совершающих регулярные рейсы и возвращаются к этому порту через ti дней. Какого числа они первый раз снова появятся вместе в этом порту?

Технические условия

Ввод

С клавиатуры вводится количество лайнеров N - целое число от 2 до 10. А затем N целых чисел - периоды их рейсов в днях (целые числа от 1 до 30).

Вывод

На экран или форму выводится дата их возвращения в формате DD/MM/YYYY. Гарантируется, что эта дата не превышает 31/12/2012.

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
Var
i,i2,j,dd,year,g,n,mm :integer;
t :array [1..30] of integer;
f: textfile;

begin
AssignFile(f,'input.txt');
Reset(f);
Read(f,n);

j:=1;

For i:=1 To n Do
  Begin
  Read(f,t[i]);
  j:=j*t[i];
  End;

CloseFile(f);


year:=2009;

For i:=1 To j Do
Begin
g:=0;

For i2:=1 To n Do
If (i mod t[i2]=0) Then
g:=g+1;

If g=n Then
Begin
dd:=5;
mm:=12;

For i2:=1 To i Do
Begin
dd:=dd+1;
If (((mm=2) and (dd=29) and (year=2012)) or ((mm=2) and (dd=28) and (year<2012)))
or (((mm=4) or (mm=6) or (mm=9) or (mm=11)) and (dd=30)) or (dd=31) Then
Begin
dd:=0;
mm:=mm+1;
End
Else

If (mm=13) and (dd=1) Then
Begin
mm:=1;
year:=year+1;
End
Else

End;

AssignFile(f, 'output.txt');
  ReWrite(f);
  WriteLn(f, IntToStr(dd)+'/'+IntToStr(mm)+'/'+IntToStr(year));
  CloseFile(f);

Break;
End;
End;

End;
end.
Проблема состоит в добавлении ограничений на ввод и вывод...
Не должно быть:
n<2 and n>10
t[i]<1 and t[i]>30
дата на вывод не превышает 31.12.2012

В противных случаях в файл "output.txt"должно выдавать соответствующие сообщения:
"Не соответствует кол-во лайнеров"
"Не соответствует кол-во дней"
"Дата превышает допустимую"

Огромная просьба отредактировать код! Очень Нужно!

Заранее огромное спасибо!

Последний раз редактировалось Olga Sharik; 02.05.2012 в 11:51. Причина: Код
Olga Sharik вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ввод/вывод данных turtles Общие вопросы по Java, Java SE, Kotlin 3 11.04.2011 15:39
SQL. Создание ограничения на ввод werser SQL, базы данных 3 10.12.2010 21:47
Ввод/ вывод данных Blad47 Помощь студентам 4 23.09.2010 02:12
C++ ввод/вывод данных Sonny01 Помощь студентам 4 21.03.2010 11:51
Delphi. ввод-вывод данных Maagistr Помощь студентам 0 12.12.2009 17:14