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

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

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

 
 Ответить  Открыть новую тему 
> "Сырая прога"
jackal
сообщение 2.05.2003 9:46
Сообщение #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 - 17.12.2004 12:39
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
AlaRic
сообщение 2.05.2003 15:36
Сообщение #2


...
*****

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

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


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


Новичок
*

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

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


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


Бывалый
***

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

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


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


Профи
****

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

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


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

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


Новичок
*

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

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


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


Новичок
*

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

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


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


Бывалый
***

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

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


щас если до хоккея успею напишу smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
jackal
сообщение 2.05.2003 16:50
Сообщение #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 - 17.12.2004 12:40
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
___ALex___
сообщение 2.05.2003 17:34
Сообщение #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 - 17.12.2004 12:41
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
AlaRic
сообщение 2.05.2003 18:45
Сообщение #11


...
*****

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

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


Цитата
uses wincrt;

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

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

 



- Текстовая версия 20.07.2025 18:32
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"