Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
3 / 3 / 0
Регистрация: 18.11.2015
Сообщений: 77

Сортировка массивов из файла

14.07.2016, 14:55. Показов 1325. Ответов 7

Студворк — интернет-сервис помощи студентам
Нужно считать массивы из файла input, отсортировать их с помощью быстрой сортировки и записать в файл output.
Например(файл input):
6 - кол. эл. в 1 массиве
3 -2 10 -10 6 0 - 1 массив
4 - кол. эл в0 2 массиве
8 30 20 10 - 2 массив
10 - кол. эл. в 3 массиве
2 23 -3 41 30 -6 10 -1 60 - 3 массив

Программа не выдаёт ошибок, но не выполняется:

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
 var
 a: array[1..20] of integer;
 i,N,j:integer;
 f1,f2:text;
 
procedure Sort(l,r:integer);
var
 i,j,t,x:integer;
begin
i:=l;
j:=r;
x:=a[(l+r) div 2];
 repeat
 while a[i]<x do inc(i);
 while a[j]>x do dec(j);
 if i<=j then
  begin
  t:=a[j];
  a[j]:=a[i];
  a[i]:=t;
  end;
 until i>j;
if j>l then sort(l,j);
if i<r then sort(i,r);
end;
 
begin
assign(f1,'input.txt');
reset(f1);
assign(f2,'output.txt');
rewrite(f2);
while not eof(f1) do
 begin
 readln(f1,N);
  for i:=1 to N do read(f1,a[i]);
  writeln;
  Sort(1,N);
  for i:=1 to N do write(f2,a[i]:5);
 end;
close(f1);
close(f2);
end.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.07.2016, 14:55
Ответы с готовыми решениями:

Сортировка типизированного файла записей без массивов
Помогите сделать сортировку типизированного файла записей без массивов. Надо сортировать из сортировочный файл на основе исходного файла по...

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

Вывод элементов массивов, сортировка массивов
вот ссылки program 1аЬ4; uses crt; const е=0.0010; d=l.Зе-7; var a, b, г, s, х, fa, fг, n, с : real; begin write('введите айв:...

7
Почетный модератор
 Аватар для Puporev
64316 / 47612 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
14.07.2016, 15:47
Лучший ответ Сообщение было отмечено ZX Spectrum-128 как решение

Решение

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
type mas=array[1..20] of integer;
procedure Sort(var a:mas;l,r:integer);
var i,j,t,x:integer;
begin
i:=l;
j:=r;
x:=a[(l+r) div 2];
repeat
 while a[i]<x do inc(i);
 while a[j]>x do dec(j);
 if i<=j then
  begin
   t:=a[i];
   a[i]:=a[j];
   a[j]:=t;
   inc(i);
   dec(j);
  end;
 until i>j;
if l<j then sort(a,l,j);
if i<r then sort(a,i,r);
end;
var a,b,c:mas;
    na,nb,nc,i:integer;
    f:text;
begin
assign(f,'input.txt');
reset(f);
read(f,na);
for i:=1 to na do
read(f,a[i]);
read(f,nb);
for i:=1 to nb do
read(f,b[i]);
read(f,nc);
for i:=1 to nc do
read(f,c[i]);
close(f);
sort(a,1,na);
sort(b,1,nb);
sort(c,1,nc);
assign(f,'output.txt');
rewrite(f);
for i:=1 to na do
write(f,a[i]:4);
writeln(f);
for i:=1 to nb do
write(f,b[i]:4);
writeln(f);
for i:=1 to nc do
write(f,c[i]:4);
close(f);
end.
Исходный файл
6
3 -2 10 -10 6 0
4
8 30 20 10
10
2 23 -3 41 30 -6 10 -1 60 -3

Результат
-10 -2 0 3 6 10
8 10 20 30
-6 -3 -3 -1 2 10 23 30 41 60
1
3 / 3 / 0
Регистрация: 18.11.2015
Сообщений: 77
14.07.2016, 18:50  [ТС]
А в чём моя ошибка?
Считываем массив, сортируем его, записываем в новый файл, затем считываем следующий массив и т.д. (и не нужно отводить место под другие массивы).
Т.е если количество массивов в файле не известно.
0
Почетный модератор
 Аватар для Puporev
64316 / 47612 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
14.07.2016, 19:03
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Ну главная ошибка в сортировке, сравните свой код и мой, увидите что двух строк у Вас нет.

Добавлено через 5 минут
А насчет трех массивов мне видимо приснилось..
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
type mas=array[1..20] of integer;
procedure Sort(var a:mas;l,r:integer);
var i,j,t,x:integer;
begin
i:=l;
j:=r;
x:=a[(l+r) div 2];
repeat
 while a[i]<x do inc(i);
 while a[j]>x do dec(j);
 if i<=j then
  begin
   t:=a[i];
   a[i]:=a[j];
   a[j]:=t;
   inc(i);
   dec(j);
  end;
 until i>j;
if l<j then sort(a,l,j);
if i<r then sort(a,i,r);
end;
var a:mas;
    n,i:integer;
    f1,f2:text;
begin
assign(f1,'input.txt');
reset(f1);
assign(f2,'output.txt');
rewrite(f2);
while not seekeof(f1) do
 begin
  read(f1,n);
  for i:=1 to n do
  read(f1,a[i]);
  sort(a,1,n);
  for i:=1 to n do
  write(f2,a[i]:4);
  writeln(f2);
 end;
close(f1);
close(f2);
end.
1
3 / 3 / 0
Регистрация: 18.11.2015
Сообщений: 77
14.07.2016, 19:12  [ТС]
Да, конечно. Но в 35 строке выдаёт ошибку времени выполнения (входная строка имеет не правильный формат).
Я как то не так считываю данный из файла?
0
Почетный модератор
 Аватар для Puporev
64316 / 47612 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
14.07.2016, 19:21
Да, не так.
В файле должны быть целые числа, записанные через пробелы.
Я же приводил пример файла.
Вложения
Тип файла: rar 5555.rar (603 байт, 3 просмотров)
1
3 / 3 / 0
Регистрация: 18.11.2015
Сообщений: 77
14.07.2016, 19:53  [ТС]
Класс скопировал ваши данные и моя программа тоже заработала правильно(только мне нужно было использовать процедуру seekeof, а не eof)! Не понимаю почему с моими данными она не работала, хотя я вводил всё тоже самое(несколько раз перепроверил). Спасибо, перепробовал несколько входных данных и всё работает.
0
Почетный модератор
 Аватар для Puporev
64316 / 47612 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
14.07.2016, 19:56
seekeof в отличие от eof не читает пробелы после последнего символа в файле
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.07.2016, 19:56
Помогаю со студенческими работами здесь

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

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

Задача на с++. Сортировка массивов. Входные данные читать из файла!
:help: Помогите пожалуйста написать программу, по данной задаче. Дана целочисленная матрица A = {aij}, где 1≤ i ≤n;...

Обработка одномерных массивов. Сортировка массивов
Здравствуйте, помогите пожалуйста решить задачу легким способом. В одномерном массиве, состоящем из n вещественных элементов, вычислить: ...

Сортировка массивов по убыванию и замена массивов
Задача: Даны два массива: А3 и В3х3. Массив А упорядочить по убыванию и заменить им первую строку матрицы В. Где-то раньше у вас был...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru