Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.04.2012, 11:51   #1
overload
 
Регистрация: 08.04.2012
Сообщений: 3
По умолчанию Задача на обработку текстовых файлов на Delphi

Задача 1
На диске С созданы четыре файла 1.txt, 2.txt, 3.txt, 4.txt. Если количество символов файла 1.txt не превышает количества символов файла 3.txt и файл 4.txt содержит хотя бы одну точку, то создать в папке новый файл в который поместить содержимое файлов 2.txt и 3.txt. Если файл 1.txt, 4.txt и 2.txt не содержат пробелов, то их содержимое заменить на содержимое файлов 4.txt, 3.txt и 1.txt соответственно.
Задача 2
На диске С созданы пять файла 1.txt, 2.txt, 3.txt, 4.txt, 5.txt, содержащие целые числа. Если сумма отрицательных чисел файлов 2.txt и 5.txt больше, чем количество четных чисел в файлах 1.txt, 3.txt, 4.txt, то подсчитать общее количетво чисел в пяти файлах и результат дописать во все пять файлов. Если в файлах 4.txt и 3.txt есть хотя бы один ноль, то создать на диске С новый файл, в который поместить содержимое файла 5.txt, записанное в обратном порядке(с конца в начало).

Это к первой, но она чего то не выдает значения...
Цитата:
var
Form1: TForm1;
f1,f2,f3,f4,f5:TextFile;
c:char;
kt,k1,k3,p1,p2,p4:integer;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Lines.LoadFromFile('C:\Studen t\Files\1.txt');
Memo2.Lines.LoadFromFile('C:\Studen t\Files\2.txt');
Memo3.Lines.LoadFromFile('C:\Studen t\Files\3.txt');
Memo4.Lines.LoadFromFile('C:\Studen t\Files\4.txt');
Assignfile(f1,'C:\Student\Files\1.t xt');
Assignfile(f2,'C:\Student\Files\2.t xt');
Assignfile(f3,'C:\Student\Files\3.t xt');
Assignfile(f4,'C:\Student\Files\4.t xt');
Assignfile(f5,'C:\Student\Files\rez ultat.txt');
Reset(f1);
Reset(f3);
Reset(f4);
k1:=0;
k3:=0;
While not eof(f4) do
begin
Read(f4,c);
If c='.' then kt:=kt+1;
end;
While not eof(f1) do begin
Read(f1,c);
k1:=k1+1;
end;
While not eof(f3) do begin
Read(f3,c);
k3:=k3+1;
end;
If (kt>=1) and (k1<k3) then
begin
Rewrite(f5);
Reset(f2);
While not eof(f2) do
begin
Read(f2,c);
Write(f5,c);
end;
While not eof(f3) do
begin
Read(f3,c);
Write(f5,c);
end;
end;
p1:=0;
p2:=0;
p4:=0;
While not eof(f1) do
begin
Read(f1,c);
If c=' ' then p1:=p1+1;
end;
While not eof(f2) do
begin
Read(f2,c);
If c=' ' then p2:=p2+1;
end;
While not eof(f4) do
begin
Read(f4,c);
If c=' ' then p4:=p4+1;
end;
If (p1=0) and (p2=0) and (p4=0) then
begin
closefile(f1);
closefile(f2);
closefile(f4);
reset(f1);
reset(f3);
reset(f4);
rewrite(f1);
rewrite(f2);
rewrite(f4);
While not eof(f4) do
begin
read(f4,c);
Write(f1,c);
end ;
While not eof(f3) do
begin
read(f3,c);
Write(f4,c);
end;
While not eof(f1) do
begin
read(f1,c);
Write(f2,c);
end;
closefile(f1);
closefile(f2);
closefile(f3);
closefile(f4);
closefile(f5);
end;
end;
end.
overload вне форума Ответить с цитированием
Старый 08.04.2012, 12:01   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Задача 1
На диске С созданы четыре файла 1.txt, 2.txt, 3.txt, 4.txt. Если количество символов файла 1.txt не превышает количества символов файла 3.txt и файл 4.txt содержит хотя бы одну точку, то создать в папке новый файл в который поместить содержимое файлов 2.txt и 3.txt. Если файл 1.txt, 4.txt и 2.txt не содержат пробелов, то их содержимое заменить на содержимое файлов 4.txt, 3.txt и 1.txt соответственно.
Код:
var s:array[1..5] of TStringList;i:integer;
begin
 //Загрузили файлы
 for i:=1 to 5 do begin
  s[i]:=TStringList.Create;s[i].LoadFromFile('c:\'+IntToStr(i)+'.txt');
 end;
 
// Выполнили первое условие
 if (Length(s[1].Text)<=Length(s[3].Text)) and (s[1].Count>0) then begin
  s[5].Text:=s[2].text+s[3].text;
  s[5].SaveToFile('c:\5.txt');
 end;

//Выполнили второе 
 if (pos(' ',s[1].Text+s[4].Texts[2].Text)=0 then begin
  s[5].Text:=s[1].Text; s[1].Text:=s[4].Text;
  s[4].Text:=s[3].Text;
  s[2].Text:=s[5].Text;
 end;

//Пересохранили и убрали мусор
 for i:=1 to 4 do begin
  s[i].SaveToFile('c:\'+IntToStr(i)+'.txt');
  s[i].free;
 end;
 s[5].free;
end;
Идея понятна?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.04.2012, 12:10   #3
overload
 
Регистрация: 08.04.2012
Сообщений: 3
По умолчанию

Эммм, не очень... Если я наверно такое преподу на практике покажу, он потом меня вообще загоняет такими задачами...
overload вне форума Ответить с цитированием
Старый 08.04.2012, 13:24   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Мдя... Преподы это могут.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача на обработку Записи (delphi) MONSTER152 Помощь студентам 3 28.03.2012 15:30
Шифрование текстовых файлов Delphi Zaozaa Помощь студентам 2 16.12.2011 07:28
задача в с++ (обработка текстовых файлов) impossible Помощь студентам 0 30.04.2011 20:25
Заказ. Обработка текстовых файлов (cvs). Delphi/Pascal Zalim Фриланс 8 25.11.2010 23:58
задачи: на двумерные массивы,обработку строк,обработку текстовых файлов. (Паскаль) Yaro Помощь студентам 2 12.11.2009 12:55