Помощь - Поиск - Пользователи - Календарь
Полная версия: Файлы...
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Alla
- дано имя файла и целые положительные числа N и K. Создать текстовый файл с указанным именем и записать
в него N строк, каждая из которых состоит из K символов *;
- дана строка S и текстовый файл. Добавить строку S в начало файла;
- дано целое число К и текстовый файл; сформировать новый файл, удалив из исходного файла строку с
номером К, если строки с таким номером нет, то переписать файл без изменений.

Решение первой задачи я осилила, но две последние не даются никак. Очень прошу спасите меня mega_chok.gif
Код

program test;
uses crt;
var
f : text;
k, n, i, j : integer;
s : char;
begin
clrscr;
writeln('Enter kol-vo strings: ');
readln(n);
writeln('Enter kol-vo symbools: ');
readln(k);
assign(f,'file1.txt');
rewrite(f);
for i:=1 to n do
  for j:=1 to k do
   begin
   readln(s);
   write(f,s);
   end;
  readln;
end.
Altair
Цитата
- дана строка 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.

Цитата

- дано целое число К и текстовый файл; сформировать новый файл, удалив из исходного файла строку с
номером К, если строки с таким номером нет, то переписать файл без изменений.

то же самое, создай временный файл, и его сформируй. А потом перекинь все в старый.
Alla
Cпасибо тебе Альтаирчик wub.gif
Гость
Со второй задачей в принципе все понятно за исключением одного, мне ведь надо удалить строку не введением строковой переменной(как в FAQ), а введением целого числа - номера строки:
тоесть как я поняла мне надо:
1. Ввести номер строки
2. Сформировать новый файл считать из старого содержимое в перменную за исключением одной строки, записать из пременной в новый файл.
3. Удалить старый и переименовать новый

Вопрос возникает по второму пункту, как посчитать строки и тем самым указать какую удалить???
Altair
Цитата
Сформировать новый файл считать из старого содержимое в перменную за исключением одной строки, записать из пременной в новый файл.

i:=0;
while not eof(f) do begin {читаем пока не конец файла }
readln(f,s); {прочли строку}
inc(i); {увеличили i }
if k<>i then writeln(g,s); {если не та строка что нужно пропустить то записываем}
end;


смысл понятен ?
Гость
Все OK, поняла. Еще раз БИГ сэнкс smile.gif
Alla
Вроде все правильно написала, а строка удаляться никак не хочет ...
Код

program test;
uses crt;
var
f,g : text;
k,i : integer;
s:string;

begin
clrscr;
assign(f, 'file1.txt');
assign(g, 'file2.txt');
writeln('Vvedite nomer udalayemoy stroki');
readln(k);

repeat
writeln('Vvod file');
readln(s);
until s<>'.';
i:=0;
rewrite(f);
writeln(f,s);
close(f);
reset(f);
while not eof(f) do begin
   readln(f,s);
   inc(i);
   if k<>i then
   reset(g);
   rewrite(g);
   writeln(g,s);
   close(g);
end;

erase(f);

end.
volvo
blink.gif Чего это было?

Может, лучше так:
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... Поняла, спасибо .
will viagra show up on a drug te
Finasteride Sample
how long does it take for gabape
Buy Olanzapine
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.