- дано имя файла и целые положительные числа N и K. Создать текстовый файл с указанным именем и записать
в него N строк, каждая из которых состоит из K символов *;
- дана строка S и текстовый файл. Добавить строку S в начало файла;
- дано целое число К и текстовый файл; сформировать новый файл, удалив из исходного файла строку с
номером К, если строки с таким номером нет, то переписать файл без изменений.
Решение первой задачи я осилила, но две последние не даются никак. Очень прошу спасите меня
var
oldfile,newfile:text;
name,tempname,ts,s:string;
begin
s:='1 stroka';
name:='in.txt';
tempname:='temp.dat';
assign(oldfile,name);
assign(newfile,tempname);
reset(oldfile);
rewrite(newfile);
writeln(newfile,s);
while not eof(oldfile) do begin
readln(oldfile,ts);
writeln(newfile,ts);
end;
close(oldfile);
close(newfile);
erase(oldfile);
rename(newfile,name);
end.
Cпасибо тебе Альтаирчик
Со второй задачей в принципе все понятно за исключением одного, мне ведь надо удалить строку не введением строковой переменной(как в FAQ), а введением целого числа - номера строки:
тоесть как я поняла мне надо:
1. Ввести номер строки
2. Сформировать новый файл считать из старого содержимое в перменную за исключением одной строки, записать из пременной в новый файл.
3. Удалить старый и переименовать новый
Вопрос возникает по второму пункту, как посчитать строки и тем самым указать какую удалить???
i:=0;
while not eof(f) do begin {читаем пока не конец файла }
readln(f,s); {прочли строку}
inc(i); {увеличили i }
if k<>i then writeln(g,s); {если не та строка что нужно пропустить то записываем}
end;
Все OK, поняла. Еще раз БИГ сэнкс
Вроде все правильно написала, а строка удаляться никак не хочет ...
Чего это было?
Может, лучше так:
program test;
uses crt;
var
f,g : text;
k,i : integer;
s:string;
begin
clrscr;
assign(f, 'file1.txt'); rewrite(f);
assign(g, 'file2.txt'); rewrite(g);
writeln('Vvedite nomer udalayemoy stroki');
readln(k);
writeln('Vvod file');
repeat
readln(s);
if s <> '.' then
writeln(f, s);
until s = '.';
i:=0;
reset(f);
while not eof(f) do begin
inc(i);
readln(f,s);
if k<>i then writeln(g,s);
end;
close(f);
close(g);
erase(f);
{
rename(g, 'file1.txt');
}
end.
То есть моя ошибка: преборщила с циклом, не надо было там писать rewrite... Поняла, спасибо .
Finasteride Sample
Buy Olanzapine