![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
jackal |
![]()
Сообщение
#1
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 17 Репутация: ![]() ![]() ![]() |
Люди посмотрите мою ещё "сырую" прогу!
Привет всем! Вот имеется прога по файлам: Имеется текстовфй файл. Нужно поменять в файле максимальную строку на минимальную и наооборот.(Естесственно записать всё это в файл). Максимум и минимум в файле нашёл. Но как поменять? И записать? Пробовал через write(f,x) пишет Runtime 105 error! Подскажите плиз! Код program kontr1; uses wincrt; type myfile=text; var f:myfile; a,max,min1:string; min:byte; begin assign(f,'e:bptimka1.txt'); reset(f); max:=''; min:=255; while not eof(f) do while not eoln(f) do begin readln(f,a); if length(a)>length(max) then max:=a; if length(a)<min then begin min:=length(a); min1:=a; end; end; writeln(max); writeln(min1); close(f); end. Сообщение отредактировано: volvo - 17.12.2004 12:39 |
AlaRic |
![]()
Сообщение
#2
|
... ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 347 Пол: Мужской Репутация: ![]() ![]() ![]() |
105 ошибка - файл не открыт для записи!
reset - открытие файла только для чтения, используй rewrite |
jackal |
![]()
Сообщение
#3
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 17 Репутация: ![]() ![]() ![]() |
Alaric спасибо!
Но как же поменять максимальную на минимальную строку и наооборот(записать в файл)? |
___ALex___ |
![]()
Сообщение
#4
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 282 Репутация: ![]() ![]() ![]() |
Обязательно текстовый файл использовать?
|
GLuk |
![]()
Сообщение
#5
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 775 Пол: Мужской Репутация: ![]() ![]() ![]() |
Имеется ли возможность открыть второй файл для записи, после закрыть исходный, а затем переименовать получившийся?
Иначе слишком выкобениваться надо... :-/ |
jackal |
![]()
Сообщение
#6
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 17 Репутация: ![]() ![]() ![]() |
Gluk , Да возможно и так!!!
|
jackal |
![]()
Сообщение
#7
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 17 Репутация: ![]() ![]() ![]() |
Был бы файл не тектовый я бы давно бы уже сделал
![]() |
___ALex___ |
![]()
Сообщение
#8
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 282 Репутация: ![]() ![]() ![]() |
щас если до хоккея успею напишу
![]() |
jackal |
![]()
Сообщение
#9
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 17 Репутация: ![]() ![]() ![]() |
Всё я сам сделал!!!
Код program kontr1; uses wincrt; type myfile=text; var f,l:myfile; a,max,min1:string; min:byte; begin assign(f,'e:bptimka1.txt'); assign(l, 'e:bptimka2.txt') ; reset(f); max:=''; min:=255; while not eof(f) do while not eoln(f) do begin readln(f,a); if length(a)>length(max) then max:=a; if length(a)<min then begin min:=length(a); min1:=a; end; end; close(f); reset(f); rewrite(l); while not eof(f) do begin readln(f,a); if a=max then writeln(l,min1) else ; if a=min1 then writeln(l,max) else if (a<>max) and (a<>min1) then writeln(l,a); end; close(f); close(l); erase(f); rename(l,'e:bptimka1.txt') ; end. Сообщение отредактировано: volvo - 17.12.2004 12:40 |
___ALex___ |
![]()
Сообщение
#10
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 282 Репутация: ![]() ![]() ![]() |
Код program For_jackal; uses Crt; var InF, OutF: Text; S, MaxStr, MinStr: String; NStrMax, NStrMin, i, MinLen: Word; MaxLen: Byte; Begin ClrScr; Assign(InF, 'C:SFile.txt'); Reset(InF); MaxLen := 0; MinLen := 256; while not Eof(InF) do begin Inc(i); ReadLn(InF, S); if MaxLen < Length(S) then begin MaxLen := Length(S); NStrMax := i; MaxStr := S; end; if MinLen > Length(S) then begin MinLen := Length(S); NStrMin := i; MinStr := S; end; end; if (i < 2) or (MinLen = MaxLen) then Exit; Assign(OutF, 'C:OutFile.txt'); Rewrite(OutF); Reset(InF); i := 0; while not Eof(InF) do begin Inc(i); ReadLn(InF, S); if i = NStrMax then WriteLn(OutF, MinStr) else if i = NStrMin then WriteLn(OutF, MaxStr) else WriteLn(OutF, S); end; Close(InF); Erase(InF); Close(OutF); Rename(OutF, 'C:SFile.txt'); Write('Операция прошла успешно'); repeat until KeyPressed End. раз уж написал ;) Сообщение отредактировано: volvo - 17.12.2004 12:41 |
AlaRic |
![]()
Сообщение
#11
|
... ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 347 Пол: Мужской Репутация: ![]() ![]() ![]() |
Цитата uses wincrt; Вопрос из зала: на виндовом пасе сидишь? Ну и как? |
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 18:32 |