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
Поделитесь своими знаниями, ответьте на вопрос:
формулировка. дано натуральное число 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.