3 / 3 / 0
Регистрация: 04.11.2018
Сообщений: 123
1

Удалить из файла повторяющиеся числа, оставив их первые вхождения

29.01.2019, 22:05. Показов 1784. Ответов 3
Метки нет (Все метки)

ЗАДАЧА: Удалить из файла повторяющиеся числа, оставив их первые вхождения.
У меня есть код, но турбо паскаль почему то выводит это:
Входные данные= 1 1 2 2 3 3
Выходные данные= 8241 8242 8243
т. е. совпадает только последнее число, а программа по сути работает правильно, откуда эти 824 берутся, что не так, как это исправить?
Буду очень благодарен за помощь))))

КОД ПРОГРАММЫ:
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
var s,c,c1:integer;
    f:file of integer;
    n,i,j,k,l:integer;
begin
 
assign(f,'C:\lab\sd.txt');
writeln('Входные данные: ');
reset(f);
while not eof(f) do
 begin
  read(f,s);
  write(s,' ');
 end;
writeln;
close(f);
 
reset(f);
k:=0;i:=0;
while i <= filesize(f)-1 do
  begin
  seek(f,i);
  read(f,s);
  j:=i+1;
  while j <=filesize(f)-1-k do
   begin
     seek(f,j);
     read(f,c);
     if c=s then
      begin
       k:=k+1;
       for l:=j to filesize(f)-2 do
        begin
         seek(f,l+1);
         read(f,c1);
         seek(f,l);
         write(f,c1);
        end;
      end
     else j:=j+1;
    end;
   i:=i+1;
 end;
 
seek(f,filesize(f)-k);
truncate(f);
close(f);
 
writeln('Последовательность чисел без повторов: ');
reset(f);
for i:=0 to filesize(f)-1 do
 begin
  read(f,s);
  write(s,' ');
 end;
close(f);
readln
end.
Добавлено через 2 часа 33 минуты
НУ КТО-НИБУДЬ ПОДСКАЖЕТ ГДЕ ОШИБКА В КОДЕ?

Добавлено через 1 минуту
Мне нужна ваша помощь


Добавлено через 1 час 18 минут
Ну может кто знает почему паскаль вообще выдает такие числа??????
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.01.2019, 22:05
Ответы с готовыми решениями:

Удалить из массива повторяющиеся элементы, оставив только их первые вхождения
Как мне удалять повторяющийся элемент? #include &lt;iostream&gt; using namespace std; int main ()...

Удалить из слова все повторяющиеся буквы, оставив их первые вхождения
Условие:Дано слово. Удалить из него все повторяющиеся буквы, оставив их первые вхождения: в слове...

Удалить все повторяющиеся элементы массива, оставив их первые вхождения
Вот условие:Удалить все повторяющиеся элементы,оставив их первые вхождения,то есть в массиве должны...

Удалить из массива повторяющиеся элементы, оставив только их первые вхождения
Помогите, зачёт пишу

3
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32489 / 20975 / 8115
Регистрация: 22.10.2011
Сообщений: 36,249
Записей в блоге: 7
30.01.2019, 00:27 2
Лучший ответ Сообщение было отмечено Космодемьян как решение

Решение

Если файл создать вот так:
Pascal
1
2
3
4
assign(f,'C:\lab\sd.txt');
rewrite(f);
write(f, 1, 1, 2, 2, 3, 3);
close(f);
, а потом открывать и читать с него данные - то все прекрасно работает, как и ожидалось. Это ж file of integer, а не текстовый файл, который ты, скорее всего, создал в Блокноте, и пытаешься потом с ним работать...
1
2373 / 775 / 561
Регистрация: 15.01.2019
Сообщений: 2,394
30.01.2019, 04:09 3
Скажите, Volvo, а что означают/делают эти цифры?

Pascal
1
write(f, 1, 1, 2, 2, 3, 3);
0
Почетный модератор
64279 / 47578 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
30.01.2019, 08:08 4
Это числа которые мы записали в типизированный файл.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.01.2019, 08:08
Помогаю со студенческими работами здесь

Удалить из очереди все повторяющиеся слова, оставив только их первые вхождения
Создать очередь, содержащую слова. Удалить из очереди все повторяющиеся слова, оставив только их...

Удалить из строки все повторяющиеся буквы, оставив только их первые вхождения
2.Даны строки, содержащие латинские буквы. Удалить из строки все повторяю* щиеся буквы, оставив...

Дано слово. Удалить из него все повторяющиеся буквы, оставив их первые вхождения
Дано слово. Удалить из него все повторяющиеся буквы, оставив их первые вхождения. При составлении...

Одномерные массивы, удалить все повторяющиеся элементы, оставив только первые вхождения
Задача на C++: из заданного массива удалить все повторяющиеся элементы, оставив только их первые...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru