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

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Ответить
mirt
Сообщения: 2
Зарегистрирован: 07 дек 2010, 01:45

Создаем папку ( к примеру 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);{если на разу не совпало, в новый файл} к= надо вставить число




Пожалуйста!!!! Помогите разобраться!!!!
BBB
Сообщения: 1298
Зарегистрирован: 27 дек 2005, 13:37

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

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

var F: Text;
begin
  assign (F, 'file2.txt');
  rewrite (F);
  writeln ('2 1 3');
  writeln ('3 1 2');
  close (F);
end.
mirt
Сообщения: 2
Зарегистрирован: 07 дек 2010, 01:45

Нет нет нет вы немного не так поняли :)

У нас в 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>
Ответить