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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.01.2016, 15:57   #1
ALena77
 
Регистрация: 18.10.2015
Сообщений: 8
По умолчанию Turbo Pascal. Даны целочисленные файлы f и g одинаковой длины. Оставить в f только те компоненты, значения которых больше...

Даны целочисленные файлы f и g одинаковой длины. Оставить в f только те компоненты, значения которых больше компонентов файла g.
ALena77 вне форума Ответить с цитированием
Старый 09.01.2016, 18:53   #2
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,547
По умолчанию

Задание некорректное, можно понять как оставить те компоненты, что больше всех компонентов файла g. Должно быть явно указано, что больше соответствующих компонентов файла g.
Но это лирика. От нас вы чего хотите? Если готового решения, то бегом во Фриланс.
Arigato вне форума Ответить с цитированием
Старый 09.01.2016, 19:02   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Согласен с уточнением Arigato.

ALena77, в этом задании единственная возможная сложность - это удаление компонентов файла. Но, раз в задании нет ограничения, я бы поступил так - открыл ТРЕТИЙ файл на запись, в него записал только те компоненты файла f, которые должны остаться (которые больше соответствующих компонент файла g). после окончания удалил файл f и переименовал временный файл в то имя, которое было у файла f.
Это очень просто.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 09.01.2016, 19:24   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
program Project1;

var f,g:file of integer;
  s,i,c:integer;
  a,p:^integer;
begin
  {Открываем файлы}
  Assign(f,'f');Rewrite(f);
  Assign(g,'g');Rewrite(g);
  {Наполняем данным}
  for i:=1 to 10 do write(f,Random(100));
  for i:=1 to 10 do write(g,Random(15));
  {Открываем для анализа}
  Reset(f); Reset(g);
  s:=0;
  {Считываем g, выясняем сумму}
  while not eof(g) do begin
    read(g,i); Write(i:5); s:=s+i;
	end;  writeln;
  {Считываем f выясняем кол-во, которое нужно оставить}
  c:=0;
  while not eof(f) do begin
    read(f,i); Write(i:5);
    if i>s then begin
      {Выводим на экран рядом с теми, что останутся звездочку}
      write('*'); inc(c);
		end;
	end;

  {Переоткрываем файл}
  Reset(f);
  {Еще раз считываем, но уже только те, что будем оставлять в динмассив}
  GetMem(a,c*sizeof(integer)); p:=a;
  while not eof(f) do begin
    read(f,i);
    if i>s then begin
      p^:=i; inc(p);
		end;
	end;
  {И перезаписываем файл f теми, что оставили}
  Rewrite(f); p:=a;
  for i:=1 to c do write(f,p^);
  Freemem(a);


  close(f); close(g);
  readln;
end.
Вот так вот я предлагаю решить эту задачу...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 11.01.2016, 20:09   #5
ALena77
 
Регистрация: 18.10.2015
Сообщений: 8
По умолчанию

Спасибо огромное! Очень выручили!
ALena77 вне форума Ответить с цитированием
Старый 17.01.2016, 20:18   #6
ALena77
 
Регистрация: 18.10.2015
Сообщений: 8
По умолчанию

а Вы уверены,что она работает? Я сейчас проверила, и Random(100) и Random(15) выдаёт мне,как ошибочную переменную.
ALena77 вне форума Ответить с цитированием
Старый 18.01.2016, 08:26   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

просто добавьте переменную, её и пишите в файл.
например, вместо
Цитата:
Код:
 for i:=1 to 10 do write(f,Random(100));
  for i:=1 to 10 do write(g,Random(15));
написать
Код:
 for i:=1 to 10 do begin c:=Random(100); write(f,c) end;
  for i:=1 to 10 do begin c:=Random(15); write(g,c) end
Serge_Bliznykov вне форума Ответить с цитированием
Старый 19.01.2016, 22:05   #8
ALena77
 
Регистрация: 18.10.2015
Сообщений: 8
По умолчанию

Поняла,спасибо за объяснение!
ALena77 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определить количество элементов, значения которых больше 2 элемента масива Димон222 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 12.11.2012 19:12
Оставить в одномерном массиве только уникальные значения phlamey Паскаль, Turbo Pascal, PascalABC.NET 4 25.05.2010 13:37
Даны два слова одинаковой длины. Присвоить переменной К число, равное количеству попарно одинаковых букв. dimon_home Паскаль, Turbo Pascal, PascalABC.NET 1 16.06.2009 08:31
В яцейках есть x=1 x=2 Как убрать x= и оставить только значения Володя Минск Microsoft Office Excel 2 29.10.2008 04:57
В ячейках есть x=1 x=2 Как убрать x= и оставить только значения Володя Минск Microsoft Office Excel 2 27.10.2008 20:54