Сумарокова
?>

1постройте горизонтальную линию длиной 50 източек использую оператор for. 2организуйте движение точки через центр экрана справа на левво. 3вывидите на экран значение суммы натуральных чисел от 1 до 100.

Информатика

Ответы

Герасименко

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

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

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

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

xx2x31231491827

несмотря на то, что кодовые страницы для  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.
Матфеопуло1006
Исправленный код программы

var

a,b,c,x,y,k,l,j,v,d: integer;

begin

read(a);

read(b);

read(c);

k: =0-c;

d: =1;

for x: =1 to c do

  for y: =k to c do  

  begin

    if a*x+b*y=c then

    if d> =x then begin

      d: =x;

      v: =y;

    end;

  end; writeln(d,' ',v);

end.

объяснение

d это переменная, обозначающая минимальное значение x

ошибка была в строке   if d< =x then begin

если x меньше а не больше минимального, то минимальному должно присваиваться значение x

исправленная строка if d> =x then begin

Виталий887
Var i: integer; a: array[1..15] of integer; begin    randomize;     for i : = 1 to 15 do begin        a[i] : = random (60) + 13;         write (a[i]: 5)    end;     for i : = 1 to 15 do begin          if ((i mod 2) = 0) and ((a[i] mod 5) = 0) then          a[i] : = 0          else        if ((i mod 2) < > 0) and ((a[i] mod 3 )= 0) then            a[i] : = -1        else          a[i] : = 1;         end;     for i : = 1 to 15 do          write (a[i]: 5); readln; end.

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

1постройте горизонтальную линию длиной 50 източек использую оператор for. 2организуйте движение точки через центр экрана справа на левво. 3вывидите на экран значение суммы натуральных чисел от 1 до 100.
Ваше имя (никнейм)*
Email*
Комментарий*

Популярные вопросы в разделе

info126
Voronov434
s45983765471717
modellisimo-a
vlrkinn
Aliferenko
kolefe22171
Aleksandr362
Юрий197
skorykin123371
belegaj98
vanvangog199826
Korinchan390
oliayur4encko
Nurislamovna1543