Паскаль: масиви, Детальна інформація
Паскаль: масиви
Індексування – це єдина операція над масивами як цілісними об'єктами. Тому обробка масивів описується через обробку їх компонентів. Щоправда, в мові Турбо Паскаль можна присвоювати однотипні масиви. Наприклад, за дії означень
var a, b : array[char] of integer; ch : char;
можна замість циклу
for ch:= chr(0) to chr(255) do b[ch]:=a[ch];
написати лаконічно
b := a;
Зупинимося на підстановці аргументу-масиву на місце параметра підпрограми. Якщо параметр-масив є параметром-значенням, то на початку виконання виклику підпрограми в локальній пам'яті цього виклику створюється копія аргументу. Якщо у масиві багато елементів, то можлива ситуація, коли автоматичної пам'яті для такого аргументу не вистачить. Проте за виконання підпрограми масив або залишається без змін, або змінюється, причому саме змінений масив і потрібний для подальшої обробки за програмою. У першому випадку його можна підставляти за посиланням, а не за значенням; в другому – треба. Випадки, коли параметри-масиви необхідно означати як параметри-значення, трапляються досить рідко. Звичайно, використання параметрів-змінних типу масив вимагає підвищеної акуратності.
Задачі
1.* Нехай масив має тип array [ 1..20 ] of integer. Написати процедуру читання його перших n елементів, де n\xF0A3 20, за умови:
а) спочатку задається n, потім n значень. За n>20 слід повернутися до читання n.
б) вхідних значень довільна кількість; їх кінець задається у спосіб (2) або (3) з параграфа 5.6. Якщо прочитано 20 елементів, а ознаки закінчення вводу немає, то виконання процедури повинно завершатися.
2.* На вхід програми подається N цілих чисел X1, ... , XN із діапазону 0 ..100; N>0. Написати програму обчислення:
1) їх середнього арифметичного значення M та дисперсії D, тобто середнього арифметичного квадратів різниць між числами та M:
D = ( ( X1 - M )2 + … + ( XN - M )2 ) / N;
2) кількостей повторень K1, K2, … , K100 кожного з чисел 1, 2, … , 100.
Числа надходять у програму
а) від стандартного пристрою введення, тобто клавіатури;
б) від генератора випадкових чисел.
3. Коефіцієнти A0, A1, … , An полінома
A0 + A1*X + … + An*Xn,
де n\xF0A3 99, задаються елементами масиву типу array [0..99] of real. Окрема змінна зберігає степінь полінома n. Написати модуль, що має означення типу поліномів і задає обчислення значення полінома в точці v, похідної полінома (це поліном степеня n-1), суми, різниці та добутку двох поліномів, частки та остачі від ділення полінома на біном x - c.
4.* Риби народжуються навесні й живуть не більше 9,5 років. Навесні на кожну рибину припадає в середньому B новонароджених мальків. Кількість риб незалежно від їхнього віку за рік (від весни до весни) зменшується в D разів. Навесні першого року у водоймище випустили M новонароджених мальків. Написати програму обчислення, скільки риби та якого віку буде у водоймищі навесні через Y років.
5. Черга – це така послідовність, що елементи додаються в її кінець, а вилучаються з її початку. Написати модуль роботи з чергою цілих, поданою в масиві. У модулі повинні бути підпрограми:
1) ініціалізації модуля;
2) скидання черги (вилучення всіх її елементів);
3) обчислення кількості елементів у черзі;
4) перевірки, чи порожня черга;
5) обчислення обсягу вільного місця в черзі (кількість елементів, які можна додати до її заповнення);
6) додавання елемента в кінець черги;
7) добування та вилучення елемента з її початку.
var a, b : array[char] of integer; ch : char;
можна замість циклу
for ch:= chr(0) to chr(255) do b[ch]:=a[ch];
написати лаконічно
b := a;
Зупинимося на підстановці аргументу-масиву на місце параметра підпрограми. Якщо параметр-масив є параметром-значенням, то на початку виконання виклику підпрограми в локальній пам'яті цього виклику створюється копія аргументу. Якщо у масиві багато елементів, то можлива ситуація, коли автоматичної пам'яті для такого аргументу не вистачить. Проте за виконання підпрограми масив або залишається без змін, або змінюється, причому саме змінений масив і потрібний для подальшої обробки за програмою. У першому випадку його можна підставляти за посиланням, а не за значенням; в другому – треба. Випадки, коли параметри-масиви необхідно означати як параметри-значення, трапляються досить рідко. Звичайно, використання параметрів-змінних типу масив вимагає підвищеної акуратності.
Задачі
1.* Нехай масив має тип array [ 1..20 ] of integer. Написати процедуру читання його перших n елементів, де n\xF0A3 20, за умови:
а) спочатку задається n, потім n значень. За n>20 слід повернутися до читання n.
б) вхідних значень довільна кількість; їх кінець задається у спосіб (2) або (3) з параграфа 5.6. Якщо прочитано 20 елементів, а ознаки закінчення вводу немає, то виконання процедури повинно завершатися.
2.* На вхід програми подається N цілих чисел X1, ... , XN із діапазону 0 ..100; N>0. Написати програму обчислення:
1) їх середнього арифметичного значення M та дисперсії D, тобто середнього арифметичного квадратів різниць між числами та M:
D = ( ( X1 - M )2 + … + ( XN - M )2 ) / N;
2) кількостей повторень K1, K2, … , K100 кожного з чисел 1, 2, … , 100.
Числа надходять у програму
а) від стандартного пристрою введення, тобто клавіатури;
б) від генератора випадкових чисел.
3. Коефіцієнти A0, A1, … , An полінома
A0 + A1*X + … + An*Xn,
де n\xF0A3 99, задаються елементами масиву типу array [0..99] of real. Окрема змінна зберігає степінь полінома n. Написати модуль, що має означення типу поліномів і задає обчислення значення полінома в точці v, похідної полінома (це поліном степеня n-1), суми, різниці та добутку двох поліномів, частки та остачі від ділення полінома на біном x - c.
4.* Риби народжуються навесні й живуть не більше 9,5 років. Навесні на кожну рибину припадає в середньому B новонароджених мальків. Кількість риб незалежно від їхнього віку за рік (від весни до весни) зменшується в D разів. Навесні першого року у водоймище випустили M новонароджених мальків. Написати програму обчислення, скільки риби та якого віку буде у водоймищі навесні через Y років.
5. Черга – це така послідовність, що елементи додаються в її кінець, а вилучаються з її початку. Написати модуль роботи з чергою цілих, поданою в масиві. У модулі повинні бути підпрограми:
1) ініціалізації модуля;
2) скидання черги (вилучення всіх її елементів);
3) обчислення кількості елементів у черзі;
4) перевірки, чи порожня черга;
5) обчислення обсягу вільного місця в черзі (кількість елементів, які можна додати до її заповнення);
6) додавання елемента в кінець черги;
7) добування та вилучення елемента з її початку.
The online video editor trusted by teams to make professional video in
minutes
© Referats, Inc · All rights reserved 2021