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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.12.2008, 16:58   #1
MariyaVo
Пользователь
 
Аватар для MariyaVo
 
Регистрация: 03.11.2008
Сообщений: 13
Печаль Дан файл, содержащий информацию о багаже нескольких пасажиров (кол-во вещей и их общий вес)

Дан файл, содержащий информацию о багаже нескольких пасажиров (кол-во вещей и их общий вес), информация о багаже каждого отдельного пассажира представляет собой пару чисел. Определить, имеются ли 2 пассажира , багажи которых совпадают по кол-ву вещей и различаются по весу не более чем на 0.5 кг
MariyaVo вне форума Ответить с цитированием
Старый 08.12.2008, 17:07   #2
Sm1Le
Форумчанин
 
Аватар для Sm1Le
 
Регистрация: 31.10.2008
Сообщений: 500
По умолчанию

Наработки есть ? Работать с файлами умеем ?
Skype : UASm1Le.
Sm1Le вне форума Ответить с цитированием
Старый 08.12.2008, 17:34   #3
MariyaVo
Пользователь
 
Аватар для MariyaVo
 
Регистрация: 03.11.2008
Сообщений: 13
По умолчанию

Код:
var 
   k, c, z : integer;
   m, d : real;
   f, f1 : text;
   s : boolean;

Procedure OpenInFile (var f : text; msg : string);
var
   Name : string;
   Error : integer;
begin
   repeat  
       writeln (msg);
       readln(name);
       assign(f, name);
       reset(f);
       Error:=IOResult;
       if Error <>0 then
           writeln ('файл не открыт');  
   until
      Error=0;
end;

begin 
   OpenInFile(f, 'Введите путь к файлу');
   s:=false;
   while not eof(f1) do begin
       readln(f1, k, m);
       while not eof(f1) do begin
           readln(f1, c, d);
           if (k=c) and (abs(m-d)<=0.5) and (s<>true) then begin
               writeln ('Да, такие пассажиры есть');
               s:=true;
           end;
       end;
   end;
   if s=false then
      wrireln ('Нет, таких пассажиров нет');
readln;
close(f1);
end.

Последний раз редактировалось rpy3uH; 09.12.2008 в 13:42.
MariyaVo вне форума Ответить с цитированием
Старый 08.12.2008, 17:40   #4
MariyaVo
Пользователь
 
Аватар для MariyaVo
 
Регистрация: 03.11.2008
Сообщений: 13
По умолчанию

Проблема вот в чем:
у меня сравнивается первая строка файла (информация о первом пассажире) со второй (информация о втром пассажире), потом с третьей и т.д. Потом чтетие файла заканчивается. И программа завершается.Но это не правильно!!!
А мне нужно сделать так, чтобы после первого чтения файла, происходило втрое, в котором мы сравниваем второю строку со всеми последующими... потом третью с последующими, и так пока предпоследнюю с последней (если раньше пары не было)...
И считывать файл до тех пор пока не найдется пара пассажиров удовлетворяющая условиям задачи
MariyaVo вне форума Ответить с цитированием
Старый 08.12.2008, 23:10   #5
SuperVisor
Павел Сергеевич
Форумчанин
 
Регистрация: 05.11.2006
Сообщений: 665
По умолчанию

Проблема вот где:
Код:
while not eof(f1) do 
begin
  readln(f1, k, m);

  while not eof(f1) do
  begin
    readln(f1, c, d);
Задумка верная, однако получается, что у тебя выполняется сначала одно условие вложенного цикла (while not eof(f1)) а следом за ним второе, уровнем выше. Создай 2 файловых переменных.

.... Вгляделся - а ведь есть такое, так что сделай таким образом:
Код:
while not eof(f) do 
begin
  readln(f, k, m);
  while not eof(f1) do begin
  readln(f1, c, d);
  if (k=c) and (abs(m-d)<=0.5) and (s<>true) then begin
...
Ну вот, собственно, и вся проблема... )) Ах, да: первом цикле нужно ставить курсор на начало второго файла.
З.Ы. при открытии не помешает счетчик - иначе повиснуть можем.
Познавая других, мы познаем себя.
С'est la vie...
SuperVisor вне форума Ответить с цитированием
Ответ


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

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
создайте файл,содержащий суммы соответствующих чисел файлов Zara Паскаль, Turbo Pascal, PascalABC.NET 1 02.12.2008 19:26
Необходимо создать файл, содержащий информацию о багаже пасажиров Андрю)(@ Помощь студентам 3 27.11.2008 10:08
Необходимо создать файл, содержащий информацию о багаже пасажиров Андрю)(@ Паскаль, Turbo Pascal, PascalABC.NET 3 26.11.2008 23:58
Как в С++ вывести(записать ) информацию в файл, когда инфа находится в методе класса? Artur_cod Общие вопросы C/C++ 1 06.05.2007 00:34