• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Паскаль. Помогите.

SvarovskI

Ученик
Регистрация
17 Июн 2009
Сообщения
2
Реакции
0
Баллы
0
Паскаль. Помогите.

помогите плиз с паскале,задача на строки:

1)Как задать количество символов в строковой переменной?

2)Напишите программу шифрования текстового сообщения. Можно использовать следующий способ шифрования: шифровальщик задает ключ=3, тогда в тексте буква «а» заменяется на «г» и т. д. Используются все буквы русского алфавита. Е считается дважды.


заранее очень благодарен!!! =)
 
помогите плиз с паскале,задача на строки:

1)Как задать количество символов в строковой переменной?

2)Напишите программу шифрования текстового сообщения. Можно использовать следующий способ шифрования: шифровальщик задает ключ=3, тогда в тексте буква «а» заменяется на «г» и т. д. Используются все буквы русского алфавита. Е считается дважды.

заранее очень благодарен!!! =)

1) Просто указать в явном виде при задании переменной, например
VAR
S1:STRING[5];
S2:STRING[18];
и т.п. Если не ошибаюсь, допустимо до 255 символов.

2) Вот нарисовал:

I) Шифратор (кодировка DOS; файлы расположены на диске D: , исходный текст в файле D:\d1. Исправьте, как Вам надо):

CONST
Shift=3;
VAR
Ch:CHAR;
N:BYTE;
f,f1:TEXT;
BEGIN
Assign(f,'D:\d1');
ReSet(f);
Assign(f1,'D:\d2');
ReWrite(f1);
REPEAT
Read(f,Ch);
IF (ORD(Ch)>127) AND (ORD(Ch)<160-Shift) THEN
Write(f1, CHR(ORD(Ch)+Shift)) ELSE
IF (ORD(Ch)>159-Shift) AND (ORD(Ch)<160) THEN
Write(f1, CHR(ORD(Ch)-32+Shift)) ELSE
IF (ORD(Ch)>159) AND (ORD(Ch)<176-Shift) THEN
Write(f1, CHR(ORD(Ch)+Shift)) ELSE
IF (ORD(Ch)>175-Shift) AND (ORD(Ch)<176) THEN
Write(f1, CHR(ORD(Ch)+48+Shift)) ELSE
IF (ORD(Ch)>223) AND (ORD(Ch)<240-Shift) THEN
Write(f1, CHR(ORD(Ch)+Shift)) ELSE
IF (ORD(Ch)>239-Shift) AND (ORD(Ch)<240) THEN
Write(f1, CHR(ORD(Ch)-80+Shift)) ELSE
Write(f1,Ch);
UNTIL EoF(f);
Close(f);
Close(f1);
END.

II) Дешифратор:

CONST
Shift=3;
VAR
Ch:CHAR;
N:BYTE;
f,f1:TEXT;
BEGIN
Assign(f,'D:\d2');
ReSet(f);
Assign(f1,'D:\d3');
ReWrite(f1);
REPEAT
Read(f,Ch);
IF (ORD(Ch)>127+Shift) AND (ORD(Ch)<160) THEN
Write(f1, CHR(ORD(Ch)-Shift)) ELSE
IF (ORD(Ch)>127) AND (ORD(Ch)<128+Shift) THEN
Write(f1, CHR(ORD(Ch)+32-Shift)) ELSE
IF (ORD(Ch)>159+Shift) AND (ORD(Ch)<176) THEN
Write(f1, CHR(ORD(Ch)-Shift)) ELSE
IF (ORD(Ch)>159) AND (ORD(Ch)<160+Shift) THEN
Write(f1, CHR(ORD(Ch)+80-Shift)) ELSE
IF (ORD(Ch)>223) AND (ORD(Ch)<224+Shift) THEN
Write(f1, CHR(ORD(Ch)-48-Shift)) ELSE
IF (ORD(Ch)>223+Shift) AND (ORD(Ch)<240) THEN
Write(f1, CHR(ORD(Ch)-Shift)) ELSE
Write(f1,Ch);
UNTIL EoF(f);
Close(f);
Close(f1);
END.

Но если такой вариант не годится, и подразумевается через массивы с тупым перечислением литер (вообще-то вроде так, если судить по "е дважды") - напишите.
 
Я вот не пойму почему в обоих программах ты сначало пишешь ReSet, а потом ReWrite,вроде бы должно быть наоборот,он как раз и выдает ошибку на этом месте в программах..
И вроде бы эти команды на файлы,а не на строки...
 
Я вот не пойму почему в обоих программах ты сначало пишешь ReSet, а потом ReWrite,вроде бы должно быть наоборот,он как раз и выдает ошибку на этом месте в программах..
И вроде бы эти команды на файлы,а не на строки...

Так. По пунктам.
1. Конечно "на файлы"! Разберем подробно. Задача: считать содержимое ИМЕЮЩЕГОСЯ на диске файла, затем СОЗДАТЬ НОВЫЙ ФАЙЛ, и в этот новый файл записать некую информацию. В Паскале это решается так:
а) В перечне VAR объявляются две файловые переменные - у меня f и f1.
б) Командой Assign каждая из них связывается с реальным (существующим или создаваемым) файлом на диске компьютера.
в) Если требуется ЧИТАТЬ содержимое файла, то используется команда ReSet(f). Эта команда осуществляет две операции - открывает файл на диске для чтения и устанавливает маркер в самое начало файла. Если требуется произвести ЗАПИСЬ в файл на диске, то используется команда ReWrite(f1). Работает так: если файл существует, то полностью стирается его содержимое, если нет - то файл создается, после чего маркер устанавливается в начало файла, т.е. файл готов к записи.
2. Насчет ошибок. Обе программы оттестированы, никаких ошибок в них нет. А у Вас ошибка возникает вот почему. Программа 1 предполагает, что исходный текст расположен на диске D: в файле по имени d1. На Вашем компьютере имя и расположение может быть другим. Поэтому чтобы эта программа работала, нужно:
а) Заранее создать файл с текстом, который будет кодироваться.
б) Прописать в команде Assign(f, ...) путь к этому файлу и его имя.
в) Аналогично в команде Assign(f1, ...) прописать путь и имя кодированного файла. Создавать его не нужно - сам создастся.
В программе 2 так же, за исключением того, что файл создавать не нужно, она работает с тем, который создала программа 1, а вот пути прописать необходимо.
Вероятно Вы не создали файл, не прописали пути. Отсюда и ошибки.
 
пасибо,все работает,на будущее буду знать как делать,но мне нужно написать программу на строки,а не на файлы...
 
Что-й то я малость заплутал... SvarovskI и DjDeniels-61 это что - одно лицо? Заказ-то делал SvarovskI, а приемку осуществляет DjDeniels-61. ЧуднО.
А что значит "на строки"? Способ ввода сообщения с консоли? Поясните, пожалуйста.
 
Решить задачу спомошью строк,а не файлов,вот в чем проблема...
А DjDeniels-61 это он же SvarovskI...
 
Решить задачу спомошью строк,а не файлов,вот в чем проблема...
А DjDeniels-61 это он же SvarovskI...

Тогда напишите толком, как вводится сообщение, подлежащее кодированию, и как выводится результат. Потому что "спомошью строк" - это я, извините, не понимаю.
 
я к вам и обратился,потому что сам не знаю...а сдавать то надо как то...
 
я к вам и обратился,потому что сам не знаю...а сдавать то надо как то...

Ну а я откуда могу знать, что имел в виду Ваш преподаватель? Всё-таки, согласитесь, Вам виднее.
 
Назад
Сверху