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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.03.2010, 19:03   #1
ThisIzGame
Форумчанин
 
Регистрация: 31.08.2009
Сообщений: 161
По умолчанию Проблема с записью в файл (Паскаль)

Здравствуйте, вот такая проблема возникла.
Дана задача, вводится некоторе кол-во студентов, программа их считывает и
затем сортирует их в порядке "А,Б,В,Г" и записывает в файл. файл типизирован.

В общем я написал, но:


Код:
Program A;
uses crt;
const
N=3;    {Кол-во студентов}
type
 Student=string[15];  {макс. размер фамилии}


 var
 F:file of Student;
 name:Student;
 i,j:integer;
 Sort:Array[1..N] of Student;
 t:boolean;     {для сортировки}
 begin
 clrscr;
 i:=1;
 j:=0;
 t:=true;
  Assign(F, 'C:\F.txt');
  Rewrite(F);

       while i<=N do   {вводим студентов}
       begin
           readln(name);
           Sort[i]:=name;
           for j:=1 to 15 do
               name[j]:=' ';
           i:=i+1;
       end;

             while(t) do      {затем сортируем}
              begin
              t:=false;
                for j:=1 to N-1 do
                begin
                   if(Sort[j]>Sort[j+1]) then
                   begin
                    t:=true;
                    name:=Sort[j+1];

                  Sort[j+1]:=Sort[j];
                      Sort[j]:=name;
                     for i:=1 to 15 do
                       name[i]:=' ';

                   end;
                end;
              end;
              for i:=1 to N do   { вот так выглядит наш массив. ВСё хорошо}
                 writeln(Sort[i]);

             for i:=1 to N do   {записываем в файл}
               begin
                 Seek(F,filesize(F));  { в конец файла}
                Write(F,Sort[i]);
                
               end;

  Close(F);
  end.
Но есть проблема:
Например Ввожу я фамиии Сидоров Иванов Петров.
После сортировки просматриваю элементы массива всё отлично: Иванов, Петров, Сидоров.
Но когда записываю в файл в файле почему-то выводятся: Ivanovv, Petrovv, Sidorov.
В чём проблема? подскажите пожалуйста. Вродем бы и указатель на конец в файла ставлю, а всё-равно...
ThisIzGame вне форума Ответить с цитированием
Старый 23.03.2010, 22:53   #2
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Цитата:
Сообщение от ThisIzGame Посмотреть сообщение
Код:
  Rewrite(F);
                 Seek(F,filesize(F));  { в конец файла}
                Write(F,Sort[i]);
Перемещаться в конец не надо. Первоначально файл пустой, а write сам перемещает на следующую позицию. Также лишним будет
Код:
           for j:=1 to 15 do
               name[j]:=' ';
Цитата:
Сообщение от ThisIzGame Посмотреть сообщение
Но когда записываю в файл в файле почему-то выводятся: Ivanovv, Petrovv, Sidorov.
Файл типизированный и пишутся туда строки длинной 16 байт (первый байт содержит длину строки, затем идут 15 байт данных). Так вот, Ivanov длинной 6 символов, а 7-ой символ v остался от Sidorov в результате обмена через переменную name. Совершенно не важно какой мусор остался от прежних операций, главное то, что данные корректно записаны и также корректно будут прочитаны. Убедится в этом можно открыв файл 'C:\F.txt' двоичным редактором, а блокнотом такие файлы открывать бесполезно.
eoln вне форума Ответить с цитированием
Старый 24.03.2010, 06:45   #3
ThisIzGame
Форумчанин
 
Регистрация: 31.08.2009
Сообщений: 161
По умолчанию

спасибо большое за помощь!
ThisIzGame вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с записью текста в файл AK BULLETS Помощь студентам 3 19.03.2010 19:22
Проблема с записью в файл baltushka Помощь студентам 0 14.06.2009 17:39
Проблемы с записью в файл ROD Общие вопросы C/C++ 9 03.04.2009 12:32
Проблема с записью структуры в файл JamS007 Общие вопросы C/C++ 5 07.01.2009 23:13
Проблема с записью в файл...( Regloger Помощь студентам 10 15.11.2007 17:49