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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.12.2012, 17:54   #1
Женька Good
Форумчанин
 
Регистрация: 15.03.2011
Сообщений: 126
По умолчанию Сортировка выбором (паскаль)

Написал программу сортировки выбором, но мне выводит не отсортированный массив а исходный...
массив чисел находится в файле *.dat
Код:
Program program;
 type
       DataItem = char;
       DataArray = array [1..1000] of char;
     var
       test: DataArray;
       t, t2: integer;
       testfile: file of char;

   procedure Selekt(var item: Dataarray; count:integer);
var
  i, j, k: integer;
  x: Dataitem;
begin
  for i := i to count-1 do
  begin
    k := i;
    x := item[i];
    for j := i+1 to count do {знайти елемент із найменшим значенням}
    if item[j]<x then
    begin
      k := j;
      x := item[j];
    end;
    item[k] := item[i];  {обмін}
    item[i] := x;
  end;
end; {кінець сортування вибором}


     begin
       Assign(testfile, 'd:\My Education\test.dat');
       Reset(testfile);
       t := 1;
     { считывание символов,которые будут сортироваться.}
      while not Eof(testfile) do begin
         read(testfile, test[t]);
         t := t+1;
       end;
     t := t-2; {скорректировать число считанных элементов }
      { сортировать массив }
      selekt(test, t);
     { выдать отсортированный массив символов }
     for t2 := 1 to t do
     write(test[t2],' ');
     WriteLn;
     Close(testfile);
   end.
Женька Good вне форума Ответить с цитированием
Старый 03.12.2012, 23:07   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
массив чисел находится в файле *.dat
Цитата:
Код:
file of char;
поясните, каким образом Ваши числа связаны с типом char ?!
я бы ещё понял, если бы тип был byte, но уж char как тут затесался?!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 04.12.2012, 15:39   #3
Женька Good
Форумчанин
 
Регистрация: 15.03.2011
Сообщений: 126
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
поясните, каким образом Ваши числа связаны с типом char ?!
я бы ещё понял, если бы тип был byte, но уж char как тут затесался?!
и из-за этого оно не выводит мой отсортированный массив?
Женька Good вне форума Ответить с цитированием
Старый 04.12.2012, 16:02   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
и из-за этого оно не выводит мой отсортированный массив?
не исключено.
сократите программу до такого кода:
Код:
<описание типов и переменных>
begin
     Assign(testfile, 'd:\My Education\test.dat');
     Reset(testfile);
     t := 0;
     { считывание символов,которые будут сортироваться.}
     while not Eof(testfile) do begin
         t := t+1;
         read(testfile, test[t]);
     end;
     Close(testfile);

     { выдать  массив символов }
     WriteLn('прочитанный массив: ')
     for t2 := 1 to t do
        write(test[t2],' ');
     WriteLn;

     Readln; {ждём нажатия Enter}
end.
выполняете код. Убеждаетесь, что из файла всё прочиталось как надо.
потом вставляете процедуру сортировки. Выводите массив отсортированный. Тестируете. Убираете баги (если они есть).
Профит.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 04.12.2012, 16:53   #5
Женька Good
Форумчанин
 
Регистрация: 15.03.2011
Сообщений: 126
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
не исключено.
сократите программу до такого кода:
Код:
<описание типов и переменных>
begin
     Assign(testfile, 'd:\My Education\test.dat');
     Reset(testfile);
     t := 0;
     { считывание символов,которые будут сортироваться.}
     while not Eof(testfile) do begin
         t := t+1;
         read(testfile, test[t]);
     end;
     Close(testfile);

     { выдать  массив символов }
     WriteLn('прочитанный массив: ')
     for t2 := 1 to t do
        write(test[t2],' ');
     WriteLn;

     Readln; {ждём нажатия Enter}
end.
выполняете код. Убеждаетесь, что из файла всё прочиталось как надо.
потом вставляете процедуру сортировки. Выводите массив отсортированный. Тестируете. Убираете баги (если они есть).
Профит.
без вызова процедуры, массив печатался из файла,
а при вызове процедуры, все равно печатается массив из файла...
Женька Good вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка выбором Tattoquardas Паскаль, Turbo Pascal, PascalABC.NET 0 18.03.2012 16:29
Сортировка выбором С++ Belka.ru Помощь студентам 3 12.12.2011 05:57
Сортировка выбором Novi4ok_11 Помощь студентам 2 20.01.2011 14:06
Сортировка выбором.. AronakSS Паскаль, Turbo Pascal, PascalABC.NET 1 09.10.2010 13:27
Сортировка выбором curly182 Общие вопросы C/C++ 3 24.05.2009 13:45