Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.12.2012, 20:57   #1
Евгений000
 
Регистрация: 03.12.2012
Сообщений: 3
По умолчанию Работа с файлами и записями

Здравствуйте, помогите пожалуйста с задачей.
Есть файл M1.txt. с элементами массива целых чисел. Нужно отсортировать запись в файле и записать в этот же файл.

Заранее спасибо!!!
Евгений000 вне форума Ответить с цитированием
Старый 03.12.2012, 21:07   #2
whatever
a.k.a. Skull
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 963
По умолчанию

Только за то, что выделился на общем фоне и написал "Здаравствуйте" и "Спасибо":
Код:
type
  arr=array of integer;
var
  T:textfile;
  i,j,res:integer;
  m:arr;
begin
  assignfile(t,'C:\M1.txt');
  reset(T);
  setlength(m,0);
  while not EOF(T) do
    begin
      setlength(m,length(m)+1);
      read(T,i);
      m[high(m)]:=i;
    end;
  close(T);
  for i:=0 to high(m) do
    for j:=0 to high(m) do
      if m[i]<m[j] then
        begin
          res:=m[i];
          m[i]:=m[j];
          m[j]:=res;
        end;
  rewrite(T);
  for i:=0 to high(m) do
    write(T,m[i],' ');
  close(t);
end.
В следующий раз показывай наработки, иначе никто не поможет.
Все тривиальное просто
whatever вне форума Ответить с цитированием
Старый 03.12.2012, 21:18   #3
Евгений000
 
Регистрация: 03.12.2012
Сообщений: 3
По умолчанию

Спасибо за ответ. Загнать данные из файла в массив у меня получилось. А вот загнать данные в запись нет. Вот поэтому пришлось к вам обращаться.
Евгений000 вне форума Ответить с цитированием
Старый 03.12.2012, 21:24   #4
whatever
a.k.a. Skull
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 963
По умолчанию

Цитата:
Сообщение от Евгений000 Посмотреть сообщение
Спасибо за ответ. Загнать данные из файла в массив у меня получилось. А вот загнать данные в запись нет. Вот поэтому пришлось к вам обращаться.
Я так и не понял, проблема решена? Что понимать под "записью"? Record? Если так, то задача решается вообще подругому.
Все тривиальное просто
whatever вне форума Ответить с цитированием
Старый 03.12.2012, 23:50   #5
Евгений000
 
Регистрация: 03.12.2012
Сообщений: 3
По умолчанию

Подскажите пожалуйста, почему при сортировке массива с файла выдаёт не отсортированный массив, а все нули. Не могу понять.
Код:
uses crt;
type
  arr=array [0..19] of integer;
var
  T:text;
  i,res:integer;
  m:arr;
  s:string;
begin
writeln('                          Отсортированный массив А');
writeln;
  assign(t,'E:\Инна 2\11 задание\M3.txt');
  reset(T);
  while not EOln(t) do
    begin
      readln(T,m[i]);
    end;
  close(T);
  for i:=0 to 18 do
      if m[i]<m[i+1] then
        begin
          res:=m[i];
          m[i]:=m[i+1];
          m[i+1]:=res;
        end;
  rewrite(T);
  for i:=0 to 18 do
    write(T,m[i],' ');
  close(t);
  for i:=0 to 18 do
  write(' ',m[i]);
end.


___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Евгений000; 04.12.2012 в 11:22.
Евгений000 вне форума Ответить с цитированием
Старый 04.12.2012, 09:10   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Код:
'E:\Инна 2\11 задание\M3.txt'
если Вы задачу выполняете в TurboPascal, то файлы с подобными именами не могут обрабатываться! TP (точнее MS DOS) понимает только короткие имена файлов формата 8.3
А вот если компилятор под Win, например, FreePascal, тогда можно такие имена использовать.

Цитата:
Код:
while not EOln(t) do
так Вы только одну строчку из файла сможете прочитать, думаю, что предполагалось:
Код:
while not Eof(t) do
дальше, вы в цикле читаете m[i]. а i при этом не меняется. (да и начального присвоения, т.н. иницилизации, у Вас тоже нет. в переменной i может быть вообще всё, что угодно!

Теперь цикл сортировки.
Цитата:
Код:
for i:=0 to 18 do
а с чего Вы решили, что в цикле из файла прочиталось ровно 19 значений (с нуля по 18) ? Не два числа, не 10, а именно 19? Программа обладает навыками ясновидения?!!

ну и окончательно. Сортировка у Вас написана неверно!!!

Неужели на форуме трудно найти работающий пример сортировки и адаптировать под себя?!

Короче. Всё неправильно. Не зачёт!

p.s. Вам в пост #2 whatever дал нормальные рабочий код. Почему Вы им не воспользовались?!!

Последний раз редактировалось Serge_Bliznykov; 04.12.2012 в 09:13.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
работа с записями Миша_misha Паскаль, Turbo Pascal, PascalABC.NET 0 30.05.2012 23:07
Работа с записями и файлами(Pascal) Manular Помощь студентам 5 28.04.2012 08:25
Операции над записями и типизированными файлами svt Помощь студентам 1 09.11.2009 00:19
Работа с файлами и записями. Помощь с итоговой Refenement Помощь студентам 13 19.03.2009 08:42
Помогите с файлами и записями Vladislaff Паскаль, Turbo Pascal, PascalABC.NET 0 21.12.2008 11:57