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

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

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

> Работа с текстом..., помогите с алгоритмом..
Роман
сообщение 13.03.2011 12:13
Сообщение #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

Сообщение отредактировано: Роман - 13.03.2011 12:14
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
techno
сообщение 21.05.2011 5:52
Сообщение #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 - 21.05.2011 6:57
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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


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

 



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