|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Then begin. У другому варіанті розв’язування ми замість генерації числа будемо перебирати всі трицифрові числа від 111(всі попередні об
k:=k+1; write (‘c, ‘ ‘); End End writeln; writeln (‘k=’, k); End. У другому варіанті розв’язування ми замість генерації числа будемо перебирати всі трицифрові числа від 111 (всі попередні обов’язково мали хоча б один 0 у своєму складі) до 999. Покажемо також використання для розв’язання циклу поки (читачам самостійно пропонуємо спробувати написати розв’язання з циклом для). Алгоритм має вигляд: АЛГ Варіант 1б (цілий k); РЕЗ k ПОЧ цілий i, c, d, e k:=0 i:=111 поки пц c:=int(i/100) d:=int(i/10) – c*10 e:=I – c*100 – d*10 якщо (c< >0) and (d< >0) and (e < > 0) and (i mod c=0) and (i mod d=0) and (i mod e=0) то k:=k+1 ДРУКУВАТИ (і) Все і:=і+1 кц ДРУКУВАТИ (k) КІН Розв’язання мовою Паскаль: Program variant_1b; var k, i: word; c, d, e: byte; begin k:=0; i:=111; while i<999 do Begin c:=i mod 10; { цифра одиниць } d:=i div 10 mod 10; { цифра десятків } e:=i div 10 mod 10; { цифра сотень } if (i< >0) and (d< >0) and (e< >0) then if (i mod c=0) and (i mod d=0) and (i mod e=o) Then begin k:=k+1; write (‘i, ‘ ‘); End i:=i+1; end; writeln; writeln (‘k=’, k); end. Наведемо ще один варіант розв’язування з використанням циклу повторювати. Ідея розв’язання при цьому повністю збігається з варіантом 1б, різниця тільки в оформленні циклу (адже це цикл з післяумовою) та дещо інших формулах для виділення цифр числа (до речі, пропонуємо читачеві подумати, чи можна ще якимось чином виділити цифри трицифрового числа). Алгоритм має вигляд: Алгоритм-функція div: АЛГ Варіант 1в (цілий k); АЛГ ціл div (ціл a, b) РЕЗ k ПОЧ ціл r,k ПОЧ цілий i, c, d, e r:=a; k:=0 k:=0 поки r=b i:=111 пц повторювати r:=r-b пц k:=k+1 c:= div (I, 100) кц d:= int (i/10) – c*10 div:=k e:=i – c*100 – d*10 КІН якщо (c< >0) and (d< >0) and (e< >0) and (i mod c=0) and (i mod d=0) and (i mod e=0) то k:=k+1 ДРУКУВАТИ (і) Все і:=і+1 кц до і>999 ДРУКУВАТИ (k) КІН Алгоритм мовою Паскаль має вигляд: Program Variant_1v; var k, i: word; c, d, e: byte; Begin k:=0; i:=111; Repeat c:=i mod 10; { цифра одиниць } d:=i div 10 mod 10; { цифра десятків } e:=i div 10 mod 10; { цифра сотень } if (i< >0) and (d< >0) and (e< >0) then if (i mod c=0) and (i mod d=0) and (i mod e=o) Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.007 сек.) |