Форум программистов, компьютерный форум, киберфорум
Free Pascal
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.52/23: Рейтинг темы: голосов - 23, средняя оценка - 4.52
6 / 6 / 3
Регистрация: 02.01.2012
Сообщений: 42

Чтение в типизированный файл и сортировка данных в типизированном файле

02.01.2012, 18:58. Показов 4553. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Дан текстовый файл со следующей характеристикой:
"<имя> <число>"
Нужно прочитать данные из текстового файла в типизированный файл и отсортировать с помощью типизированного файла их в порядке возрастания по значению <число> из текстового файла.
И вывести в новый текстовый файл.
Программы у меня нет, но есть процедура сортировки чисел через типизированный файл (написана мной месяц назад примерно). Подтвердить могу тем, что в ней присутствуют операторы, которые можно было бы и не писать (пример подписал в исходнике).
Собственно мне нужно как-то вытащить эти числа, но при этом сохранить их связь с именами, чтобы после сортировки все правильно расставить.
Скорее всего надо использовать записи, но я не могу понять как их связать с типизированным и файлом. И самое главное как их записать.
Вот сам исходник:
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
 procedure sort_by_tip_f;
 var bj,bi,obmen,nobm,bn,n,i,j :integer;
 begin
  i:=0;
  kz:=kz+1;
  for j:=i to razmer-2 do begin
   seek(f,j);{не является обязательным в этом месте, указатель в файле и сам передвигается при чтении}
   read(f,bj);
   nobm:=j;
   obmen:=bj;
   for n:=j+1 to razmer-1 do begin
    seek(f,n);
    read(f,bn);
    if bn>obmen then begin
     nobm:=n;
     obmen:=bn;
    end;
   end;
   if obmen<>j then begin
    seek(f,nobm);
    write(f,bj);
    seek(f,j);
    write(f,obmen);
   end;
  end;
 end;
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.01.2012, 18:58
Ответы с готовыми решениями:

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

Сортировка в Типизированном файле
Вечер добрый!!! обращаюсь к вам с такой проблемой: создал программу по учету книг8 в библиотеке(т.е. програма обеспечивает ввод данных...

Заполнение, сортировка чисел в типизированном файле
И снова Здравствуйте. 1. Нужно заполнить типизированный файл случайным числом случайных целых чисел ( сколько, значение- все случайно)....

12
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
02.01.2012, 19:25
Цитата Сообщение от Comst95 Посмотреть сообщение
как их связать с типизированным и файлом.
Pascal
1
2
3
4
5
type zap=record
             name:string;
             chislo:integer;
             end;
       tfile=file of zap;
Пример есть здесь
Переписать сведения из файла в текстовый файл так, чтобы студенты перечислялись в порядке возрастания среднего балла
1
6 / 6 / 3
Регистрация: 02.01.2012
Сообщений: 42
02.01.2012, 20:14  [ТС]
Я пытаюсь написать программу, чтобы читала из текстового файла в типизированный, но выдает ошибку при записи в файл f element.
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
type
 zap=record
  nazv:string;
  num:integer;
 end;
 
var kz:integer;
    f:file of zap;
    t:text;
    ii:integer;
    c:char;
    element:zap;
    s:string;
 begin
  assign(t,'nput.txt');
  reset(t);
  assign(f,s);
  rewrite(f);
 
  while not eof(t) do begin
   repeat
    read(t,c);
    if c<>' ' then element.nazv:=element.nazv+c;
   until c=' ';
   read(t,element.num);
   read(f,element);{здесь выдается ошибка}
  end;
end.
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
02.01.2012, 20:33
Pascal
1
2
3
4
5
6
7
8
while not eof(t) do 
  begin
   readln(t,s);
   element.nazv:=copy(s,1,pos(' ',s)-1);//в текстовом файле название и число записаны через пробел
   delete(s,1,pos(' ',s)-1);
   val(s,element.num,ii);
   write(f,element);
  end;
1
6 / 6 / 3
Регистрация: 02.01.2012
Сообщений: 42
02.01.2012, 20:54  [ТС]
компилирую программу и по всему экрану бесконечно выводятся в разных местах "alekseev" фамилия в первой строке текстового файла (входного).
может быть проблема в связь файла f(наугад поставил связь f со строкой s):
Pascal
1
2
assign(f,s);
  rewrite(f);
Вот код программы:
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
type
 zap=record
  nazv:string;
  num:integer;
 end;
 
var kz:integer;
    f:file of zap;
    t:text;
    ii:integer;
    c:char;
    element:zap;
    s:string;
 begin
  assign(t,'nput.txt');
  reset(t);
  assign(f,s);
  rewrite(f);
 
  while not eof(t) do begin
   read(t,s);
   element.nazv:=copy(s,1,pos(' ',s)-1);
   delete(s,1,pos(' ',s)-1);
   val(s,element.num,ii);
   write(f,element);
  end;
 
  close(t);
  close(f);
end.
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
02.01.2012, 20:57
Цитата Сообщение от Comst95 Посмотреть сообщение
while not eof(t) do begin
* *read(t,s);
А как у меня написано?
Pascal
1
readln(t,s); так читают строку из текстового файла
1
6 / 6 / 3
Регистрация: 02.01.2012
Сообщений: 42
02.01.2012, 21:07  [ТС]
Понял.
А как сделать вывод этих данных с типизированного файла в новый текстовый файл?
Pascal
1
2
3
4
5
seek(f,0);
while not oef(f) do begin
  readln(f,element);
  writeln(n,element);{n - текстовый файл, куда записываются данные с тип. файла f }
end;
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
02.01.2012, 21:09
Pascal
1
2
3
4
5
6
seek(f,0);
while not oef(f) do 
 begin
  read(f,element);
  writeln(n,element.nazv,' ',element.num);{n - текстовый файл, куда записываются данные с тип. файла f }
end;
1
6 / 6 / 3
Регистрация: 02.01.2012
Сообщений: 42
02.01.2012, 21:16  [ТС]
Я совсем тупой и не понимаю, в чем я еще нахимичил.:(
Компилирует и в конце выдает "exitcode=6".
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
type
 zap=record
  nazv:string;
  num:integer;
 end;
 
var kz:integer;
    f:file of zap;
    t,n:text;
    ii:integer;
    c:char;
    element:zap;
    s:string;
 begin
  assign(t,'nput.txt');
  reset(t);
  assign(f,s);
  rewrite(f);
  assign(n,'output.txt');
  rewrite(n);
  while not eof(t) do begin
   readln(t,s);
   element.nazv:=copy(s,1,pos(' ',s)-1);
   delete(s,1,pos(' ',s)-1);
   val(s,element.num,ii);
   write(f,element);
  end;
  seek(f,0);{в режиме отладки ошибка здесь}
  while not eof(f) do begin
  read(f,element);
  writeln(n,element.nazv,' ',element.num);
  end;
  close(t);
  close(f);
  close(n);
end.
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
02.01.2012, 21:22
Pascal
1
2
assign(f,s);//здесь нужно имя файла напрямую, или присвоить его переменной s
  rewrite(f);
1
6 / 6 / 3
Регистрация: 02.01.2012
Сообщений: 42
02.01.2012, 21:31  [ТС]
Спасибо Вам, Puporev, большое!:)
Все заработало!:)))
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
02.01.2012, 21:32
А название файла nput вместо input для прикола?
0
6 / 6 / 3
Регистрация: 02.01.2012
Сообщений: 42
03.01.2012, 02:34  [ТС]
да, немного разнообразия
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.01.2012, 02:34
Помогаю со студенческими работами здесь

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

Обработка данных в типизированном файле.
Здравствуйте. По заданию лабороторной работы я должен: При обработке информации числовые данные к заданию должны храниться в текстовом...

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

Файл: В типизированном файле считать матрицу и вывести её на экран...
В типизированном файле дана матрица Т, требуется считать матрицу и вывести её на экран, далее создать тестовый файл и записать туда эту...

Как изменить часть данных в типизированном файле?
У меня есть типизированный файл file.tx, в нем есть данные. Вот так они образуются. Мне нужно в другой процедуре изменить конкретную...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru