6 / 6 / 11
Регистрация: 18.10.2012
Сообщений: 61
1

Некорректная сортировка элементов в файле

26.11.2013, 23:01. Показов 507. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
вот код
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
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
uses crt;
const n=13;
var a:array[1..n] of integer;
 
    a1,a2,s,ks,i,j,M,C,tmp:integer;
     f,f1,f2,o:text;
     b:boolean;
 begin
 {$R-}
 M:=0;
  C:=0;
  assign(o,'rand.txt');
  assign(f,'A.txt');
  reset(o);
  rewrite(f);
  for i:=1 to n do
   begin
    read(o,a1);
    write(f,a1,' ');
   end;
 
  close(o);
  close(f);
  assign(f1,'B.txt');
  assign(f2,'C.txt');
  s:=1;
  while s<n do
   begin
    reset(f);
    rewrite(f1);
    rewrite(f2);
    for i:=1 to n div 2 do
     begin
      read(f,a1);
      write(f1,a1,' ');
     end;
    if (n div 2) mod s <> 0 then
     begin
      tmp:=n div 2;
      while tmp mod s<>0 do
       begin
        read(f,a1);
        write(f1,a1,' ');
        inc(tmp);
       end;
     end;
    while not EOF(f) do
     begin
      read(f,a2);
      write(f2,a2,' ');
     end;
    close(f);
    close(f1);
    close(f2);
    rewrite(f);
    reset(f1);
    reset(f2);
    read(f1,a1);
    read(f2,a2);
    while (not EOF(f1)) and (not EOF(f2)) do
     begin
      i:=0;
      j:=0;
      b:=true;
      while (b) and (not EOF(f1)) and (not EOF(f2)) do
       begin
        if (a1>a2) then
         begin
          C:=C+1;
          write(f,a1,' ');
          read(f1,a1);
          M:=M+1;
          inc(i);
         end
        else
         begin
          C:=C+1;
          write(f,a2,' ');
          read(f2,a2);
          M:=M+1;
          inc(j);
         end;
        if (i=s) or (j=s) then b:=false;
       end;
       if not b then
        begin
         while (i<s) and (not EOF(f1)) do
          begin
           write(f,a1,' ');
           M:=M+1;
           read(f1,a1);
           inc(i);
          end;
         while (j<s) and (not EOF(f2)) do
          begin
           write(f,a2,' ');
           M:=M+1;
           read(f2,a2);
           inc(j);
          end;
        end;
      end;
     while not EOF(f1) do
      begin
       tmp:=a1;
       read(f1,a1);
       if not EOF(f1) then
        begin
         write(f,tmp,' ');
         M:=M+1;
        end
       else
        begin
         write(f,tmp);
         M:=M+1;
        end;
      end;
     while not EOF(f2) do
      begin
       tmp:=a2;
       read(f2,a2);
       if not EOF(f2) then
        begin
         write(f,tmp,' ');
         M:=M+1;
        end
       else
        begin
         write(f,tmp);
         M:=M+1;
        end;
      end;
     close(f);
     close(f1);
     close(f2);
     s:=s*2;
  end;
 erase(f1);
 erase(f2);
 reset(f);
 for i:=1 to n do
  begin
   read(f,a1);
   write(a1:6);
  end;
 
 readln;
end.
проблема вот в чем:
в конце файла создается число 0
и когда я меняю сортировку что бы сортировались элементы по возрастанию - этот 0 всовывается куда не надо
в чем может быть проблема?

Добавлено через 8 минут
не обращайте внимание на М и С
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.11.2013, 23:01
Ответы с готовыми решениями:

Некорректная сортировка/поиск в файле
Доброго дня, возник вопрос дня. Имеется функция поиска по файлу и вывод, скажем там участника....

Сортировка элементов в файле
Подскажите, как отсортировать элементы созданного файл по возрастанию или по убыванию Процедура...

Сортировка элементов в файле
Здравствуйте. Помогите, пожалуйста, написать программу в Си, которая упорядочивает файл,...

Сортировка элементов в бинарном файле
Дан бинарный файл целых чисел. Поменять в нем местами минимальное и максимальное значения среди...

2
3716 / 2226 / 697
Регистрация: 29.05.2013
Сообщений: 9,516
26.11.2013, 23:08 2
А на кой ляд вы бесконечно открываете/закрываете файлы? Считайте файл в массив, отсортитруйте его и только потом снова запишите. Это и отлаживать легче и над диском издеваться меньше придется.
0
6 / 6 / 11
Регистрация: 18.10.2012
Сообщений: 61
26.11.2013, 23:10  [ТС] 3
такое задание в лабораторной
0
26.11.2013, 23:10
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.11.2013, 23:10
Помогаю со студенческими работами здесь

Некорректная сортировка
Добрый день. Код слизанный из рекордера .Sort.SortFields.Clear .Sort.SortFields.Add...

Некорректная сортировка
Добрый день. Есть такой код сортировки, но сортирует не совсем так как надо. Буквы сортирует...

Некорректная сортировка чисел
Добрый день! Есть код java, который осуществляет сортировку входной последовательности.(пусть...

Некорректная сортировка массива
Делаю в Эклипсе. Пользователю нужно задать длину массива, в котором создаются рандомные числа....


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

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

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