<
  • Главная
Статьи

Практикум - Глава 2. Алгоритми, реалізовані за допомогою циклів типу ДЛЯ

Цикли типу для застосовуються, коли число повторень циклу відомо до початку його виконання.

Мова Приклад Величина кроку Шкільний АЯ нц для i від 1 до N
тіло циклу
КЦ Завжди 1 Pascal For i: = 1 to N do
тіло циклу; 1 For i: = N downto 1 do
тіло циклу; -1 Basic FOR I = 1 TO N STEP H
тіло циклу
NEXT I Крок Н довільний (за замовчуванням дорівнює 1) Приклад 2.1. Обчислити суму елементів числового масиву A = (a 1, a 2, ..., a N). Тест Дані Результат N = 5 A = (3, 5, -2, 6, 3) S = 15.0 Демонстрація Шкільний АЯ алг Сума (арг цілий N, арг вещ таб A [1: N], рез вещ S) дано N> 0 поч цілий i S: = 0 нц для i від 1 до N S: = S + A [i] кц кін Виконання алгоритму i S 0 1 0 + a 1 = 0 + 3 = 5 2 a 1 + a 2 = 3 + 5 = 8 3 a 1 + a 2 + a 3 = 8-2 = 6 4 a 1 + a 2 + a 3 + a 4 = 6 + 6 = 12 5 a 1 + a 2 + a 3 + a 4 + a 5 = 12 + 3 = 15 Результати роботи Pascal-програми
Введіть N = 5 <Enter>
A [1] = 3 <Enter>
A [2] = 5 <Enter>
A [3] = -2 <Enter>
A [4] = 6 <Enter>
A [5] = 3 <Enter>

Сума дорівнює 15.0

QBasicCLS INPUT "N =";N: DIM A (N) FOR i = 1 TO N PRINT "A ("; i; ") =";INPUT A (i) NEXT i S = 0 FOR i = 1 TO N S = S + A (i) NEXT i PRINT "Сума =";S END Приклад 2.2.Знайти найбільший елемент числового масиву A = (a 1, a 2, ..., a N) і його номер. Тест

Дані Результати N = 4 A = (3, -1, 10, 1) Amax = 10 K = 3 Демонстрація Turbo Pascal Program MaxElem; Uses Crt; Type Mas = Array [1..20] of Real; Var A: Mas; i, N: Integer; k: Integer; Amax: Real; BEGIN СlrScr; Write ( 'Введіть N ='); ReadLn (N); For i: = 1 to N do {Введення значень елементів масиву А} begin Write ( 'A [', i, '] ='); ReadLn (A [i]) end; Amax: = A [1]; k: = 1; {Пошук максимального елемента} For i: = 2 to N do If A [i]> Amax then begin Amax: = A [i]; k: = i end; WriteLn; WriteLn ( 'Найбільший елемент, k,' -й '); WriteLn ( 'Значення одеського форуму', Amax: 5: 1); ReadLn END.
QBasic CLS INPUT "N ="; N: DIM A (N) FOR i = 1 TO N 'Введення масиву А PRINT "A ("; i; ") ="; INPUT A (i) NEXT i Amax = A (1): k = 1 'Пошук максимального елемента FOR i = 2 TO N IF A (i)> Amax THEN Amax = A (i): k = i NEXT i PRINT "Найбільший елемент "; k; "-й" PRINT "Значення одеського форуму"; Amax END Приклад 2.3. В баскетбольну команду можуть бути прийняті учні, зростання яких перевищує 170 см. Складіть список кандидатів в команду з учнів класу. Система тестів Номер тесту перевіряється випадок Число учнів Прізвища Зростання Результати 1 Є кандидати 3 Кулов чехини Уваров 171 165 178 Кулов Уваров 2 Немає кандидатів 2 Єршов Іванов 170 165 Немає кандидатів Демонстрація Шкільний АЯ алг Баскетбол (арг цілий N, арг літ таб Фам [1: N], арг вещ таб Зростання [1: N], рез літ таб Канд [1: N]) поч цілий i, k k: = 0 нц для i від 1 до N | запис прізвищ кандидатів в таблицю Канд якщо Зростання [i]> 170 то k: = k + 1; Канд [k]: = Фам [i] все кц якщо k = 0 то висновок "В КЛАСІ НІ КАНДИДАТІВ У КОМАНДУ." інакше нц для i від 1 до k висновок Канд [i] кц все кін Виконання алгоритму N тесту i Зростання [i]> 170 K кандидатами в команду 1 1 2 3 + - + 0 1 2 Кулов Уваров 2 1 2 - - 0 -
TurboPascal Program BascetBall; Uses Crt; Var SurName: Array [1..30] of String; {Прізвища учнів} Height: Array [1..30] of Real; {Зростання учнів} Cand: Array [1..30] of String; {Прізвища кандидатів} NPupil, i, K: Integer; {NPupil - число учнів, K - кількість зарахованих} BEGIN ClrScr; Write ( 'В КОМАНДУ зараховуються УЧНІ,'); WriteLn ( 'РОСТ ЯКИХ ПЕРЕВИЩУЄ 170 СМ.'); WriteLn; Write ( 'Скільки всього учнів?'); ReadLn (NPupil); WriteLn ( 'Введіть прізвища і зростання учнів:'); For i: = 1 to NPupil do begin Write (i, '. Прізвище -'); ReadLn (SurName [i]); Write ( 'Зростання -'); ReadLn (Height [i]); end; WriteLn; K: = 0; {Складання списку команди} For i: = 1 to NPupil do If Height [i]> 170 then begin K: = K + 1; Cand [K]: = SurName [i] end; If K = 0 then WriteLn ( 'В КЛАСІ НІ КАНДИДАТІВ У КОМАНДУ.') Else begin WriteLn ( 'КАНДИДАТИ В баскетбольну команду:'); For i: = 1 to K do WriteLn (i, '.', Cand [i]); end; ReadLn END.
QBasic CLS: PRINT "В КОМАНДУ зараховуються УЧНІ,"; PRINT "РОСТ ЯКИХ ПЕРЕВИЩУЄ 170 СМ." : PRINT INPUT "Скільки всього учнів?", NPupil DIM SurName $ (NPupil), Height (NPupil), Cand $ (NPupil) PRINT "Введіть прізвища і зростання учнів:" FOR i = 1 TO NPupil INPUT "Прізвище -", SurName $ (i) INPUT "Зростання -", Height (i) NEXT i: PRINT K = 0 FOR i = 1 TO NPupil IF Height (i)> 170 THEN K = K + 1: Cand $ (K) = SurName $ ( i) NEXT i IF K = 0 THEN PRINT "В КЛАСІ НІ КАНДИДАТІВ У КОМАНДУ." ELSE PRINT "КАНДИДАТИ В баскетбольну команду:" FOR i = 1 TO K PRINT i; "."; Cand $ (i) NEXT i END IF END Приклад 2.4. Для заданого x обчислити Дані Результати N = 4 A = (3, -1, 10, 1) Amax = 10 K = 3 Демонстрація Turbo Pascal Program MaxElem;  Uses Crt;  Type Mas = Array [1 Тут n! = 1. 2. 3 .... n (читається як "n-факторіал"). Тест Демонстрація Шкільний АЯ алг Сума Ряду (арг вещ х, арг цілий n, рез вещ S) поч цілий i, вещ P | P - чергове доданок S: = 1; P: = 1 нц для i від 1 до n P: = - P * x / i | отримання чергового доданка S: = S + P кц кін QBasic CLS INPUT "Введіть n =", n INPUT "Введіть x =", x S = 1: P = 1 FOR i = 1 TO n P = -P * x / i S = S + P NEXT i PRINT: PRINT "Про т в е т: S ="; S END Результат роботи
QBasic-програми
Введіть n = 3 <Enter>
Введіть x = 1 <Enter>

Відповідь: S = .3333333

Приклад 2.5.Дан масив X (N).Отримати новий масив Y (N) такою, що в ньому спочатку йдуть позитивні числа, потім нульові, і потім негативні з X.Тест

Дані Результат N = 7 X = (- 1, 2, 0, 4, -3, -2, 0) Y = (2, 4, 0, 0, -1, -3, -2) Демонстрація Шкільний АЯ алг Новий Порядок (арг цілий N, арг вещ таб Х [1: N], рез вещ таб Y [1: N]) поч цілий i, k | k - індекс масиву Y k: = 0 нц для i від 1 до N | Занесення в Y позитивних чисел з X якщо X [i]> 0 то k: = k + 1; Y [k]: = X [i] все кц нц для i від 1 до N | Занесення в Y чисел, рівних нулю, з X якщо X [i] = 0 то k: = k + 1; Y [k]: = X [i] все кц нц для i від 1 до N | Занесення в Y негативних чисел з X якщо X [i] <0 то k: = k + 1; Y [k]: = X [i] все кц кін QBasic CLS: INPUT "N ="; N: DIM X (N), Y (N) FOR i = 1 TO N PRINT "X ("; i; ") ="; : INPUT X (i) NEXT i k = 0 FOR i = 1 TO N IF X (i)> 0 THEN k = k + 1: Y (k) = X (i) NEXT i FOR i = 1 TO N IF X (i) = 0 THEN k = k + 1: Y (k) = X (i) NEXT i FOR i = 1 TO N IF X (i) <0 THEN k = k + 1: Y (k) = X ( i) NEXT i PRINT "Про т в е т: отриманий масив"; FOR k = 1 TO N PRINT Y (k); NEXT k: PRINT END Завдання для самостійного рішення

2.1. [ Pascal | C | Basic ] Підрахуйте число і суму позитивних, число і твір негативних елементів заданого масиву A (N).

2.2. [ Pascal | C | Basic ] Задані вектори X (N) і Y (N) перетворіть за правилом: більше з xi і yi прийміть як нового значення xi, а менша - в якості нового значення yi.

2.3. [ Pascal | C | Basic ] Елементи заданого масиву B (N) перепишіть у новий масив A (N) в зворотному порядку.

2.4. [ Pascal | C | Basic ] З заданого вектора A (3N) отримаєте вектор B (N), чергова компонента якого дорівнює середньому арифметичному черговий трійки компонент вектора А.

2.5. [ Pascal | C | Basic ] В заданому масиві Х (N) замініть нулями всі негативні компоненти, що безпосередньо передують його максимальної компоненті (першої по порядку, якщо їх декілька).

2.6. [ Pascal | C | Basic ] Обчисліть значення
а) sin x + sin 2 x + ... + sin n x;
б) sin x + sin x 2 + ... + sin x n;
в) sin x + sin 2 x 2 + ... + sin n x n;
г) sin x + sin sin x + ... + sin sin ... sin x (n раз).

2.7. [ Pascal | C | Basic ] Обчисліть суму квадратів всіх елементів заданого масиву X (N), за винятком елементів, кратних п'яти.

2.8. [ Pascal | C | Basic ] Обчисліть значення функції z = (a + b + ci) / i, якщо a змінюється від 0 з кроком 1, b змінюється від 5 з кроком 1, ci є елементом масиву C (N). При цьому a і b змінюються одночасно з i.

2.9. [ Pascal | C | Basic ] В заданому масиві A (N) поміняйте місцями найбільший та найменший елементи.

2.10. [ Pascal | C | Basic ] В заданому масиві A (N) визначте кількість елементів, які менше заданого значення.

2.11. [ Pascal | C | Basic ] Здійсніть циклічний зсув компонент заданого вектора A (N) вліво на одну позицію, тобто отримаєте вектор А = (a2, a3, ..., aN, a1).

2.12. [ Pascal | C | Basic ] Здійсніть циклічний зсув компонент заданого вектора A (N) вправо на дві позиції, тобто отримаєте вектор A = (aN-1, aN, a1, a2, ..., aN-2).

2.13. [ Pascal | C | Basic ] Дано масив A (N). Отримайте масив B (N), i -й елемент якого дорівнює середньому арифметичному перших i елементів масиву А: bi = (a1 + a2 + ... + ai) / i.

2.14. [ Pascal | C | Basic ] Обчисліть значення многочленів:
P = an xn + an-1 xn-1 + ... + a1 x + a0;
Q = a0 xn + a1 xn-1 + ... + an-1 x + an,
використовуючи формулу Горнера. Коефіцієнти многочленів задані у вигляді вектора A = (a0, a1, ..., an).

2.15. [ Pascal | C | Basic ] Запишіть поспіль в масив A (N) елементи заданого масиву В (2N), що стоять на парних місцях, а елементи, що стоять на непарних місцях, запишіть в масив С (N).

2.16. [ Pascal | C | Basic ] Виведіть на друк номера елементів заданого масиву Y (N), що задовольняють умові 0 <yi <1.

2.17. [ Pascal | C | Basic ] Виведіть на друк номера точок, що лежать в колі радіусом R з центром на початку координат. Координати точок задані масивами X (N) і Y (N).

2.18. [ Pascal | C | Basic ] В заданому масиві A (N) замість a1 запишіть найбільший елемент масиву, а замість aN - найменший елемент масиву.

2.19. [ Pascal | C | Basic ] В заданому масиві A (N), всі елементи якого попарно різні, знайдіть:
а) найбільший елемент з негативних;
б) найменший елемент з позитивних;
в) другий за величиною елемент.

2.20. [ Pascal | C | Basic ] В заданому масиві A (N) визначте число сусідства:
а) двох позитивних чисел;
б) двох чисел різного знака;
в) двох чисел одного знака, причому абсолютна величина першого числа повинна бути більше другого числа;
г) парного числа і непарного c непарним індексом.

2.21. [ Pascal | C | Basic ] В заданому масиві A (N) позитивні елементи зменшите вдвічі, а негативні замініть на значення їх індексів.

2.22. [ Pascal | C | Basic ] В заданому масиві A (N) обчисліть середнє геометричне і середнє арифметичне значення для позитивних елементів.

2.23. [ Pascal | C | Basic ] Обчисліть P = 1. 2 + 2. 3. 4 + 3. 4. 5. 6 + ... + N. (N + 1). .... 2N.

2.24. [ Pascal | C | Basic ] Утворіть масив B, що складається з позитивних елементів заданого масиву A (N), великих п'яти. Виведіть на друк утворений масив і число його елементів.

2.25. [ Pascal | C | Basic ] З заданих векторів X (N) і Y (N) отримаєте вектор Z (2N) c елементами (x1, y1, x2, y2, ..., xN, yN).

2.26. [ Pascal | C | Basic ] Для заданого вектора X (2N) обчисліть Y = x1 - x2 + x3 - ... - x2N.

2.27. [ Pascal | C | Basic ] Дан вектор A (N). Знайдіть порядковий номер того з елементів, який найбільш близький до якогось цілого числа (першого по порядку, якщо таких декілька).

2.28. [ Pascal | C | Basic ] Елементи заданого масиву X = (x1, x2, ..., xN) переупорядкувати наступним чином: X = (xN, xN-1, ..., x1).

2.29. [ Pascal | C | Basic ] Для заданого набору коефіцієнтів a, b, c, d знайдіть найменше значення функції y = ax 3 + bx 2 + cx + d і значення аргументу, при якому її було отримано. Значення х змінюється від 0 до 2 з кроком 0,2.

2.30. [ Pascal | C | Basic ] Дано натуральне N. Обчисліть суму тих елементів серії i 3 -3. i. N + N, i = 1, 2, ..., N, які є подвоєними непарними числами.

2.31 *. [ Pascal | C | Basic ] Стисніть заданий масив A (N) відкиданням нульових елементів.

2.32. [ Pascal | C | Basic ] Дано масив A (2N). Побудуйте масиви з елементами, відповідно рівними:
а) a1, aN + 1, a2, aN + 2, ..., aN, a2N;
б) a2N, a1, a2N-1, a2, ..., aN + 1, aN.

2.33. [ Pascal | C | Basic ] Дана матриця A (3, N), елементи якої є позитивними. Визначте, які з трійок a1i, a2i, a3i (i = 1, ..., N) можуть служити сторонами трикутника. Виведіть масив b1, ..., bN, що складається з нулів і одиниць. Якщо трійка a1i, a2i, a3i може служити сторонами трикутника, то bi = 1, якщо немає, то bi = 0.

2.34. [ Pascal | C | Basic ] У каси Аерофлоту вишикувалася черга з N чоловік. Час обслуговування касиром i -го клієнта одно Ti (i = 1, ..., N).
а) Визначте час перебування в черзі кожного клієнта;
б) Вкажіть номер клієнта, для обслуговування якого касиру треба було найбільше час.

2.35. [ Pascal | C | Basic ] У змаганнях з фігурного катання N суддів незалежно виставляють оцінки спортсмену. Потім з оголошених оцінок видаляють найвищу (одну, якщо найвищу оцінку виставили кілька суддів). Аналогічно надходять з найнижчою оцінкою. Для решти оцінок обчислюється середнє арифметичне, яке і стає залікової оцінкою. За заданим оцінками суддів визначте залікову оцінку спортсмена.

2.36. [ Pascal | C | Basic ] Кілька однотипних рятувальних катерів, які перебувають в акваторії в точках з координатами (xi, yi), i = 1, 2, ..., N, отримали сигнал SOS від судна, що знаходиться в тій же акваторії в точці з координатами (x0, y0 ). Визначте, який з катерів швидше за інших зможе надати допомогу?

2.37. [ Pascal | C | Basic ] За даними про розклад руху приміських поїздів визначте значення найбільшого інтервалу часу між відправленнями поїздів.

2.38. [ Pascal | C | Basic ] Учитель оголосив результати контрольної роботи. Визначте пpоцентное содеpжание виставлених їм "п'ятірок", "четвірок", "трійок" і "двійок".

2.39. [ Pascal | C | Basic ] Фунт стерлінгів, грошова одиниця Великобританії, до 1971 р дорівнював 20 шилінгам або 240 пенсам. З корабля, в порту Ліверпуля зійшли N мандрівників, кожен з яких мав по одній десятифунтових купюрі. Вони купили сувеніри на суму p1, p2, ..., pn, відповідно. Скільки фунтів, шилінгів і пенсів здачі отримав кожен з мандрівників?

2.40. [ Pascal | C | Basic ] Про кожного учня класу відомі його стать, рік народження, зріст і вагу. Визначте, скільки в класі хлопчиків і скільки дівчаток. Знайдіть середній вік хлопчиків і середній вік дівчаток. Визначте, чи вірно, що найвищий хлопчик важить більше за всіх у класі, а найменша дівчинка є наймолодшою ​​серед дівчаток.

Скільки всього учнів?
Визначте, який з катерів швидше за інших зможе надати допомогу?
Скільки фунтів, шилінгів і пенсів здачі отримав кожен з мандрівників?


Новости
  • Виртуальный хостинг

    Виртуальный хостинг. Возможности сервера распределяются в равной мере между всеми... 
    Читать полностью

  • Редизайн сайта

    Редизайн сайта – это полное либо частичное обновление дизайна существующего сайта.... 
    Читать полностью

  • Консалтинг, услуги контент-менеджера

    Сопровождение любых интернет ресурсов;- Знание HTML и CSS- Поиск и обновление контента;-... 
    Читать полностью

  • Трафик из соцсетей

    Сравнительно дешевый способ по сравнению с поисковым и контекстным видами раскрутки... 
    Читать полностью

  • Поисковая оптимизация

    Поисковая оптимизация (англ. search engine optimization, SEO) — поднятие позиций сайта в результатах... 
    Читать полностью