IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> "Сырая прога"
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 17

Репутация: -  0  +


Люди посмотрите мою ещё "сырую" прогу!

Привет всем!
Вот имеется прога по файлам:
Имеется текстовфй файл. Нужно поменять в файле максимальную строку на минимальную и наооборот.(Естесственно записать всё это в файл).

Максимум и минимум в файле нашёл. Но как поменять? И записать?
Пробовал через 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 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


...
*****

Группа: Пользователи
Сообщений: 1 347
Пол: Мужской

Репутация: -  3  +


105 ошибка - файл не открыт для записи!
reset - открытие файла только для чтения, используй rewrite
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 17

Репутация: -  0  +


Alaric спасибо!
Но как же поменять максимальную на минимальную строку и наооборот(записать в файл)?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Бывалый
***

Группа: Пользователи
Сообщений: 282

Репутация: -  0  +


Обязательно текстовый файл использовать?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Профи
****

Группа: Пользователи
Сообщений: 775
Пол: Мужской

Репутация: -  0  +


Имеется ли возможность открыть второй файл для записи, после закрыть исходный, а затем переименовать получившийся?

Иначе слишком выкобениваться надо...  :-/
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Новичок
*

Группа: Пользователи
Сообщений: 17

Репутация: -  0  +


Gluk , Да возможно и так!!!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Новичок
*

Группа: Пользователи
Сообщений: 17

Репутация: -  0  +


Был бы файл не тектовый я бы давно бы уже сделал smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Бывалый
***

Группа: Пользователи
Сообщений: 282

Репутация: -  0  +


щас если до хоккея успею напишу smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Новичок
*

Группа: Пользователи
Сообщений: 17

Репутация: -  0  +


Всё я сам сделал!!!
Код
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 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Бывалый
***

Группа: Пользователи
Сообщений: 282

Репутация: -  0  +


Код
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 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


...
*****

Группа: Пользователи
Сообщений: 1 347
Пол: Мужской

Репутация: -  3  +


Цитата
uses wincrt;

Вопрос из зала: на виндовом пасе сидишь? Ну и как?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 1.12.2020 20:09
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name