Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Закрытая тема
 
Опции темы Опции просмотра
Старый 06.09.2011, 10:47   #1 (permalink)
Skazzi
Member
 
Регистрация: 24.08.2011
Сообщений: 15
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Помощь по 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.
Skazzi вне форума  

Старый 06.09.2011, 10:47
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Не стоит откладывать прочтение схожих тем

Требуется помощь в написании программы на языке Turbo Pascal
Pascal, две задачки, нужна помощь
Pascal

Старый 06.09.2011, 15:09   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Skazzi Посмотреть сообщение
Будьте добры, помогите пожалуйста с задачей! Я в отчаянии.
А вот отчаиваться никогда не нужно! Поможем.
Теперь по программе. Тут полно ляпов как с моей, так и с Вашей стороны. Не, ну это же надо быть таким придурком (это я о себе), чтобы все буковки перечислять, вместо того, чтобы задать сумму диапазонов! Правда, в своей практической программистской деятельности я множествами не пользуюсь, потому этот тип знаю плохо. Но всё равно - стыдно!
Теперь Ваш "вклад". Прежде всего, не нужно давать программе название, совпадающее с именем идентификатора либо с названием типа, в данном случае - "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.
Vladimir_S вне форума  
Старый 06.09.2011, 15:50   #3 (permalink)
Skazzi
Member
 
Регистрация: 24.08.2011
Сообщений: 15
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

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

Владимир, Вы меня снова очень выручили! Спасибо большое-большое!!!)))
Skazzi вне форума  
Старый 06.09.2011, 16:01   #4 (permalink)
Skazzi
Member
 
Регистрация: 24.08.2011
Сообщений: 15
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

К слову - Владимир, какой язык является по Вашему мнению более перспективным направлением? си шарп, ява, дельфи (паскаль)?
Skazzi вне форума  
Старый 06.09.2011, 16:05   #5 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

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

Владимир, Вы меня снова очень выручили! Спасибо большое-большое!!!)))
Да не за что... Чем можем.
Vladimir_S вне форума  
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 06.09.2011, 22:37   #6 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Skazzi Посмотреть сообщение
К слову - Владимир, какой язык является по Вашему мнению более перспективным направлением? си шарп, ява, дельфи (паскаль)?
Это, к сожалению, не ко мне. Могу только высказать мнение, что ветка Delphi-Pascal - умирающая. Особенно чистый Паскаль. Сколь это ни прискорбно.
Vladimir_S вне форума  
Старый 08.09.2011, 09:05   #7 (permalink)
Skazzi
Member
 
Регистрация: 24.08.2011
Сообщений: 15
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Я снова, к сожалению, с вопросом. Задача очень похожа - Дан текст. Если в нём нет малых латинских букв , то оставить его без изменения ,иначе каждую такую букву заменить точкой.

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
Skazzi вне форума  
Старый 08.09.2011, 09:31   #8 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Skazzi Посмотреть сообщение
Сейчас почему-то при запуске программы удаляются любые символы из 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.
Vladimir_S вне форума  
Старый 08.09.2011, 10:15   #9 (permalink)
Skazzi
Member
 
Регистрация: 24.08.2011
Сообщений: 15
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

А в мануале написано, что reWrite просто открывает файл на запись. Очень благодарю! Профессиональных вам успехов на подходе задачка по работе со стеком - усиленно читаю учебник.
Skazzi вне форума  
Старый 08.09.2011, 15:55   #10 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Skazzi Посмотреть сообщение
на подходе задачка по работе со стеком - усиленно читаю учебник.
И советую еще усилить внимание, потому что сразу предупреждаю - в динамических структурах не силен (ну еще с массивом поработать - туда-сюда), а уж в стеках, списках и т.п. - извините, но ни бум-бум. Просто ни разу в жизни мне эти структуры не надобились, вот и не разбирался с ними.
Vladimir_S вне форума  
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Закрытая тема


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 11:36.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.