Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

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

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы
Старый 26.05.2008, 20:03   #1
Дима82
Форумчанин
 
Аватар для Дима82
 
Регистрация: 09.05.2008
Сообщений: 108
По умолчанию У меня вопрос такой(Pascal)

У меня вопрос такой(обработка файлов):
"Перестановка в конец текста строк с заданным символом."

Какой алгоритм должен быть для перестановки в конец текста строк с заданным символом?
Дима82 вне форума Ответить с цитированием
Старый 26.05.2008, 20:11   #2
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Выбрать такие строки в один массив, а все остальные в другой. Затем переписать файл, вводя сначала строки без символов, потом строки с символом.
puporev вне форума Ответить с цитированием
Старый 26.05.2008, 20:16   #3
Дима82
Форумчанин
 
Аватар для Дима82
 
Регистрация: 09.05.2008
Сообщений: 108
По умолчанию

Не понял как это?

Код:
Program Lb9;
Uses crt;
Var file1,file2,s,s1:string;
    f1,f2:text;
    n:integer;
Begin
clrscr;
write('Input file= ');
readln(file1);
write('Output file= ');
readln(file2);
assign(f1,file1);
reset(f1);
if ioresult<>0 then begin
 write('File not found');
 readln;
end;
assign(f2, file2);
rewrite(f2);
//-----?
write('s1: ');
readln(s1);
while not eof(f1) do begin
 readln(f1, s);
//-----?
  writeln(f2, s)
 end;
 close(f1);
 close(f2);
End.
Дима82 вне форума Ответить с цитированием
Старый 26.05.2008, 20:37   #4
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

1.Добавь переменную c:char; это будет заданный символ.
2.Объяви два строковых массива s1,s2:array[1..50]of string;
3.При чтении файла:
если в строке есть символ, записываешь в массив s1,
если нет - в массив s2
считаешь количество тех строк и других, чтобы определить размеры массивов
4. В новый файл записываешь сначала один массив, потом другой, например:
Код:
 for i:=1 to n do
    writeln(g,s1[i]);
   for i:=n+1 to n+m do
    writeln(g,s2[i]);
Вот примерно так.
puporev вне форума Ответить с цитированием
Старый 26.05.2008, 20:53   #5
Дима82
Форумчанин
 
Аватар для Дима82
 
Регистрация: 09.05.2008
Сообщений: 108
По умолчанию

Что-то я намудрил, что только не переправлял, исправьте пожалуйста программку...

Код:
Program Lb9;
Uses crt;
Var file1,file2:string;
    s1,s2:array[1..50] of string;
    f1,f2:text;
    n,m:integer; g:char;  i:1..50;
Begin
clrscr;
write('Input file= ');
readln(file1);
write('Output file= ');
readln(file2);
assign(f1,file1);
reset(f1);
if ioresult<>0 then begin
 write('File not found');
 readln;
end;
assign(f2, file2);
rewrite(f2);
while not eof(f1) do begin
for i:=1 to n do
writeln(g,s1[I]);
for i:=n+1 to n+m do
writeln(g,s2[i]);
 readln(f1, g);
  writeln(f2, g)
 end;
 close(f1);
 close(f2);
End.
Дима82 вне форума Ответить с цитированием
Старый 26.05.2008, 21:02   #6
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Ты меня извини, но ты написал ерунду. Как ты узнал, есть символ в строке или нет. Ты даже строку не прочитал, и вообще когда пишешь, нужно рассуждать, думать что за чем идет, что каждая строчка, каждое слово в коде означают, а тебя набор служебных слов и ничего более.
Я поторопился, неправильно в конце ввод в файл написал, ты без всяких переписываешь. Вот смотри как нужно, а ночь начинается, некогда обмениваться постами.
Код:
uses crt;
var f,g:text;
    s1,s2:array[1..50]of string;
    i,j,n,m:byte;
    s:string;
    c:char;
begin
clrscr;
assign(f,'text1.txt');
reset(f);
write('Simvol: ');readln(c);
n:=0;m:=0;
while not eof(f) do
   begin
     readln(f,s);//считываем строку
     j:=0;
     for i:=1 to length(s)do
     if s[i]=c then j:=j+1;//считаем количество заданных символов в строке 
     if j=0 then
         begin
           n:=n+1;
           s1[n]:=s;//если символов нет s1[n]
         end
     else if i>0 then
        begin
          m:=m+1;
          s2[m]:=s; //если символы есть в s2[m]
        end;
    end;
close(f);
assign(g,'text2.txt');
rewrite(g);
for i:=1 to n do//вводим строки без символов
writeln(g,s1[i]);
for i:=1 to m do
writeln(g,s2[i]); //вводим строки с символами
close(g);
writeln('Fail text2 zapisan!');
readln
end.
Переменные можешь поменять на свои.
puporev вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
А существует ли такой инструмент? ЛомиК Свободное общение 5 06.08.2008 14:06
У меня вопрос про базы данных,а точнее про таблицы!!! Alexij Общие вопросы Delphi 1 13.04.2008 22:24
У меня вопрос простой помогите мне найти книги поMicrosoft Visual Studio 2005 LuMax Помощь студентам 1 11.12.2007 15:14
у меня есть глупый вопрос AGA Помощь студентам 3 23.06.2007 18:16
где в VBA такой компонент ??? Noor Microsoft Office Excel 2 22.03.2007 12:10


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS
Здесь нужно купить рекламу за 7 тыс руб в месяц! )
пишите сюда - alarforum@yandex.ru
ИКС 840