![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
natka |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 39 Пол: Женский Репутация: ![]() ![]() ![]() |
Есть такая задачка:
Создать типизированный файл , компоненты отдельные слова. Отредактировать файл - если слово начинается с буква "к", заменить ее на букву "К". я тут что - то написала, но замены не происходит, может кто-нибудь найдет ошибку.
const n=20;
var
F,F1:file of char;
i:integer;
c:char;
BEGIN
assign(F,'C:/z25.dat');rewrite(F);
for i:=1 to n do
begin
read(c); write(F,c);
end;
close(F); reset(F);
assign(F1,'C:/z25_1.dat');rewrite(F1);
for i:=1 to n-1 do
begin
read(F,c);
if c='' then begin seek(F,i+1); write(F,c);
if c='k' then c:='K'; end;
write(F1,c); seek(F,i);
end;
close(F1); reset(F1);
for i:=1 to n do
begin
read(F1,c); write ( c ) ;
end;
END.
теги CODE - не html а bb коды, они пишутся в квадратных скобках. Altair Сообщение отредактировано: volvo - 8.11.2006 13:06 |
![]() ![]() |
Ozzя |
![]()
Сообщение
#2
|
![]() Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 220 Пол: Мужской Репутация: ![]() ![]() ![]() |
Цитата Создать типизированный файл , компоненты отдельные слова. У тебя компоненты не отдельные слова, а отдельные символы. |
natka |
![]()
Сообщение
#3
|
Новичок ![]() Группа: Пользователи Сообщений: 39 Пол: Женский Репутация: ![]() ![]() ![]() |
Если будут слова, то как проверить какая первая буква слова?
|
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
type
T = string[10]; { можно - больше }
var
f: file of T;
s: T;
...
read(f, s);
if s[1] = 'к' then ...
...
|
natka |
![]()
Сообщение
#5
|
Новичок ![]() Группа: Пользователи Сообщений: 39 Пол: Женский Репутация: ![]() ![]() ![]() |
const n=5;
var
F,F1:file of string[20];
i:integer;
c:string[20];
BEGIN
assign(F,'C:/z25.dat');rewrite(F);
for i:=1 to n do
begin
read(c); write(F,c);
end;
close(F); reset(F);
assign(F1,'C:/z25_1.dat');rewrite(F1);
for i:=1 to n-1 do
begin
read(F,c);
if c[1]'k' then
if c='k' then c:='K';
write(F1,c);
end;
close(F1); reset(F1);
for i:=1 to n do
begin
read(F1,c); write(c);
end;
END.
Только так я совсем запуталась, дайте идею. Вдогонку: как сделать так чтобы ввод в файл прекращался по нажатию клавиши Enter, какой у нее код? Я в принципе так и сделала - переделала свое - там ошибки, только до проверки не доходит, на этапе чтения данных из файла выдается - Типовая ошибка. Я исправила: Код const n=5; var F,F1:file of string[20]; i:integer; c:string[20]; BEGIN assign(F,'C:/z25.dat');rewrite(F); for i:=1 to n do begin read(c); write(F,c); end; close(F);reset(F); assign(F1,'C:/z25_1.dat');rewrite(F1); for i:=1 to n-1 do begin read(F,c); if c='k' then c:='K'; end; write(F1,c); end; end. только все равно не работает, на этапе чтения из файла выдается ошибка - Типовая ошибка. |
volvo |
![]()
Сообщение
#6
|
Гость ![]() |
natka, смотри, есть несколько недочетов в программе:
1) ты привязалась к конкретному числу компонентов. Для файла это не совсем верно - с файлом надо работать, пока он не закончился. 2) Цитата на этапе чтения данных из файла выдается - Типовая ошибка. - потому что тип string[20]var
F, F1: file of string[20]; { <-- Здесь... }
i: integer;
c: string[20]; { <-- ... и здесь }
для компилятора не имеет ничего общего!!! Я не зря выделил это в отдельное описание типа, это очень распространенная ошибка, и избежать ее можно ЛИБО используя встроенный тип string (без объявления длинны), ЛИБО определяя свой тип, и работая только с ним...Вот рабочий вариант программы (только исправь пути к файлам...) type
T = string[20];
var
f, f1: file of T;
s: T;
BEGIN
assign(F,'z25.dat'); rewrite(F);
repeat
readln(s);
if s <> '' then write(F, s);
until s = '';
reset(F);
assign(F1,'z25_1.dat'); rewrite(F1);
while not eof(f) do begin
read(F, s);
if s[1] = 'k' then s[1] := 'K';
write(F1, s);
end;
reset(F1);
while not eof(f1) do begin
read(F1, s); write(s, ' ');
end;
close(f); close(f1);
END.
|
natka |
![]()
Сообщение
#7
|
Новичок ![]() Группа: Пользователи Сообщений: 39 Пол: Женский Репутация: ![]() ![]() ![]() |
Спасибо, все работает.
|
![]() ![]() |
![]() |
Текстовая версия | 28.07.2025 3:28 |