Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.04.2012, 22:12   #1
Cooltik
 
Регистрация: 26.04.2012
Сообщений: 5
По умолчанию Задача в Turbo Pascal

Ребят может уже где и была такого рода задача, но не могли бы вы написать мне задачу:

Дан текст из строчных латинских букв за которыми следует точка.Напечатать все буквы входящие в текст по одному разу.
(Получается когда я написал предложение и поставил точку, то он должен вывести буквы которые встречаются только один раз).
Буду очень признателен, спасибо.
Cooltik вне форума Ответить с цитированием
Старый 26.04.2012, 22:17   #2
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Код:
var
   s : string;
   i : Char;
   j : Integer;
   a : array ['a'..'z'] of Integer;

begin
     ReadLn(s);
     for i := 'a' to 'z' do
         a[i] := 0;

     for j := 1 to Length(s) do
         Inc (a[s[j]]);

     for i := 'a' to 'z' do
         if a[i] = 1 then
            WriteLn (i);

end.
Poma][a вне форума Ответить с цитированием
Старый 26.04.2012, 22:42   #3
Cooltik
 
Регистрация: 26.04.2012
Сообщений: 5
По умолчанию

Цитата:
Сообщение от Poma][a Посмотреть сообщение
Код:
var
   s : string;
   i : Char;
   j : Integer;
   a : array ['a'..'z'] of Integer;

begin
     ReadLn(s);
     for i := 'a' to 'z' do
         a[i] := 0;

     for j := 1 to Length(s) do
         Inc (a[s[j]]);

     for i := 'a' to 'z' do
         if a[i] = 1 then
            WriteLn (i);

end.
Спасибо большое но мне выдает ошибку когда я пишу предложение с пробелами и без пробелов по англ. и русс., ставлю точку и нажимаю ентер пишет ошибку
Ошибка 201: ошибка проверки диапозона
Cooltik вне форума Ответить с цитированием
Старый 26.04.2012, 23:21   #4
temaps
Форумчанин
 
Регистрация: 15.05.2011
Сообщений: 160
По умолчанию

Скорее всего просто в тексте есть пробелы и точка. Предложенный код это не учитывает и, полагаю, предлагается доработать это самостоятельно.
temaps вне форума Ответить с цитированием
Старый 26.04.2012, 23:35   #5
Cooltik
 
Регистрация: 26.04.2012
Сообщений: 5
По умолчанию

Цитата:
Сообщение от temaps Посмотреть сообщение
Скорее всего просто в тексте есть пробелы и точка. Предложенный код это не учитывает и, полагаю, предлагается доработать это самостоятельно.
Спасибо я теперь понял, но я не бом бом как это сделать...
Cooltik вне форума Ответить с цитированием
Старый 27.04.2012, 10:41   #6
Cooltik
 
Регистрация: 26.04.2012
Сообщений: 5
По умолчанию

Ребят возможно я наглею, но могли бы вы написать код для задачи которую я написал?
Cooltik вне форума Ответить с цитированием
Старый 27.04.2012, 14:51   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ну нельзя же быть таким беспомощным!!

ладно. вот так попробуйте (в решение я добавил только ОДНУ проверку - остальные изменения - чистая "косметика" )

Код:
var
   s : string;
   i : Char;
   j : Integer;
   a : array ['a'..'z'] of Integer;

begin
     ReadLn(s);
     for i := 'a' to 'z' do
         a[i] := 0;

     for j := 1 to Length(s) do
        if (s[j]>='a') and (s[j]<='z') then
           Inc (a[s[j]]);

     WriteLn;
     Write('small latin symbols which occure once only: ');
     for i := 'a' to 'z' do
         if a[i] = 1 then
            Write(i,' ');
     WriteLn;

end.

Poma][a, кстати, а осутствие проверки в данном случае - это ваш "прокол". Ведь те символы, которые приводят ваш код к краху допустимы согласно условию задачи. Неаккуратно код пишете...

Последний раз редактировалось Serge_Bliznykov; 27.04.2012 в 14:53.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 27.04.2012, 19:29   #8
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Уважаемый! прошу учесть что программы я пишу не для себя и\ или по заказу, надо же господам студентам что-то поделать?
и развилочка не красивая... я бы так сделал
Код:
if s[j] in ['a'..'z'] then
и булеву алгебру использовать не надо
Poma][a вне форума Ответить с цитированием
Старый 28.04.2012, 00:29   #9
Cooltik
 
Регистрация: 26.04.2012
Сообщений: 5
По умолчанию

ВСЕМ СПАСИБО БОЛЬШОЕ!!!!!
Cooltik вне форума Ответить с цитированием
Старый 28.04.2012, 07:19   #10
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Цитата:
Сообщение от Poma][a Посмотреть сообщение
Уважаемый! прошу учесть
Ох, Ромаха.. горазд ты оправдываться )). Сделал ошибку - признал и пошел! фикли тут про господ студентов и булеву алгебру рассуждать..

Решение нормальное, конечно, но я, как обычно, не могу не встрять со своим вариантом )).
Код:
var
  s: string;
  c: char;
begin
  s:= 'twas brillig, and the slithy toves did gyre and gymble in the wabe.';
  for c:='a' to 'z' do
    if (Pos(c,s)>0) and (Pos(c,Copy(s,Pos(c,s)+1,255)=0) then write(c,' ')
end.
Да, я знаю, что он будет работать дольше )). Просто немного другой подход.
Предпочитаю на "ты".
TinMan вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача на Turbo Pascal spezzA Фриланс 3 06.04.2011 23:13
Turbo Pascal. Задача. Dionix Общие вопросы Delphi 11 06.07.2010 17:08
Turbo Pascal (задача) pergeot Помощь студентам 4 13.01.2010 07:25
Задача на Turbo Pascal W_P Помощь студентам 1 14.02.2008 18:24