Завдання № 30. Вивести таблицю квадратів і кубів всіх натуральних чисел до n » Pascal - основи програмування

Основи програмування на мові Pascal

 

Спонсори

Завдання № 30. Вивести таблицю квадратів і кубів всіх натуральних чисел до n

Завдання № 30. Вивести таблицю квадратів і кубів всіх натуральних чисел до n

Формулювання. Дано натуральне число n, менше 256. Використовуючи псевдографіку, вивести на екран таблицю квадратів і кубів всіх натуральних чисел від 1 до n включно.
Примітка: псевдографіка - це сукупність символів для формування видимих графічних примітивів (ліній, прямокутників, рамок, таблиць і т. Д.). Вона була актуальна в ті далекі часи, коли пристрої виведення комп'ютерів не здатні були працювати з графікою, або це було проблематично.
Символи, що використовуються для псевдографіки, повинні бути включені в набір використовуваного в терміналі (консолі) комп'ютерного шрифту.
Рішення. У цьому завданні ми вперше займемося графічним оформленням вихідних даних програми. Для початку подумаємо, як може виглядати таблиця в простому випадку (n = 3): 

x

x2

x3

1

2

3

1

4

9

1

8

27

    Незважаючи на те, що кодові сторінки для DOS мають певний набір символів для малювання графічних примітивів, зокрема, таблиць, ми будемо користуватися лише символами '-' і '|' для побудови ліній таблиці, а також '/' і '\' для формування її кутових елементів.
Побудуємо псевдографічний еквівалент цієї таблиці:
/ ----------------------- \
| X | x ^ 2 | x ^ 3 |
| ----------------------- |
| 1 | 1 | 1 |
| 2 | 4 | 8 |
| 3 | 9 | 27 |
\ ----------------------- /
Примітка: у разі обмежених можливостей виводу для позначення зведення вираження в ступінь використовується постфікси «^ k», де k - показник ступеня. До речі, тут ми вирівнюємо значення в середині стовпців, зрушуючи до середини розряд одиниць впорядкованих по правому краю стовпців.
    Як же сформувати висновок на екран такої таблиці? Зрозуміло, що це потрібно зробити за рядком. Однак якої ширини зробити таблицю і як організувати виведення рядків зі ступенями? Так як максимальне число, яке може бути подано на вхід - 255, і його куб дорівнює 16581375 (він складається з 8 цифр), то нам потрібно зробити колонки ширини 1 + 8 + 8 + 1 = 18 (крайні одиниці для відступів) символів, щоб таблиця виглядала рівномірно:
/ ------------------------------------------------- ------- \
| X | x ^ 2 | x ^ 3 |
| ------------------------------------------------- ------- |
| 1 | 1 | 1 |
| 2 | 4 | 8 |
| ... | ... | ... |
| 255 | 65025 | 16581375 |
\ ------------------------------------------------- ------- /

Як бачимо, при поступовому збільшенні числа будуть «виростати» справа наліво. Щоб вивести такий рядок, потрібно вивести константу '|', потім вивести відповідне число з шириною поля виведення 9, потім вивести константу '|' з шириною поля виведення 10 і аналогічно вивести залишилися колонки:

writeln ('|', i: 9, '|': 10, i * i: 9, '|': 10, i * i * i: 9, '|': 10);

Схематично з урахуванням форматування це буде виглядати так:

'|      255         |    65025         | 16581375         |'

Зміна кольорів відповідає чергуванню аргументів в операторі виведення.
Так як заголовок таблиці один і той же для всіх варіантів вихідних даних, ми можемо відразу вивести його за допомогою трьох строкових констант через writeln:


writeln('/--------------------------------------------------------\');
writeln('|        x         |       x^2        |       x^3        |');
writeln('|--------------------------------------------------------|');

Після виведення всіх рядків потрібно вивести нижню межу таблиці:

writeln('\--------------------------------------------------------/'); 

Взагалі, всі ці константи і правила не взялися «просто так» або з розрахунків. Єдиний використаний факт - розрядність числа не більше 8, тому ми і взяли ширину колонок «по максимуму». В іншому потрібно було експериментувати, щоб знайти найбільш легке і наочне рішення. Звичайно, псевдографіка - це не алгоритмічне програмування, і в ньому тестування і експеримент відіграють чи не найважливішу роль.

 

Код:


  1. program MyTable;
  2. var
  3. i, n: byte;
  4. begin
  5. readln(n);
  6. writeln('/--------------------------------------------------------\');
  7. writeln('|        x         |       x^2        |       x^3        |');
  8. writeln('|--------------------------------------------------------|');
  9. for i := 1 to n do begin
  10. writeln('|', i:9, '|':10, i * i:9, '|':10, i * i * i:9, '|':10)
  11. end;
  12. writeln('\--------------------------------------------------------/')
  13.  end.

0030.-MyTable.rar [631 b] (cкачувань: 7)

скачать dle 10.4фильмы бесплатно Наступна сторінка » Завдання № 31. Сформувати реверсну зап... Попередня сторінка » Завдання № 29. Обчислити число сполуче...