![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
setare |
![]()
Сообщение
#1
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 152 Пол: Женский Репутация: ![]() ![]() ![]() |
Нам дан текстовый файл в кот написано 1000 слов. Длина стлов не превышает 150. Нужно используя указатель сортировать эти слова по альфавиту и записать в новый файл.
Код type mas=array[1..200] of string; var ukm:^mas; flname,s:string; f,f1:text; i,j:integer; begin writeln('Vvedit imya fila.'); readln(flname); assign(f,flname); reset(f); new(ukm); for i:=1 to 200 do readln(f,ukm^[i]); writeln(ukm^[i]); close(f); for J:=1 to 199 do for i:=1 to 200-j do if Ukm^[i]>Ukm^[i+1] then begin s:=ukm^[i]; Ukm^[i]:=Ukm^[i+1]; Ukm^[i+1]:=S; end; writeln('Vvedite imya novogo fila.'); readln(flname); assign(f1,flname); rewrite(f1); for i:=1 to 200 do writeln(f1,Ukm^[i]); close(f1); Dispose(Ukm); end. -------------------- Ты спрашиваешь, как я переношу длинные бессонные ночи?Как свеча: как только настает утро, я гасну, тем самым, имея возможность заново загореться.
Нима |
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Ну, а если я перепишу ее вот так:
Код const maxLines = 1000; Type PStr = ^TStr; TStr = String[150]; { Это же максимальный размер, не так ли? } mas = array[1 .. maxLines] of PStr; var ukm: mas; flname,s:string; f,f1:text; i,j:integer; begin writeln('Vvedit imya fila.'); readln(flname); assign(f,flname); reset(f); for i:=1 to maxLines do begin ukm[i] := new(pstr) readln(f, ukm[i]^); writeln(ukm[i]^); end; close(f); { пузырьковая сортировка ? } for i:=1 to maxLines do for j:=maxLines downto i+1 do if Ukm[j - 1]^ > Ukm[j]^ then begin s:=ukm[j-1]^; Ukm[j-1]^:=Ukm[j]^; Ukm[j]^:=S; end; writeln('Vvedite imya novogo fila.'); readln(flname); assign(f1,flname); rewrite(f1); for i:=1 to 1000 do begin writeln(f1,Ukm[i]^); dispose(ukm[i]); end; close(f1); end. Вот так, скорее всего, должно работать... |
![]() ![]() |
![]() |
Текстовая версия | 21.07.2025 6:17 |