12.11.2010, 17:45 | #1 (permalink) | |
Member
Регистрация: 28.03.2010
Сообщений: 477
Записей в дневнике: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 1837
|
Решите, пожалуйста, задачу на Паскале
Цитата:
|
|
12.11.2010, 17:45 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Вот ссылки на темы, которые скорее всего помогут вам в решении проблемы Помогите решить задачу в Паскале Помогите решить задачу на Паскале |
12.11.2010, 22:13 | #2 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Ну что же, Ира, попробуй разобраться. Вот решение (один из возможных вариантов):
Код:
VAR F_in,F_out:TEXT; p:BYTE; C:Char; BEGIN Assign(F_in, 'D:\t1.txt'); ReSet(F_in); Assign(F_out, 'D:\t2.txt'); ReWrite(F_out); p:=0; Read(F_in,C); If (Ord(C)>64) and (Ord(C)<91) then Write(F_out,Chr(Ord(C)+32)) else Write(F_out,Chr(Ord(C)-32)); Repeat Read(F_in, C); If C='_' then p:=1; If p=0 then begin If (Ord(C)>64) and (Ord(C)<91) then begin Write(F_out,'_',Chr(Ord(C)+32)); end else Write(F_out,C); end; If (p=1) and (C<>'_') then begin Write(F_out,Chr(Ord(C)-32)); p:=0; end; Until EoF(F_in); Close(F_in); Close(F_out); END. Если в файл t1.txt записать строку long_ago_there_were_three_pigs то в файле t2.txt появится строка LongAgoThereWereThreePigs и наоборот. Тип записи определяется автоматически. Удачи! Если что непонятно, спрашивай, разберемся. |
13.11.2010, 15:51 | #3 (permalink) | |
Member
Регистрация: 28.03.2010
Сообщений: 477
Записей в дневнике: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 1837
|
Владимир, большое спасибо. Поняла только небольшую часть кода((
Не знаю этих типов переменных. Цитата:
|
|
13.11.2010, 16:18 | #4 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
О типах: 1. Byte - целые неотрицательные числа в диапазоне 0..255. 2. Char - литерный тип. Переменной или константой типа Char может быть любой символ - буква, цифра, знак препинания, пробел и т.п. По программе. Работает она так: Открываются два файла - входной и выходной, один - на чтение, другой, соответственно, на запись. Первый должен быть "изготовлен" заранее, т.е. в него должна быть вписана строка, подлежащая преобразованию. Далее происходит последовательное ПОСИМВОЛЬНОЕ считывание информации из файла 1 и ПОСИМВОЛЬНАЯ же запись в файл 2. При этом: 1. У первой буквы заменяется регистр. Т.е. если первой буквой в файле 1 была, например, "m", то в файл 2 отправляется "M" и наоборот. 2. Если в строке, читаемой из файла 1, встречается прописная буква (например, "R"), то в файл 2 записывается знак подчеркивания и прочитанная буква в обратном регистре, т.е., в данном случае, "_r". 3. Если встречается знак подчеркивания, то в выходной файл ничего не отправляется, но устанавливается "флажок" путем присвоения служебному параметру p значения p=1. Если p=1, то при считывании следующей за знаком подчеркивания буквы регистр меняется со строчного на прописной и в таком виде буква записывается в выходной файл, после чего "флажок" сбрасывается, т.е. параметру p вновь присваивается значение p=0. В итоге комбинация, например, "_s" заменяется на "S". 4. Во всех прочих случаях символы переправляются из файла в файл в неизменном виде. Ира, попробуй это всё "переварить". Потом, если возникнет с твоей стороны желание, я объясню, как всё это конкретно реализуется с помощью стандартных функций Ord и Chr. |
|
14.11.2010, 08:33 | #5 (permalink) |
support
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,797
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
|
Этими командами символы переводятся в коды и производится сдвиг по кодовой таблице вверх или вниз соответственно, в зависимости от типа записи. Затем соответственно возвращается символ.
Смотри ASCII — Википедия
__________________
Убить всех человеков! |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
14.11.2010, 08:48 | #6 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
|
|
14.11.2010, 13:04 | #8 (permalink) |
Member
Регистрация: 28.03.2010
Сообщений: 477
Записей в дневнике: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 1837
|
Так. С регистрами вроде все понятно: порядковый номер в двоичной системе счисления после 100 для прописных и после 110 для строчных... Таблицу поразглядывала, что она из себя представляет, примерно поняла... А насчет функций можно, если не затруднит, поподробней?
|
14.11.2010, 13:17 | #9 (permalink) |
support
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,797
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
|
ORD(C) преобразует символ в десятичное соответствие ASCII кода
CHR(P) преобразует десятичное соответствие ASCII кода в соответствующий символ
__________________
Убить всех человеков! |
14.11.2010, 13:34 | #10 (permalink) |
Member
Регистрация: 28.03.2010
Сообщений: 477
Записей в дневнике: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 1837
|
Кажется, до меня дошло... Берем букву F, например, переводим ее в код ASCII, потом смотрим на кодовую таблицу, отсчитываем вправо 32 знака (то есть -32), и получаем f. Правильно?
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|