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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.05.2012, 17:55   #1
kazbek1
Новичок
Джуниор
 
Регистрация: 16.05.2012
Сообщений: 8
Смущение строка

в заданный непустой текст входять только буквы и цивры.Определить,удовлетворяет ли он следующему свойству:текст является записью десятичного числа,кратного 6
kazbek1 вне форума Ответить с цитированием
Старый 16.05.2012, 22:01   #2
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Задача решается в 2 действия:
1. Пытаемся преобразовать строку в число.
2. Если удалось, проверяем остаток от деления на 6.
s-andriano вне форума Ответить с цитированием
Старый 17.05.2012, 00:01   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от s-andriano Посмотреть сообщение
Задача решается в 2 действия:
1. Пытаемся преобразовать строку в число.
2. Если удалось, проверяем остаток от деления на 6.
Можно и так.

А в данном случае можно обойтись и без преобразования строки в число!
Хитрый преподаватель может написать 20значное число
А в строке мы можем оперировать с числами значностью 255 десятичных знаков!

пользуясь признаками делимости числа на 3 и на 2,
я бы предложил такой вариант:
Код:
var s : string;
  i, sum, OneDigit : integer;
begin
 WriteLn('ВВедите исходную строку:');
 Readln(s); 
 if Length(s)=0 then WriteLn('Ошибка: пустая строка не является записью десятичного числа, делящегося на 6')
 else begin
    sum := 0;
    for i:=1 to Length(s) do
      if s[i] in ['0'..'9'] then begin
           OneDigit := ord(s[i])-ord('0');
           Sum := Sum + OneDigit;
      end 
      else begin
        WriteLn('Ошибка: строка не является записью десятичного числа');
         Halt(100);
      end;
      if (Sum mod 3 = 0) and (OneDigit mod 2 = 0) then
          WriteLn('ДА! Строка является записью десятичного числа, кратного 6')
      else
          WriteLn('Нет! Строка является записью десятичного числа НЕ кратного 6');
 end;
p.s. писал на форуме, возможны опечатки..
но идея, думаю, понятна...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 17.05.2012, 08:02   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
OneDigit := ord(s[i])-ord('0');
Да, я тоже самое бы сделал...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.05.2012, 09:21   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

тут у меня попутно вопрос возник..
Если кто-то из форумчан помнит основы начальной школы (математику), то прошу напомнить,
число ноль считается кратным всем натуральным числам или нет?

в частности, в данной задаче:
Ноль кратно шести?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 17.05.2012, 18:51   #6
kazbek1
Новичок
Джуниор
 
Регистрация: 16.05.2012
Сообщений: 8
По умолчанию

spasibo)))))
kazbek1 вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
строка Katrina* Помощь студентам 4 21.12.2011 00:33
Строка Евочка=) Помощь студентам 4 03.03.2011 13:08
строка Bek-Z Помощь студентам 1 12.12.2010 20:09
строка Артэс Общие вопросы C/C++ 4 04.02.2009 21:56
Строка состаяния или загрузачная строка Sergeu Мультимедиа в Delphi 8 27.08.2008 10:32