IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Файлы...
Alla
сообщение 23.01.2006 16:24
Сообщение #1


Гость






- дано имя файла и целые положительные числа 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.
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 8)
Altair
сообщение 24.01.2006 1:57
Сообщение #2


Ищущий истину
******

Группа: Модераторы
Сообщений: 4 824
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


Цитата
- дана строка 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.

Цитата

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

то же самое, создай временный файл, и его сформируй. А потом перекинь все в старый.


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Alla
сообщение 24.01.2006 8:21
Сообщение #3


Гость






Cпасибо тебе Альтаирчик wub.gif
 К началу страницы 
+ Ответить 
Гость
сообщение 24.01.2006 16:02
Сообщение #4


Гость






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

Вопрос возникает по второму пункту, как посчитать строки и тем самым указать какую удалить???
 К началу страницы 
+ Ответить 
Altair
сообщение 24.01.2006 16:11
Сообщение #5


Ищущий истину
******

Группа: Модераторы
Сообщений: 4 824
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


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

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


смысл понятен ?


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Гость
сообщение 24.01.2006 16:14
Сообщение #6


Гость






Все OK, поняла. Еще раз БИГ сэнкс smile.gif
 К началу страницы 
+ Ответить 
Alla
сообщение 24.01.2006 17:14
Сообщение #7


Гость






Вроде все правильно написала, а строка удаляться никак не хочет ...
Код

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
сообщение 24.01.2006 17:23
Сообщение #8


Гость






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.
 К началу страницы 
+ Ответить 
Гость
сообщение 24.01.2006 17:29
Сообщение #9


Гость






То есть моя ошибка: преборщила с циклом, не надо было там писать rewrite... Поняла, спасибо .
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 18.07.2025 17:02
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"