0 / 0 / 0
Регистрация: 01.07.2011
Сообщений: 19

Все четные элементы файла записать во второй файл и отсортировать их в порядке возрастания

02.07.2011, 09:21. Показов 1213. Ответов 5
Метки нет (Все метки)

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

помогите сделать сортировку файлов F2 и F3

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
program chislo;
uses crt;
var f1,f2,f3:file of integer;
a:array [1..100] of integer;
n,i,j,m,k,x:integer;
begin
clrscr;
randomize;
writeln('vvedite kolichesnvo chisel');
readln (n);
assign(f1,'c:\file1');
rewrite(f1);
assign(f2,'c:\file2');
rewrite(f2);
assign(f3,'c:\file3');
rewrite(f3);
for i:=1 to n do
begin
a[i]:=random(n);
write(f1,a[i]);
end;
reset(f1);
writeln('Ishodnyj fail:');
while not eof(f1) do
begin
read(f1,a[i]);
write(a[i],' ');
if odd(a[i])then write(f3,a[i])
else write(f2,a[i]);
end;
close(f1);
writeln;
reset(f2);
writeln('Fail chetnih chisel:');
while not eof(f2) do
begin
read(f2,a[i]);
write(a[i],' ');
end;
close(f2);
writeln;
reset(f3);
writeln('Fail nechetnih chisel:');
while not eof(f3) do
begin
read(f3,a[i]);
write(a[i],' ');
end;
close (f3);
readln;
end.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.07.2011, 09:21
Ответы с готовыми решениями:

Все четные элементы файла записать во второй файл и отсортировать их в порядке возрастания
Имеется файл, элементами которого являются целые числа. Все четные элементы этого файла записать во второй файл и отсортировать их в...

Все четные числа файла записать во второй файл, а нечетные — в третий файл
Имеется файл, элементами которого являются целые числа. Все четные числа этого файла записать во второй файл, а нечетные — в третий ...

Все четные числа из файла записать во второй файл, а нечетные — в третий файл
Имеется файл, элементами которого являются целые числа. Все четные числа этого файла записать во второй файл, а нечетные — в третий файл....

5
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
02.07.2011, 10:35
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

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
program chislo;
uses crt;
var f1,f2,f3:file of integer;
    a,n,i,j,b,x:integer;/{массив не нужен}
begin
clrscr;
randomize;
writeln('vvedite kolichesnvo chisel');
readln (n);
assign(f1,'c:\file1');
rewrite(f1);
assign(f2,'c:\file2');
rewrite(f2);
assign(f3,'c:\file3');
rewrite(f3);
for i:=1 to n do
 begin
  a:=random(n);
  write(f1,a);
 end;
reset(f1);
writeln('Ishodnyj fail:');
while not eof(f1) do
 begin
  read(f1,a);
  write(a,' ');
  if odd(a)then write(f3,a)
  else write(f2,a);
 end;
close(f1);
writeln;
writeln;
reset(f2);
writeln('Fail chetnih chisel:');
while not eof(f2) do
 begin
  read(f2,a);
  write(a,' ');
 end;
writeln;
seek(f2,0);{вернемся в начало}
for i:=0 to filesize(f2)-2 do{сортировка простым обменом}
for j:=i+1 to filesize(f2)-1 do
  begin
    seek(f2,i);
    read(f2,a);
    seek(f2,j);
    read(f2,b);
    if a>b then{по возрастанию}
      begin
       x:=a;
       a:=b;
       b:=x;
       seek(f2,i);
       write(f2,a);
       seek(f2,j);
       write(f2,x);
      end;
   end;
writeln('Po vozrastaniuy:');
seek(f2,0);{опять в начало и читаем}
while not eof(f2) do
 begin
  read(f2,a);
  write(a,' ');
 end;
writeln;
close(f2);
writeln;
reset(f3);
writeln('Fail nechetnih chisel:');
while not eof(f3) do
 begin
  read(f3,a);
  write(a,' ');
 end;
writeln;
seek(f3,0);{вернемся в начало}
for i:=0 to filesize(f3)-2 do
for j:=i+1 to filesize(f3)-1 do
  begin
    seek(f3,i);
    read(f3,a);
    seek(f3,j);
    read(f3,b);
    if a<b then{по убыванию}
      begin
       x:=a;
       a:=b;
       b:=x;
       seek(f3,i);
       write(f3,a);
       seek(f3,j);
       write(f3,x);
      end;
   end;
writeln('Po ubyvaniuy:');
seek(f3,0);
while not eof(f3) do
 begin
  read(f3,a);
  write(a,' ');
 end;
close (f3);
readln
end.
1
0 / 0 / 0
Регистрация: 01.07.2011
Сообщений: 19
02.07.2011, 10:48  [ТС]
спасибо огромное
0
 Аватар для SuPeR XaKer
2857 / 1986 / 788
Регистрация: 23.09.2010
Сообщений: 4,876
02.07.2011, 11:51
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Ещё вот такой вариант:
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
Uses CRT;
Const n=12;
Type fil=file of integer;
Var f,f2,f3:fil;
    i,j,k,l,c,p,m:integer;
 
procedure PrintChit(Var fi:fil);
Var k:integer;
begin
 inc(p);
 reset(fi);
 k:=0;
 for i:=0 to filesize(fi)-1 do
 begin
  read(fi,k);
  write(k:4);
  if (p=1) and (k mod 2=0) then write(f2,k)
  else if odd(k) and (p=1) then write(f3,k);
 end;
 Close(fi)
end;
 
procedure s(Var fi:fil);
begin
 begin
  c:=k;
  k:=l;
  l:=c;
  seek(fi,i);
  write(fi,k);
  seek(fi,j);
  write(fi,c)
 end
end;
 
Procedure Sort(Var fi:fil);
begin
inc(m);
reset(fi);
for i:=0 to filesize(fi)-1 do
  for j:=i+1 to filesize(fi)-1 do
   begin
    seek(fi,i);
    read(fi,k);
    seek(fi,j);
    read(fi,l);
    if (m=1) and (k>l) then s(fi)
    else if (m=2) and (l>k) then s(fi);
   end;
Close(fi);
end;
 
begin
 Clrscr;
 Assign(f,'D:\1.txt');
 rewrite(f);
 {ôðàãìåíò äëÿ çàïîëíåíèÿ.Åñëè ôàéë óæå çàïîëíåí óáåðèòå ýòîò ôðàãìåíò.}
 randomize;
 for i:=1 to 12 do
 begin
  k:=random(20)-5;
  write(k:4);
  write(f,k);
 end;
 Close(f);
{----------------------------------------------------------------------}
 writeln;
 Assign(f2,'D:\2.txt');
 Assign(f3,'D:\3.txt');
 rewrite(f2);
 rewrite(f3);
 writeln('Êîìïîíåíòû èñõîäíîãî ôàéëà: ');
  PrintChit(f);
 Close(f2);
 Close(f3);
 writeln;
 writeln('Ôàéë ñ ÷¸òíûìè ýëåìåíòàìè äî ñîðòèðîâêè: ');
  PrintChit(f2);
 writeln;
 writeln('Ôàéë ñ íå÷¸òíûìè ýëåìåíòàìè äî ñîðòèðîâêè: ');
  PrintChit(f3);
 writeln;
 writeln('Ôàéë ñ ÷¸òíûìè ýëåìåíòàìè ïîñëå ñîðòèðîâêè: ');
  Sort(f2);
  PrintChit(f2);
 writeln;
 writeln('Ôàéë ñ íå÷¸òíûìè ýëåìåíòàìè ïîñëå ñîðòèðîâêè: ');
  Sort(f3);
  PrintChit(f3);
 readln;
end.
Добавлено через 20 минут
Или такой:
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
Uses CRT;
Const n=12;
Type fil=file of integer;
Var f,f2,f3:fil;
    i,j,k,l,c,p,m:integer;
 
procedure PrintChit(Var fi:fil;s:string);
Var k:integer;
begin
 inc(p);
 reset(fi);
 k:=0;
 writeln(s);
 for i:=0 to filesize(fi)-1 do
 begin
  read(fi,k);
  write(k:4);
  if (p=1) and (k mod 2=0) then write(f2,k)
  else if odd(k) and (p=1) then write(f3,k);
 end;
 Close(fi);
 writeln;
end;
 
procedure s(Var fi:fil);
begin
 begin
  c:=k;
  k:=l;
  l:=c;
  seek(fi,i);
  write(fi,k);
  seek(fi,j);
  write(fi,c)
 end
end;
 
Procedure Sort(Var fi:fil);
begin
inc(m);
reset(fi);
for i:=0 to filesize(fi)-1 do
  for j:=i+1 to filesize(fi)-1 do
   begin
    seek(fi,i);
    read(fi,k);
    seek(fi,j);
    read(fi,l);
    if (m=1) and (k>l) then s(fi)
    else if (m=2) and (l>k) then s(fi);
   end;
Close(fi);
end;
 
begin
 Clrscr;
 Assign(f,'D:\1.txt');
 rewrite(f);
 randomize;
 for i:=1 to 12 do
 begin
  k:=random(20)-5;
  write(k:4);
  write(f,k);
 end;
 Close(f);
 writeln;
 Assign(f2,'D:\2.txt');
 Assign(f3,'D:\3.txt');
 rewrite(f2);
 rewrite(f3);
  PrintChit(f,'Êîìïîíåíòû èñõîäíîãî ôàéëà: ');
 Close(f2);
 Close(f3);
  PrintChit(f2,'Ôàéë ñ ÷¸òíûìè ýëåìåíòàìè äî ñîðòèðîâêè: ');
  PrintChit(f3,'Ôàéë ñ íå÷¸òíûìè ýëåìåíòàìè äî ñîðòèðîâêè: ');
  Sort(f2);
  PrintChit(f2,'Ôàéë ñ ÷¸òíûìè ýëåìåíòàìè ïîñëå ñîðòèðîâêè: ');
  Sort(f3);
  PrintChit(f3,'Ôàéë ñ íå÷¸òíûìè ýëåìåíòàìè ïîñëå ñîðòèðîâêè: ');
 readln;
end.
1
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
02.07.2011, 12:31
Вообще-то видов сортировки еще больше...
Я привык простым обменом, у меня его пальцы сами пишут, думать не нужно...
1
 Аватар для SuPeR XaKer
2857 / 1986 / 788
Регистрация: 23.09.2010
Сообщений: 4,876
02.07.2011, 13:03
Я привык простым обменом, у меня его пальцы сами пишут, думать не нужно...

Не по теме:

я тоже привык к этой сортировке :)

1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.07.2011, 13:03
Помогаю со студенческими работами здесь

Все четные числа файла записать во второй файл, а нечетные — в третий файл
Имеется файл, элементами которого являются целые числа. Все четные числа этого файла записать во второй файл, а нечетные — в третий файл....

Все четные числа файла записать во второй файл, а нечетные — в третий
Имеется файл, элементами которого являются целые числа. Все четные числа этого файла записать во второй файл, а нечетные — в третий файл....

Записать в новый текстовый файл все положительные числа из исходного файла в порядке возрастания
В текстовом файле записана последовательность целых чисел, разделённых пробелами. Записать в другой текстовый файл все положительные числа...

Отсортировать четные строки матрицы X (10x9) в порядке убывания, а не четные в порядке возрастания
Отсортировать четные строки матрицы X (10x9) в порядке убывания, а не четные в порядке возрастания. Определить функцию для сортировки одной...

Файл: отсортировать элементы в порядке возрастания
Помогите пожалуйста (может у кого то есть что то подобное) (ООП паскаль) Дан файл целочисленных данных . Отсортировать элемент в...


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

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

Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru