Отсортировать данные по алфавиту - PascalABC.NET

Узнай цену своей работы

Формулировка задачи:

Суть программы она должна отсортировать данные по алфавиту. Можно ли сделать так что-бы при выводе программы из файла она каждую фамилию писала с новой строки?
Листинг программы
  1. const N = 2;
  2. var f,f1:text;
  3. str: array[1..N] of string[20];
  4. s,a: string[20];
  5. i, j: byte;
  6. begin
  7. assign(f,'fail.txt');
  8. assign(f1,'21.txt');
  9. reset(f);
  10. rewrite(f1);
  11. while not seekeof(f) do
  12. for i:=1 to n do
  13. begin
  14. read(f,a);
  15. str[i]:=a;
  16. end;
  17. begin
  18. for i:=1 to N-1 do
  19. for j:=1 to N-i do
  20. if str[j][1] > str[j+1][1] then begin
  21. s := str[j];
  22. str[j] := str[j+1];
  23. str[j+1] := s;
  24. end;
  25. writeln;
  26. for i:=1 to N do
  27. begin
  28. writeln(f1,str[i]);
  29. begin
  30. writeln;
  31. end;end;
  32. close(f1);
  33. close(f);
  34. writeln;
  35. end;
  36. end.
Теперь вообще не работает
Она работает но не до конца правильно. Вот допустим если в файле записаны данные так "Серг 2224 Пере 3243 Купр 4223 " то она выдает " Купр 4223 Серг 2224 Пере 3243 " как и должно быть но если там просто имена или полные имена то она ни чего не делает
вот я написал программу которая делает тоже самое но не с данными из файла и она работает нормально
Листинг программы
  1. const N = 5;
  2. var f:text;
  3. str: array[1..N] of string[20];
  4. s: string[20];
  5. i, j: byte;
  6. begin
  7. assign(f,'fail.txt');
  8. rewrite(f);
  9. for i:=1 to N do
  10. begin
  11. write('Введите фамилию : ');readln(str[i]);
  12. end;
  13. for i:=1 to N-1 do
  14. for j:=1 to N-i do
  15. if str[j][1] > str[j+1][1] then begin
  16. s := str[j];
  17. str[j] := str[j+1];
  18. str[j+1] := s;
  19. end;
  20. writeln;
  21. for i:=1 to N do write(f,' ',str[i]);
  22. close(f);;
  23. writeln;
  24. end.
Как сделать чтобы тоже само работало с данными из файла?

Решение задачи: «Отсортировать данные по алфавиту»

textual
Листинг программы
  1. {Дан файл f.txt, состоящий из записей . Каждая запись содержит поля:
  2. -табельный номер(целое число от 0 до 9999).
  3. - фамилия (Символьное поле длиной 30 ).
  4. Упорядочить записи по полю фамилия алфавитном порядке
  5. и записать в файл f1.txt)
  6. с помощью алгоритма сортировки и вывести новый массив.}
  7. type zap=record
  8.              nom:integer;
  9.              fam:string[30];
  10.              end;
  11. var a:array[1..100] of zap;
  12.     n,i,j:integer;
  13.     f:text;
  14.     s:string;
  15.     x:zap;
  16. begin
  17. n:=0;
  18. assign(f,'f.txt');
  19. reset(f);
  20. while not eof(f) do
  21.  begin
  22.   readln(f,s);
  23.   n:=n+1;
  24.   a[n].nom:=strtoint(copy(s,1,pos(' ',s)-1));
  25.   delete(s,1,pos(' ',s));
  26.   a[n].fam:=s;
  27.  end;
  28. close(f);
  29. for i:=1 to n-1 do
  30. for j:=i+1 to n do
  31. if a[i].fam>a[j].fam then
  32.  begin
  33.   x:=a[i];
  34.   a[i]:=a[j];
  35.   a[j]:=x;
  36.  end;
  37. assign(f,'f1.txt');
  38. rewrite(f);
  39. for i:=1 to N do
  40.  begin
  41.   write(f,a[i].nom);
  42.   writeln(f,' ',a[i].fam);
  43.  end;
  44. close(f);
  45. writeln('Файл f.txt прочитан, данные отсортированы по алфавиту и записаны в файл f1.txt');
  46. end.

Объяснение кода листинга программы

  1. Объявление переменных:
    • n - счетчик количества записей в файле;
    • i, j - переменные для сортировки;
    • f - файл для чтения;
    • s - строка для чтения записи из файла;
    • x - временная переменная для обмена значениями;
    • a - массив для хранения записей.
  2. Чтение данных из файла f.txt и заполнение массива a.
  3. Сортировка массива a по полю fam в алфавитном порядке.
  4. Переименование файла f.txt в f1.txt.
  5. Запись отсортированных данных из массива a в файл f1.txt.
  6. Вывод сообщения об успешном выполнении задачи.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.8 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы