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

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

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

> Работа с текстом..., помогите с алгоритмом..
сообщение
Сообщение #1


Новичок
*

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

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


Здравствуйте, нужна ваша помощь....
Вот текст задания:

Составить алгоритм и программу обработки фразы (строки текста), находящемся в текстовом файле Inputtxt.txt.
В результате работы программы в файле отчета необходимо в алфавитном порядке расположить буквы из которых состоит текст с их количеством.
Пример:
Содержание исходного файла Inputtxt.txt слово "МАМА"
В результате работы программы получен файл следующего вида:

Буква Количество
А 2
М 2
(служебная информация, не более 2 байт для каждого символа фразы)

В служебной информации должны быть закодированы (зашифрованы) данные о каждой букве фразы.
В дальнейшем, при запуске этой программы входным файлом должен стать файл отчета со служебной информацией. В результате работы должен быть получен текст исходной фразы в файле с именем Output.txt

Вот собственно начал писать программу:

Program labb;
uses crt;
var k,j,m,g,d,l:integer; I,O: text; s:char;
A: array [1..255] of integer;
begin
m:=0;
assign (I,'Input.txt');
reset(I);
while not Eof(I) do
begin
m:=m+1;
read(I, s);
A[m]:=ord(s);
writeln(A[m]);
end;
Close(I);
assign(O,'Output.txt');
l:=0;
for k:=1 to 255 do
begin
if (A[k]<>0) then
begin
append(O);
write(O,chr(A[k]),' - ',l);
writeln(O);
end;
end;
Close(O);
g:=0;
assign(O,'Output.txt');
append(O);
writeln(O,'***********************************');
for j:=1 to m do
begin
append(O);
g:=g+1;
A[g]:=256-A[g];
write(O,chr(A[g]));

end;
Close(O);
readkey;
end.
}


То есть я описал массив, записал аски коды символов в него, собственно возникла проблема с подсчетом количества символов(символы как русские так и англ.), зашифровал я методом Atbash, думаю расшифровать смогу при повторном запуске программы, метку в виде звёздочек поставил, а вот как ее потом определить пока не думалsmile.gif

Сообщение отредактировано: Роман -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2





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

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


Вот идеально выполненное задание.)))


Program lab1;
uses crt;
var
i,l:integer; {переменная i в используется в циклах, l – для хранения ASCII кода символа}
M,O,B: text; {текстовые переменные}
s:char; {символьная переменная, для чтения файла}
A: array [0..255] of byte; {массив используется в качестве счетчика}

begin
{$I-} {Директива компилятора, отключение проверки ошибок ввода-вывода}
assign(M,'Input.txt'); {Назначение файловым переменным имен внешних файлов}
assign(O,'log.txt');
assign(B,'Output.txt');
reset(M); {Открытие файла Input.txt для чтения}
if (IOResult<>0) then begin {Если файл Input.txt не существует}
writeln('Файл input.txt не существует!');
rewrite(M); {Создание пустого файла Input.txt}
writeln('Создан пустой файл input.txt, внесите в него текст для обработки');
writeln('Нажмите любую клавишу для выхода');
readkey; {Ожидание нажатия клавиши}
exit; {Выход из программы}
end;
reset(O); {Открытие файла log.txt для чтения}
{$I+} {Директива компилятора, включение проверки ошибок ввода-вывода}
if (IOResult=0) then begin {Если файл log.txt существует, то}
rewrite(B); {Создание файла output.txt}
Writeln('Создан файл, содержащий исходный текст Output.txt');
while not Eof(O) do begin {пока файл log.txt не кончиться….}
read(O,s); {Посимвольное чтение файла log.txt}
l:=ord(s); {перевод из символа в ASCII код}
if l=38 then begin
{Если встречается символ с кодом равным 38(&) – ключ, то все символы до него стираются}
rewrite(B);
continue; {прерывание цикла, сам ключ не будет записываться в файл Output.txt}
end;
l:=l+5; {Дешифровка}
write(B,chr(l)); {Запись исходного (дешифрованного) текста в файл Output.txt}
end;
close(O); {Закрытие файла log.txt}
close(B); {Закрытие файла output.txt}
end
else begin {Если файл log.txt не существует…}
writeln('Чтобы расшифровать текст запустите программу заново');
end;
while not Eof(M) do begin {Пока файл input.txt не закончится…}
read(M, s); {Посимвольное чтение файла input.txt}
i:=ord(s); {перевод из символа в ASCII код}
A[i]:=A[i]+1; {Подсчет количества символов}
if (i>=224) and (i<=255) then begin
i:=i-32; {Смещение ASCII кодов маленьких русских букв}
A[i]:=A[i]+1; {суммирование количества маленьких букв к большим}
end;
if (i=184) then begin
i:=i-16; {Смещение ASCII кода буквы ”ё”}
A[i]:=A[i]+1; {суммирование количества маленьких букв ”ё” к большим ”Ё”}
end;
if (i>=97) and (i<=122) then begin
i:=i-32; {Смещение ASCII кодов маленьких английских букв}
A[i]:=A[i]+1; {суммирование количества маленьких букв к большим}
end;
end;
Close(M); {Закрытие файла input.txt}
Rewrite(O); {Открытие log.txt на запись}
write(O,chr(209),chr(232),chr(236),chr(226),chr(238),chr(235)); {Текст: Символ}
writeln(O,' ',chr(202),chr(238),chr(235),'-',chr(226),chr(238)); {Текст: Кол-во}
for i:=192 to 223 do begin {Запись в файл log.txt количества русских букв}
if A[i]<>0 then
writeln(O,' ',chr(i),' - ',A[i]);
end;
if A[168]<>0 then begin {Запись в файл количества букв ”Ё”}
writeln(O,' ',chr(168),' - ',A[168]);
end;
for i:=65 to 90 do begin {Запись в файл количества английских букв}
if A[i]<>0 then
writeln(O,' ',chr(i),' - ',A[i]);
end;
writeln(O,'------------------------------------'); {Разделитель}
write(O,chr(38)); {Запись в файл log.txt ключа, чтобы отделить фразу от служебной информации}
reset(M); {Открытие файла input.txt на чтение}
while not Eof(M) do begin {Пока файл input.txt не кончится…}
read(M,s); {Посимвольное чтение файла input.txt}
l:=ord(s); {перевод из символа в ASCII код}
l:=l-5; {Смещение ASCII кодов на 5 влево (шифрование)}
write(O,chr(l)); {запись зашифрованного текста в файл log.txt}
end;
Close(M); {Закрытие файла input.txt}
Close(O); {Закрытие файла log.txt}
Writeln('Создан файл со служебной информацией log.txt');
Writeln('Нажмите любую клавишу чтобы выйти');
readkey; {Ожидание нажатия клавиши}
end.


P.S. это я Роман, просто пароль забыл)))
и простите что так долго, программу написал давным давно, но руки не доходили выложить...

Сообщение отредактировано: techno -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(techno @ 21.05.2011 6:52) *
Вот идеально выполненное задание.
Ха ). Ты зайди сюда через пару годиков, когда поднатореешь в программировании - улыбнешься своему абсолютизму.. )) До идеальности ему так же далеко, как Жигулям до Тоеты )). Меня особо улыбнуло
A[i]:=A[i]+1
, легко заменяемое на Inc(A[i]). Причем, есго нужно ставить только один раз (после перевода). Условие
and (i<=255)
тоже выглядит странно, если учесть, что номер символа просто не бывает больше 255 yes2.gif. Ну, я не буду проводить полный разбор.. smile.gif

Но в целом все же неплохо! А главное - молодец, что вернулся и запостил код smile.gif, +1.

Цитата
P.S. это я Роман, просто пароль забыл)))
Выслать на мыло? Пиши мне в личку.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Роман   Работа с текстом...   13.03.2011 16:13
volvo   Это невозможно. Хочешь пример? Пожалуйста: А-1 Г-…   13.03.2011 18:46
Роман   Вобщем уточнил: расположить надо не по алфавиту а …   15.03.2011 16:15
Lapp   Вобщем уточнил: расположить надо не по алфавиту а …   16.03.2011 9:09
Роман   все-таки хотелось бы чтобы программа расшифровывал…   16.03.2011 18:51
Lapp   Ага, ясно.. Я невнимательно читал просто. Восста…   16.03.2011 19:07
Роман   короче отказался я от идеи считывать "здездоч…   16.03.2011 20:09
Lapp   короче отказался я от идеи считывать "здездо…   16.03.2011 20:28
Unconnected   Посмотри тут.   16.03.2011 20:27
-Дмитрий-   Если не сложно выложите окончательный вариант кода   5.05.2011 20:35
techno   Вот идеально выполненное задание.))) Program lab…   21.05.2011 9:52
Lapp   Вот идеально выполненное задание.Ха ). Ты зайди с…   21.05.2011 10:25
-TarasBer-   > if (i>=224) and (i<=255) then begin …   21.05.2011 15:49
Роман   > if (i>=224) and (i<=255) then begin …   22.05.2011 12:14
Lapp   1) Диапазон аски кодов маленьких русских букв. 2) …   22.05.2011 14:11
Роман   Не знаю, понял ты или нет, но назвав свой код иде…   22.05.2011 15:30
Гость   > Тарас прекрасно знает коды всех букв (может, …   22.05.2011 14:38
Lapp   Почему никто не напишет просто 'а'..'я…   23.05.2011 14:21


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

 





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