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

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

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

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

Помощь по Pascal

  • Автор темы Автор темы Skazzi
  • Дата начала Дата начала
Статус
В этой теме нельзя размещать новые ответы.

Skazzi

Новые
Регистрация
24 Авг 2011
Сообщения
15
Реакции
0
Баллы
0
Помощь по Pascal

Уважаемые профи,

Будьте добры, помогите пожалуйста с задачей! Я в отчаянии.

Задание - дан текст; определить,содержит ли он символы, отличные от букв и пробела.

Использовала решение от Vladimir_S с этого форума по сходному заданию. Поменяла переменные и тп - программа даже компилиться не хочет...

Заранее прошу прощения если пропадет форматирование, форум позволяет применять настройки личного кабинета только после 15ти сообщений.

program Text;

uses Crt;

const
Lit= ['А','Б','В','Г','Д','Е','Ё','Ж','З','И',
'Й','К','Л','М','Н','О','П','Р','С','Т',
'У','Ф','Х','Ц','Ч','Ш','Щ','Ъ','Ы','Ь',
'Э','Ю','Я',
'а','б','в','г','д','е','ё','ж','з','и',
'й','к','л','м','н','о','п','р','с','т',
'у','ф','х','ц','ч','ш','щ','ъ','ы','ь',
'э','ю','я',
'A','B','C','D','E','F','G','H','I','J',
'K','L','M','N','O','P','Q','R','S','T',
'U','V','W','X','Y','Z',
'a','b','c','d','e','f','g','h','i','j',
'k','l','m','n','o','p','q','r','s','t',
'u','v','w','x','y','z',' '];
var
f: Text;
ch: Char;
fl1: Boolean;
n: Byte;


begin
assign(f,'C:\input.txt');
reSet(f);

n:=0;

repeat
begin
repeat
begin
read(f,Ch);
end;
end;
until ch in Lit;

repeat
begin
read(f,ch);

if Ch in Lit then
begin
fl1:=true;
end
else
begin
fl1:=false;
end;

end;
until NOT (ch in Lit);

if fl1 then
begin
Inc(n);
fl1:=false;
end;
until EoF(f);

close(f);

writeln('The number symlols which ane not letters of spaces is ',n);
readln();
end.
 
Будьте добры, помогите пожалуйста с задачей! Я в отчаянии.
А вот отчаиваться никогда не нужно! Поможем. :D
Теперь по программе. Тут полно ляпов как с моей, так и с Вашей стороны. Не, ну это же надо быть таким придурком (это я о себе), чтобы все буковки перечислять, вместо того, чтобы задать сумму диапазонов! Правда, в своей практической программистской деятельности я множествами не пользуюсь, потому этот тип знаю плохо. Но всё равно - стыдно!
Теперь Ваш "вклад". Прежде всего, не нужно давать программе название, совпадающее с именем идентификатора либо с названием типа, в данном случае - "Text". Это приводит к ошибке. Вообще именование программ - это анахронизм, современные версии Паскаля этого не требуют. Есть имя файла, можно в начале написать любой комментарий, а с этим Program ... только проблемы!
Потом - зачем Вы присоединяете модуль CRT? В программе же нет ни одной его команды - значит и ни к чему он.
А уж что Вы там с циклами накрутили - Боже ж ты мой и мама рОдная в придачу! Даже разбираться не стал - на самом деле задачка решается почти в одну строчку. Пожалуйста:
Код:
const
 Lit= ['А'..'Я']+['а'..'я']+['A'..'Z']+['a'..'z']+[' '];
var
 f: Text;
 ch: Char;
 n: Byte;


begin
 assign(f,'C:\input.txt');
 reSet(f);

 n:=0;

 Repeat
  read(f,Ch);
  if not(Ch in Lit) then Inc(n);
 until EoF(f);

 Close(f);

 writeln('The number of symbols which are not letters or spaces is ',n);

 readln;

end.
 
А я думала, Паскаль не понимает диапазоны русских букв...:tehnari_ru_102:

Владимир, Вы меня снова очень выручили! Спасибо большое-большое!!!)))
 
К слову - Владимир, какой язык является по Вашему мнению более перспективным направлением? си шарп, ява, дельфи (паскаль)?
 
А я думала, Паскаль не понимает диапазоны русских букв...:tehnari_ru_102:

Владимир, Вы меня снова очень выручили! Спасибо большое-большое!!!)))
Да не за что... Чем можем.
 
К слову - Владимир, какой язык является по Вашему мнению более перспективным направлением? си шарп, ява, дельфи (паскаль)?
Это, к сожалению, не ко мне. Могу только высказать мнение, что ветка Delphi-Pascal - умирающая. Особенно чистый Паскаль. Сколь это ни прискорбно.
 
Я снова, к сожалению, с вопросом. Задача очень похожа - Дан текст. Если в нём нет малых латинских букв , то оставить его без изменения ,иначе каждую такую букву заменить точкой.

const
Vow= ['a'..'z'];

var
f: Text;
ch: Char;
n: Byte;

begin
assign(f,'C:\input.txt');
reSet(f);

n:=0;

Repeat
read(f,Ch);
if (Ch in Vow) then Ch:='.';
reWrite(f);
until EoF(f);

Close(f);

writeln('The number of changed symbols is ', Ch);

readln;

end.

Сейчас почему-то при запуске программы удаляются любые символы из input.txt
 
Сейчас почему-то при запуске программы удаляются любые символы из input.txt
... что вполне естественно, раз Вы воткнули в цикл оператор ReWrite(f), означающий полный сброс содержимого файла f, если он есть, и создание пустого файла, если его нет. На самом деле тут нужно работать с двумя файлами - входным и выходным. Вот так:
const
Код:
Vow= ['a'..'z'];

var
 f,f1: Text;
 ch: Char;
 n: Byte;

begin
 assign(f,'C:\input.txt');
 reSet(f);
 assign(f1,'C:\output.txt');
 reWrite(f1);

 n:=0;

 Repeat
  read(f,Ch);
  if (Ch in Vow) then
   begin
    write(f1,'.');
    Inc(n);
   end
  else write(f1,Ch);
 Until EoF(f);

 Close(f);
 Close(f1);
 writeln('The number of changed symbols is ', n);

 readln;

end.
 
А в мануале написано, что reWrite просто открывает файл на запись. Очень благодарю! :) Профессиональных вам успехов :) на подходе задачка по работе со стеком - усиленно читаю учебник.
 
на подходе задачка по работе со стеком - усиленно читаю учебник.
И советую еще усилить внимание, потому что сразу предупреждаю - в динамических структурах не силен (ну еще с массивом поработать - туда-сюда), а уж в стеках, списках и т.п. - извините, но ни бум-бум. Просто ни разу в жизни мне эти структуры не надобились, вот и не разбирался с ними.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху