Программа должна оставить всего две строки!
Добавлено: 07 дек 2010, 01:57
Создаем папку ( к примеру 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);{если на разу не совпало, в новый файл} к= надо вставить число
Пожалуйста!!!! Помогите разобраться!!!!
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);{если на разу не совпало, в новый файл} к= надо вставить число
Пожалуйста!!!! Помогите разобраться!!!!