С Новым годом! Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 25.11.2018
Сообщений: 6

Преобразовать файл, удалив из каждой последовательности члены, предшествующие первому минимальному значению.

08.02.2019, 00:30. Показов 1505. Ответов 2

Студворк — интернет-сервис помощи студентам
В файле целых чисел хранятся последовательности целых положи-тельных чисел. Ноль – разделитель последовательностей. Преобразовать файл, удалив из каждой последовательности члены, предшествующие первому минимальному значению.

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
type fInt=file of integer;
var f,f1:fint;
  min:integer;
  
 function min_el(var f:fint):integer;
  var a,min:integer;
  begin
   min:=32767;
   read(f,a);
   while (a<>0) and(not eof(f)) do
    begin
     if (min<a) and(a<>0) then 
      min:=a;
     read(f,a);
    end;
   min_el:=min;
  end;
  
  procedure write_file_2(var f,f1:fint;min:integer);
   var a:integer;
    begin 
     a:=32767;
     while (a<>min)and(not eof(f)) do 
      begin
        read(f,a);
        write(f1,a);
       end;
    end;
    
begin
  assign(f,'c:/pas/name.txt');
  reset(f);
  assign(f1,'c:/pas/nam.txt');
  rewrite(f1);
  while  not eof(f) do 
   begin
    min:=min_el(f);
    write_file_2(f,f1,min);
   end;
  close(f);
  erase(f);
  close(f1);
  rename(f1,'c:/pas/name.txt');
  close(f1);
end.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.02.2019, 00:30
Ответы с готовыми решениями:

Преобразовать файл, сохранив в каждой последовательности члены, предшествующие первому минимальному значению
В файле целых чисел хранятся последовательности натуральных чисел. Ноль — разделитель последовательностей. Преобразовать файл, сохранив в...

Преобразовать файл, удалив из каждой последовательности члены, предшествующие первому минимальному значению
В файле целых чисел хранятся последовательности натуральных чисел. Ноль – разделитель последовательностей. Преобразовать файл, удалив из...

Удалить из каждой последовательности члены, предшествующие первому минимальному значению
в файле целых чисел хранится последовательность натуральных чисел. Ноль-разделитель последовательностей. Преобразовать файл, удалив из...

2
 Аватар для JuriiMW
5095 / 2661 / 2355
Регистрация: 10.12.2014
Сообщений: 10,059
08.02.2019, 14:21
Цитата Сообщение от VitalyTol0903 Посмотреть сообщение
В файле целых чисел
У вас файл точно целых чисел? Или текстовый файл, в котором вы с помощью блокнота написали несколько целых чисел?
Выложите его сюда.

Может быть так:
Pascal
19
20
21
22
  procedure write_file_2(var f1:fint;min:integer);
  begin 
    write(f1,a);
  end;
Ну и, соответственно, вызов: write_file_2(f1,min);
1
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
08.02.2019, 16:16
Задача вообще неверно решается.
Для начала должен быть создан исходный типизированный файл, примерно так.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
var f:file of integer;
    n,m,i,j,k,x:integer;
begin
//создадим исходный файл
assign(f,'tfile');
rewrite(f);
randomize;
n:=5+random(11);//количество групп
for i:=1 to n do
 begin
  m:=5+random(11);//размер групп
  for k:=1 to m do
   begin
    x:=1+random(50);
    write(f,x);
   end;
  if i<n then
   begin
    x:=0;
    write(f,x);
   end;
 end;
//прочитаем что получилось
writeln('Содержание исходного файла');
reset(f);
while not eof(f) do
 begin
  read(f,x);
  write(x:4);
  if (x=0)or(eof(f)) then writeln;
 end;
.........................
Добавлено через 1 час 47 минут
Вот помню что решал эту задачу, но найти на форуме не смог, названия тем пишут кривые, как и в этой
Цитата Сообщение от VitalyTol0903 Посмотреть сообщение
Ошибка времени выполнения: Чтение после конца потока невозможно
А вот на сайте где воруют решения с других форумов(есть такой сайт) нашел то решение.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
var f:file of integer;
    n,k,a,i,j,mn,imn,i1,ip,pp,q:integer;
begin
clrscr;
randomize;
assign(f,'1111');
rewrite(f);
write('Сколько последовательностей записать в файл n=');
readln(n);
for i:=1 to n do
 begin
  k:=5+random(6);{длина последовательности от 5 до 10}
  for j:=1 to k do
   begin
    a:=random(20)+1;
    write(f,a);
   end;
  if i<>n then
   begin
    a:=0;
    write(f,a);
   end;
 end;
reset(f);
writeln('Исходный файл:');
reset(f);
while not eof(f) do
 begin
  read(f,a);
  write(a:4);
  if a=0 then writeln;
 end;
{добавим 0 в начало файла для удобства}
for i:=filesize(f)downto 1 do
 begin
  seek(f,i-1);
  read(f,a);
  seek(f,i);
  write(f,a);
 end;
a:=0;
seek(f,0);
write(f,a);
writeln;
{найдем конец первой последовательности
для определения окончания цикла удалений}
i:=1;
pp:=0;
while(i<filesize(f))and(pp=0) do
 begin
  seek(f,i);
  read(f,a);
  if a=0 then pp:=i-1
  else i:=i+1;
 end;
ip:=filesize(f)-1;{конец последней последовательности
начнем с конца файла, чтобы не сбивались индексы после удаления}
while ip>=pp do{пока не перешагнули через конец первой последовательности}
 begin
  i1:=-1;{начало последовательности, пока не знаем, будем искать}
  j:=ip;
  while(j>=0)and(i1=-1) do
   begin
    seek(f,j);
    read(f,a);
    if a=0 then i1:=j+1{если нашли 0, то за ним начало}
    else j:=j-1;
   end;
  seek(f,i1);
  read(f,mn);
  imn:=i1; {будем искать позицию первого мин. в этой последовательности}
  for j:=i1 to ip do
   begin
    seek(f,j);
    read(f,a);
    if a<mn then
     begin
      mn:=a;
      imn:=j;
     end;
   end;
  if imn>i1 then{если минимальный не первый, будем удалять все, что до него}
   begin
    k:=imn-i1;{количество удалений}
    for j:=1 to k do
     begin
      for q:=i1 to filesize(f)-2 do{сдвигаем на 1 вверх нижние элементы}
       begin
        seek(f,q+1);
        read(f,a);
        seek(f,q);
        write(f,a);
       end;
      seek(f,filesize(f)-1);{удаляем последний}
      truncate(f);
     end;
   end;
  ip:=i1-2;{конец новой последовательности на 2 выше начала предыдущей}
 end;
{удалим первый 0}
for i:=0 to filesize(f)-2 do
 begin
  seek(f,i+1);
  read(f,a);
  seek(f,i);
  write(f,a);
 end;
seek(f,filesize(f)-1);
truncate(f);
writeln;
writeln('Удаление элементов:');
seek(f,0);
while not eof(f) do
 begin
  read(f,a);
  write(a:4);
  if a=0 then writeln;
 end;
close(f);
end.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.02.2019, 16:16
Помогаю со студенческими работами здесь

Сожмите линейный массив, удалив элементы, предшествующие первому встретившемуся минимальному элементу.
Сожмите линейный массив, удалив элементы, предшествующие первому встретившемуся минимальному элементу. помогите..

Все члены данной последовательности с четными номерами, предшествующие первому по порядку члену, домножить на max
Приветствую. Прошу помочь с решением данного задания. Заранее благодарен. Даны целые числа a1,...,an. Все члены последовательности с...

сожмите одномерный массив, удалив предшествующие минимальному)
помогите пожалуйста решить задачку, сожмите одномерный массив, удалив предшествующие минимальному)

Сжать одномерный массив, удалив предшествующие минимальному элементу
текст. Необходимо сжать одномерный массив, удалив предшествующие минимальному элементу. помогите плиз с задачей.

Сожмите одномерный массив, удалив предшествующие минимальному элементы
1.Сожмите одномерный массив, удалив предшествующие минимальному элементы. Помогите пожалуйста! Буду очень благодарна!


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru