Создаем папку ( к примеру 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);{если на разу не совпало, в новый файл} к= надо вставить число
Пожалуйста!!!! Помогите разобраться!!!!
Программа должна оставить всего две строки!
Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду
Отличное описание задачи! 
Если конечная цель - получить указанный file2.txt (как можно понять), то все решается проще

Если конечная цель - получить указанный file2.txt (как можно понять), то все решается проще

Код: Выделить всё
var F: Text;
begin
assign (F, 'file2.txt');
rewrite (F);
writeln ('2 1 3');
writeln ('3 1 2');
close (F);
end.
Нет нет нет вы немного не так поняли 
У нас в file1.txt введены числа.
Нужно что бы программа из file1.txt оставила только числа 2 1 3 и 3 1 2, которые онаже запишит в file2.txt

У нас в file1.txt введены числа.
Нужно что бы программа из file1.txt оставила только числа 2 1 3 и 3 1 2, которые онаже запишит в file2.txt
- Игорь Акопян
- Сообщения: 1440
- Зарегистрирован: 13 окт 2004, 17:11
- Откуда: СПБ
- Контактная информация:
критерий-то не указан, всё равно... если надо убить строки, где хоть одна из цифр стоит на своём месте, то почему убивается вариант 2 3 1?

- Oleg_Rus
- Сообщения: 335
- Зарегистрирован: 16 окт 2006, 09:56
- Откуда: г.Улан-Удэ, респ.Бурятия, Российская Федерация
- Контактная информация:
Пожалуйста, приведите задание полностью.
e-mail: garmayev@yandex.ru
---------------------------------------------------------------------------
<a href="http://nick-name.ru/sertificates/711965/"><img src="http://nick-name.ru/img.php?nick=Garmay ... =2&text=t5" alt="Никнейм Garmayev зарегистрирован!" /></a>
---------------------------------------------------------------------------
<a href="http://nick-name.ru/sertificates/711965/"><img src="http://nick-name.ru/img.php?nick=Garmay ... =2&text=t5" alt="Никнейм Garmayev зарегистрирован!" /></a>