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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.01.2013, 18:46   #1
ksusha_kse
Новичок
Джуниор
 
Регистрация: 16.01.2013
Сообщений: 3
Восклицание Паскаль.Дописать в файл f строки из файла g, которых нет в файле f .

Даны файлы f и g, содержащие строки. Дописать в файл f строки из файла g, которых нет в файле f . Файл g уничтожить.

имеется вот такой код

Код:
program lab9;

const n=50;
type StrArr=array [1..n] of string;
  SetOfArrElem=set of 1..n;
var Fstr, Gstr : StrArr;
  FSize, GSize:byte;
  F, G:string;
  Mn:SetOfArrElem;
  fl:text;
function ReadFile(var Arr:StrArr; const FName:string):byte;
var fl:text;
  i:byte;
begin
  Assign(fl,FName);
  Reset(fl);
  i:=0;
  while not EOF(fl) do
  begin
    i:=i+1;
    readln(fl,Arr[i]);
  end;
  ReadFile:=i;
  close(fl);
end;
procedure GenerateSet(var GArr, FArr:StrArr; GSize, FSize:byte;var SetOfArr:SetOfArrElem);
var i, j:byte;
begin
  SetOfArr:=[];
  for i:=1 to GSize do
    for j:=1 to FSize do
      if GArr[i]=FArr[j] then SetOfArr:=SetOfArr+[i];
end;

procedure AddStrings(var FName:string; const SetOfArr:SetOfArrElem; GStrings:StrArr; GSize:byte);
var fl:text;
  i:byte;
begin
  Assign(fl, FName);
  Append(fl);
  writeln(fl);
  for i:=1 to GSize do
    if (not (i in SetOfArr)) then writeln(fl, GStrings[i]);
  close(fl);
end;

begin
  Write('File f: ');
  Readln(F);
  FSize:=ReadFile(Fstr, F);
  Write('File g: ');
  Readln(G);
  GSize:=ReadFile(GStr, G);
  GenerateSet(GStr, FStr, GSize, FSize, Mn);
  AddStrings(F, Mn, GStr, GSize);
  Assign(fl,G);
  Erase(fl);
end.
помогите сделать без использования массива
ksusha_kse вне форума Ответить с цитированием
Старый 16.01.2013, 19:12   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

можно каждый раз ПОЛНОСТЬЮ перечитывать файл f, перебирать строки, проверяя их на совпадение. Это будет работать, но это крайне неоптимально!
Чем массив не устраивает?!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 16.01.2013, 19:40   #3
ksusha_kse
Новичок
Джуниор
 
Регистрация: 16.01.2013
Сообщений: 3
По умолчанию

можете пожалуйста кинуть код?

преподаватель сказал не использовать массив...
ksusha_kse вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C++ Дан текстовый файл. Напечатать все строки, длина которых равна данному числу. SaratovAreaNetwork Помощь студентам 3 18.04.2012 18:50
Переписать в новый файл G все строки текстового файла F, которые содержат строковую переменную S (Паскаль) pashka_dos Помощь студентам 1 29.02.2012 23:24
В целочисленной матрице NxM в каждой строке определить числа, которых нет в следующей строке (Паскаль) Sheffdmb2010 Паскаль, Turbo Pascal, PascalABC.NET 3 21.10.2011 08:33
Текстовый файл, из предложения выбросить слова в которых встречается определённая буква. (Паскаль) serhan Помощь студентам 14 25.04.2011 15:29
Не могу дописать, Паскаль строки Айдар Помощь студентам 5 10.02.2010 21:45