Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 12.03.2008, 14:55
Дельфинка Дельфинка вне форума
Прохожий
 
Регистрация: 12.03.2008
Сообщения: 1
Репутация: 10
Смущение Нужна помощь с задачей (работа с типизированными файлами)

Народ, если можете, помогите пожалуйста!!!

Грузоподъемность пассажирского самолета составляет 30 т. Составить программу для определения веса почтового груза, который можно поместить в самолет после посадки пассажиров и загрузки их багажа. Во время регистрации пассажиров ЭВМ должна подсчитывать количество пассажиров (условный вес одного человека=100кг) и суммировать вес багажа. В списке должна содержаться следующая информация: номер рейса, направление, Ф.И.О. пассажира, вес его багажа, дата отправления. В результате работы программы сформировать список рейсов, вылетевших в определенный день, вычисляя вес почтового груза перевезенного на этом рейсе. Вычислить суммарный объем перевезенного каждым рейсом груза в течение указанного месяца.

Или хотя приблизительно подскажите...
Буду очень благодарна!!!
Ответить с цитированием
  #2  
Старый 12.03.2008, 17:35
Rosenkrantz Rosenkrantz вне форума
Активный
 
Регистрация: 04.12.2007
Адрес: Москва
Сообщения: 234
Версия Delphi: Delphi 7
Репутация: 40
По умолчанию

Приблизительно могу сказать, что работа с типизированными файлами очень проста. Определяете нужный вам тип и данные этого типа пишите и читаете в файл/из файла. Вот примерно так:
Код:
program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

type
  TRegData = record
    FlyNo: String[10];
    FlyDate: TDateTime;
    Destination: String[50];
    PassengerName: String[100];
    LuggageWeight: Double;
  end;

const
  FILE_NAME = 'c:\typedfile.bin';

var
  F: File Of TRegData;
  R1, R2: TRegData;
begin
  // -- Это запись в файл ------------------------------------------------------
  // Открываем файл на запись
  AssignFile(F, FILE_NAME);
  Rewrite(F);
  // Заполняем запись
  R1.FlyNo := 'A100';
  R1.FlyDate := StrToDate('01.01.2008');
  R1.Destination := 'Зимбабве';
  R1.PassengerName := 'Иванов Иван Иванович';
  R1.LuggageWeight := 6.3;
  // Записываем ее в файл
  Writeln(F, R1);
  // Закрываем файл

  // -- Это чтение из файла ----------------------------------------------------
  // Открываем файл на чтение
  AssignFile(F, FILE_NAME);
  Reset(F);
  // Считываем запись
  // Теперь в записях R1 и R2 одинаковые значения
  Readln(F, R2);
  // Закрываем файл
  CloseFile(F);
end.
Для обработки нескольких записей вам нужно будет в программе завести массив записей типа TRegData
Код:
var
  Data: Array [0..200] Of TRegData;
(200 - это количество записей. Для учебного примера вполне достаточно) и организовать циклы:
1) Ввода данных с подсчетом количества заполненных позиций в массиве
2) Записи данных в файл
3) Чтения данных из файла
4) Подсчета веса пассажиров и багажа для выбранного рейса

Цикл записи в файл будет примерно такой:
Код:
...
AssignFile(F, FILE_NAME);
Rewrite(F);
for i := 0 to PassengerCount - 1 do
  Writeln(F, Data[i]);
...

Цикл чтения:
Код:
...
AssignFile(F, FILE_NAME);
Reset(F);
i := 0;
while not EOF(F) do begin
  Readln(F, Data[i]);
  i := i + 1;
end;
PassengerCount := i;
...

После того, как данные введены (или считаны из файла) нужно запросить пользователя, какой рейс (номер, дата) его интересует. Пользователь вводит номер рейса и дату, вы подсчитываете в цикле вес и вычисляете, сколько останется от заявленной грузоподъемности самолета, если все эти толстые пассажиры, по 100 килограмм каждый, займут свои места.

Вот, если приблизительно, то так.
Ответить с цитированием
  #3  
Старый 04.09.2008, 14:33
CrazyMan86 CrazyMan86 вне форума
Прохожий
 
Регистрация: 03.09.2008
Адрес: Владикавказ
Сообщения: 13
Репутация: 10
По умолчанию

У меня вот такой код

Код:
type
    TPlan = record
      PlanName : string[50];
      PlanID : integer;
      check : boolean;
  end;
var PList, PList1 : array [0..100] of TPlan;
    f: file of Tplan;
.............

Assignfile(f, 'spisok.sld');
if not fileexists('spisok.sld') then rewrite(f)
          else
          begin
          reset(f);
          j:=0;
          while not eof(f) do
                begin
                readln(f, Plist[j]);
                j:=j+1;
                end;
          for i:=0 to j-1 do
              if Plist[i].check=true then
                 begin
                 found:=false;
                 g:=0;
                 while (found = false) and (g<=k) do
                       begin
                       if PList1[i].PlanID=PList[g].PlanID then
                          begin
                          found:=true;
                          Plist1[i].check:=true;
                          end;
                       end;
                 end;
          end;

в строке где производится чтение из файла выдает ошибку несовместимости типов.
МОжет кто знает почему???
__________________
Вечность имеет обыкновение проходить очень быстро
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 17:35.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025