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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.06.2014, 11:30   #1
Robot01
Новичок
Джуниор
 
Регистрация: 12.06.2014
Сообщений: 7
По умолчанию Типизированные файлы

Заполнить файлы f и q целыми числами, полученными с помощью генератора случайных чисел. Получить файл t, включив в него по одному разу те элементы исходных файлов, которые входят и в файл f, и в файл q.
Robot01 вне форума Ответить с цитированием
Старый 12.06.2014, 11:55   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Попытки были?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.06.2014, 12:22   #3
Robot01
Новичок
Джуниор
 
Регистрация: 12.06.2014
Сообщений: 7
По умолчанию

Stilet, были попытки с похожими задачами, но эту я даже не понимаю как решить
Robot01 вне форума Ответить с цитированием
Старый 12.06.2014, 13:35   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Наполнить файлы исходными хотя бы сможешь?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.06.2014, 13:52   #5
Robot01
Новичок
Джуниор
 
Регистрация: 12.06.2014
Сообщений: 7
По умолчанию

Stilet, вот так:
Код:
var f,g:file of integer;
    n,a,i:integer;
begin
randomize;
assign(f,'text1');
rewrite(f);
assign(g,'text2');
rewrite(g);
write('Сколько чисел записать в файл F n=');
readln(n);
for i:=1 to n do
 begin
  a:=random(50)+1;
  write(f,a);
 end;
writeln('Содержание исходного файла:');
reset(f);
while not eof(f) do

Последний раз редактировалось Stilet; 12.06.2014 в 13:58.
Robot01 вне форума Ответить с цитированием
Старый 12.06.2014, 14:02   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Вооть. Уже лучше )
А теперь есть два варианта:
1) Считать в динамический массив данные из файлов, и уже по ним циклом прокатываться выясняя совпадения
2) Прокатываться по файлу в цикле
3) Есть еще вариант применить множества, раз у тебя числа целые.
Чему вас там учат то?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.06.2014, 14:53   #7
Robot01
Новичок
Джуниор
 
Регистрация: 12.06.2014
Сообщений: 7
По умолчанию

Stilet, в том то и дело что учат "не ахти" мол почитают лекцию где даже 50% нет того что мы пишем на практике, а задачи сам должен знать как решать вот я и не представляю как дальше быть... Извините но я ваши варианты плохо понял
Robot01 вне форума Ответить с цитированием
Старый 12.06.2014, 15:19   #8
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Вариант Виталия, но чуть подробнее..
Заводишь массив. Заполняешь его числами из F.
Затем читать из G все числа по одному.
Прочитал число, пробежался по массиву, проверил, есть ли оно в этом массиве. Если имеется, то записываешь в T.

И всё..
Poma][a вне форума Ответить с цитированием
Старый 12.06.2014, 15:25   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ладно. Я понял. самостоятельно учиться нет желания, а преподаватели болт кладут.
Вот тебе примерное решение твоей задачи:
Код:
program project1;

{$mode objfpc}{$H+}

uses
  {$IFDEF UNIX}{$IFDEF UseCThreads}
  cthreads,
  {$ENDIF}{$ENDIF}
  Classes
  { you can add units after this };
var f:file of integer; i:integer; s,d,e:set of 0..50;
begin
  // Наполняем файлы
  Assign(f,'w');rewrite(f);
  for i:=0 to 100 do write(f,random(50));
  close(f);

  Assign(f,'q');rewrite(f);
  for i:=0 to 100 do write(f,random(50));
  close(f);

  //Читаем файлы
  Assign(f,'w');reset(f);
  while not eof(f) do begin read(f,i); include(s,i); end;
  close(f);

  Assign(f,'q');reset(f);
  while not eof(f) do begin read(f,i); include(d,i); end;
  close(f);

  //Вписываем то что есть в обоих
   e:=s*d;
  Assign(f,'t');rewrite(f);
  for i:=0 to 50 do if i in e then write(f,i);
  close(f);


end.
Изучай. Разбирайся. Козыряй.
Цитата:
Poma][a
Я передумал насчет массивов
Соединение множеств круче
И писанины меньше.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.06.2014, 15:39   #10
Robot01
Новичок
Джуниор
 
Регистрация: 12.06.2014
Сообщений: 7
По умолчанию

Stilet, я только задачу сделал но она чуть лажает если идут повторяющиеся можете проверить:
Код:
var
  f,q,t:file of integer;
  i,j,n,x,p,k:integer;
begin
    write('n=');
    readln(n);
  assign(f,'1.txt');
  rewrite(f);
   assign(q,'2.txt');
  rewrite(q);
  assign(t,'3.txt');
  rewrite(t);
  randomize;
  writeln('Ôàéë: ');
  for i:=1 to n do
    begin
      x:=random(10);
      write(f,x);
      write(x:4);
    end;
    writeln;
     for i:=1 to n do
    begin
      x:=random(10);
      write(q,x);
      write(x:4);
    end;
  writeln;
  for i:=0 to (FileSize(f)-1) do
  begin
   seek(f,i);
   read(f,x);
    k:=0;
    for j:=0 to (FileSize(q)-1) do
    begin
      seek(q,j);
      read(q,p);
       if x=p then  k:=k+1;
     end;
     if k=1 then
      write(t,x);
       end;
  seek(t,0);
   for i:=1 to (FileSize(t)) do
    begin
      read(t,x);
      write(x:4);
    end;
   close(f);
   close(q);
   close(t);
end.

Последний раз редактировалось Stilet; 12.06.2014 в 16:06.
Robot01 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Очень нужно сделать задачу в Delphi(Типизированные файлы. файлы записи) Vitalik1 Помощь студентам 1 16.12.2011 10:38
ТИПИЗИРОВАННЫЕ ФАЙЛЫ RunDevil Паскаль, Turbo Pascal, PascalABC.NET 4 25.05.2011 10:19
Файлы данных.Типизированные файлы. вылка Помощь студентам 6 17.05.2010 15:42
типизированные файлы felmor Паскаль, Turbo Pascal, PascalABC.NET 0 15.05.2009 09:49
типизированные файлы MyQwErTy Паскаль, Turbo Pascal, PascalABC.NET 7 11.11.2008 20:54