Отсортировать данные по алфавиту - PascalABC.NET
Формулировка задачи:
Суть программы она должна отсортировать данные по алфавиту. Можно ли сделать так что-бы при выводе программы из файла она каждую фамилию писала с новой строки?
Как сделать чтобы тоже само работало с данными из файла?
Листинг программы
- const N = 2;
- var f,f1:text;
- str: array[1..N] of string[20];
- s,a: string[20];
- i, j: byte;
- begin
- assign(f,'fail.txt');
- assign(f1,'21.txt');
- reset(f);
- rewrite(f1);
- while not seekeof(f) do
- for i:=1 to n do
- begin
- read(f,a);
- str[i]:=a;
- end;
- begin
- for i:=1 to N-1 do
- for j:=1 to N-i do
- if str[j][1] > str[j+1][1] then begin
- s := str[j];
- str[j] := str[j+1];
- str[j+1] := s;
- end;
- writeln;
- for i:=1 to N do
- begin
- writeln(f1,str[i]);
- begin
- writeln;
- end;end;
- close(f1);
- close(f);
- writeln;
- end;
- end.
Теперь вообще не работает
Она работает но не до конца правильно. Вот допустим если в файле записаны данные так "Серг 2224 Пере 3243 Купр 4223 " то она выдает " Купр 4223 Серг 2224 Пере 3243 " как и должно быть но если там просто имена или полные имена то она ни чего не делает
вот я написал программу которая делает тоже самое но не с данными из файла и она работает нормально
Листинг программы
- const N = 5;
- var f:text;
- str: array[1..N] of string[20];
- s: string[20];
- i, j: byte;
- begin
- assign(f,'fail.txt');
- rewrite(f);
- for i:=1 to N do
- begin
- write('Введите фамилию : ');readln(str[i]);
- end;
- for i:=1 to N-1 do
- for j:=1 to N-i do
- if str[j][1] > str[j+1][1] then begin
- s := str[j];
- str[j] := str[j+1];
- str[j+1] := s;
- end;
- writeln;
- for i:=1 to N do write(f,' ',str[i]);
- close(f);;
- writeln;
- end.
Решение задачи: «Отсортировать данные по алфавиту»
textual
Листинг программы
- {Дан файл f.txt, состоящий из записей . Каждая запись содержит поля:
- -табельный номер(целое число от 0 до 9999).
- - фамилия (Символьное поле длиной 30 ).
- Упорядочить записи по полю фамилия (в алфавитном порядке
- и записать в файл f1.txt)
- с помощью алгоритма сортировки и вывести новый массив.}
- type zap=record
- nom:integer;
- fam:string[30];
- end;
- var a:array[1..100] of zap;
- n,i,j:integer;
- f:text;
- s:string;
- x:zap;
- begin
- n:=0;
- assign(f,'f.txt');
- reset(f);
- while not eof(f) do
- begin
- readln(f,s);
- n:=n+1;
- a[n].nom:=strtoint(copy(s,1,pos(' ',s)-1));
- delete(s,1,pos(' ',s));
- a[n].fam:=s;
- end;
- close(f);
- for i:=1 to n-1 do
- for j:=i+1 to n do
- if a[i].fam>a[j].fam then
- begin
- x:=a[i];
- a[i]:=a[j];
- a[j]:=x;
- end;
- assign(f,'f1.txt');
- rewrite(f);
- for i:=1 to N do
- begin
- write(f,a[i].nom);
- writeln(f,' ',a[i].fam);
- end;
- close(f);
- writeln('Файл f.txt прочитан, данные отсортированы по алфавиту и записаны в файл f1.txt');
- end.
Объяснение кода листинга программы
- Объявление переменных:
n
- счетчик количества записей в файле;i
,j
- переменные для сортировки;f
- файл для чтения;s
- строка для чтения записи из файла;x
- временная переменная для обмена значениями;a
- массив для хранения записей.
- Чтение данных из файла
f.txt
и заполнение массиваa
. - Сортировка массива
a
по полюfam
в алфавитном порядке. - Переименование файла
f.txt
вf1.txt
. - Запись отсортированных данных из массива
a
в файлf1.txt
. - Вывод сообщения об успешном выполнении задачи.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д