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

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

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

 
 Ответить  Открыть новую тему 
> типизированные файлы, замена буквы на заглавную
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 39
Пол: Женский

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


Есть такая задачка:
Создать типизированный файл , компоненты отдельные слова.
Отредактировать файл - если слово начинается с буква "к", заменить ее на букву "К".
я тут что - то написала, но замены не происходит, может кто-нибудь найдет ошибку.

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©; 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 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гуру
*****

Группа: Пользователи
Сообщений: 1 220
Пол: Мужской

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


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

У тебя компоненты не отдельные слова, а отдельные символы.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 39
Пол: Женский

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


Если будут слова, то как проверить какая первая буква слова?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






type
T = string[10]; { можно - больше }

var
f: file of T;
s: T;
...
read(f, s);
if s[1] = 'к' then ...
...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 39
Пол: Женский

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



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©; 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©;
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.

только все равно не работает, на этапе чтения из файла выдается ошибка - Типовая ошибка.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Новичок
*

Группа: Пользователи
Сообщений: 39
Пол: Женский

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


Спасибо, все работает.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





- Текстовая версия 14.05.2024 2:29
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name