Страница 1 из 1

Программа должна оставить всего две строки!

Добавлено: 07 дек 2010, 01:57
mirt
Создаем папку ( к примеру Pascal ABC) в эту папку сохраняем вот это под названием Program1.pas
uses crt;
var f,g:text;
s,s1,s2:string;
i,k,t,c:integer;
begin
clrscr;
assign(f,'file1.txt');
reset(f);
assign(g,'file2.txt');
rewrite(g);
while not eof(f) do
begin
readln(f,s);{читаем строку}
s1:=s+' ';{создаем вспомогательную, над ней измываться будем, добавим к ней пробел}
while pos(' *',s1)>0 do{на всякий случай удалим лишние пробелы}
delete(s1,pos(' *',s1),1);{если не нужно, уберите эти 2 строки из кода}
i:=0;k:=0;{счетчики чисел и совпадений их с номером}
while pos(' ',s1)>0 do{пока есть пробелы}
begin
s2:=copy(s1,1,pos(' ',s1)-1);{читаем первое слово}
val(s2,t,c);{преобразуем в число}
i:=i+1;{считаем}
if t=i then k:=k+1;{если совпало число со своим номером, считаем}
delete(s1,1,pos(' ',s1));{удаляем его с пробелом, следующее число первое}
end;
if k=0 then writeln(g,s);{если на разу не совпало, в новый файл}
end;
close(f);
close(g);
write('Fail perepisan!');
readln
end.

В этой же папке нужно создать два текстовых файла:
1. file1.txt
2. file2.txt


В первом текстовом файле записать
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1

Запустить программу. И программа должна оставить только строки :
2 1 3
3 1 2
Которые она запишет во втором текстовом файле.





Уже ввел миллион комбинаций и все равно не могу получить положительный результат.
Я думаю что загвоздка вод здесь :

i:=i+1;{считаем} i+ надо вставить число
if t=i then k:=k+1;{если совпало число со своим номером, считаем} к+ надо вставить число
delete(s1,1,pos(' ',s1));{удаляем его с пробелом, следующее число первое}
end;
if k=0 then writeln(g,s);{если на разу не совпало, в новый файл} к= надо вставить число




Пожалуйста!!!! Помогите разобраться!!!!

Re: Программа должна оставить всего две строки!

Добавлено: 07 дек 2010, 09:29
BBB
Отличное описание задачи! :)
Если конечная цель - получить указанный file2.txt (как можно понять), то все решается проще :)

Код: Выделить всё

var F: Text;
begin
  assign (F, 'file2.txt');
  rewrite (F);
  writeln ('2 1 3');
  writeln ('3 1 2');
  close (F);
end.

Re: Программа должна оставить всего две строки!

Добавлено: 07 дек 2010, 13:06
mirt
Нет нет нет вы немного не так поняли :)

У нас в file1.txt введены числа.
Нужно что бы программа из file1.txt оставила только числа 2 1 3 и 3 1 2, которые онаже запишит в file2.txt

Re: Программа должна оставить всего две строки!

Добавлено: 07 дек 2010, 16:03
Игорь Акопян
критерий-то не указан, всё равно... если надо убить строки, где хоть одна из цифр стоит на своём месте, то почему убивается вариант 2 3 1?

Re: Программа должна оставить всего две строки!

Добавлено: 15 дек 2010, 05:45
Oleg_Rus
Пожалуйста, приведите задание полностью.