Новичок345
03.11.2020 19:40

Составьте с данными словами и словосочетаниями предложения. Служба Интернет, доступ, телеконференция, электронная почта, группа новостей, сервер, услуга, достоинство, запрос.

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
vvvvcrrrq
02.09.2021 17:04

Формулировка. Дано натуральное число n, меньшее 256. Используя псевдографику, вывести на экран таблицу квадратов и кубов всех натуральных чисел от 1 до n включительно.

Примечание: псевдографика – это совокупность символов для формирования видимых графических примитивов (линий, прямоугольников, рамок, таблиц и т. д.). Она была актуальна в те далекие времена, когда устройства вывода компьютеров не были работать с графикой, либо это было проблематично.

Символы, использующиеся для псевдографики, должны быть включены в набор используемого в терминале (консоли) компьютерного шрифта.

Решение. В этой задаче мы впервые займемся графическим оформлением выходных данных программы. Для начала подумаем, как может выглядеть таблица в простейшем случае (n = 3):

xx2x31
2
31
4
91
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, поэтому мы и взяли ширину колонок «по максимуму». В остальном нужно было экспериментировать, чтобы найти наиболее легкое и наглядное решение. Конечно, псевдографика – это не алгоритмическое программирование, и в нем тестирование и эксперимент играют чуть ли не самую важную роль.

Код:

program MyTable; var i, n: byte; begin readln(n); writeln('/\'); writeln('| x | x^2 | x^3 |'); writeln('||'); for i := 1 to n do begin writeln('|', i:9, '|':10, i * i:9, '|':10, i * i * i:9, '|':10) end; writeln('\/') end.
0,0(0 оценок)
Ответ:
MoonLoveYou
03.03.2020 16:35
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 uses crt; const n=10; var a:array[1..n] of integer;     i,k,k0:integer;     s:real; begin  clrscr;   writeln('Массив :');    for i:=1 to n do     begin      write(i,' = ');       read(a[i]);     end;     k:=1;   for i:=1 to n do    if a[i]<0 then     begin      s:=s+a[i];      inc(k);     end    else      begin       if a[i]>0 then       inc(k0);      end;   s:=s/k; writeln;   if (k=1) and (k0=0) then    writeln('Положительных или отрицательных элементов в массиве нет,среднее ариф-ское = 0')   else    writeln('Среднее ариф-ского отрицательных элементов массива =',s:0:2);      readkey; end.
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота