Обозначим через b количество быков; k − количество коров; t − количество телят. После этого можно записать два уравнения: 10b+5k+0.5t=100 и b+k+t=100. Преобразуем их: 20b+10k+t=200 и b+k+t=100.
На 100 рублей можно купить:
• не более 10 быков, т.е. 0≤b≤10;
• не более 20 коров, т.е. 0≤k≤<20;
• не более 200 телят, т.е. 0≤t≤200. Таким образом, получаем:
Program Example_54;
Var b, k, t: Integer;
Begin
For b:=0 To 10 Do
For k:=0 To 20 Do
For t:=0 To 200 Do
If (20*b+10*k+t=200) and (b+k+t=100)
Then Writeln('быков ',b,' коров ',
k,' телят ',t);
End.
Значение переменной b изменяется 11 раз (от 0 до 10), для каждого ее значения переменная k изменяется 21 раз, а для каждого значения переменной k переменная t изменяется 201 раз. Таким образом, условие будет проверяться 11х21х201 раз. Но если известно количество быков и коров, то количество телят можно вычислить по формуле t=100-(b+k) − и цикл по переменной t исключается.
Program Example_55;
Var b, k, t: Integer;
Begin
For b:=0 To 10 Do
For k:=0 To 20 Do
Begin
t:=100-(b+k);
If (20*b+10*k+t=200) Then
Writeln('быков ',b,' коров ',
k,' телят ',t);
End;
End.
При этом решении условие проверяется 11х21 раз.
Пример 5
Написать программу нахождения среди чисел от 1 до 100 всех пар чисел, для которых их сумма равна их произведению.
Program Example_56;
var k, a, b: integer;
begin
k:=0;
for a:=1 to 100 do
for b:=1 to 100 do
begin
if a+b=a*b then
begin
k:=k+1;
writeln('Искомая пара
чисел: ',a, ' и ', b);
end;
end;
if k=0 then writeln('Таких чисел нет');
end.
§21. Решение задач с использованием
циклов с условием
Задача 1
Если мы сложим все цифры какого-либо числа, затем все цифры найденной суммы и будем повторять этот процесс, мы, наконец, получим однозначное число (цифру), называемое цифровым корнем данного числа. Например, цифровой корень числа 34 697 равен 2 (3+4+6+9+7=29; 2+9=11; 1+1=2). Составим программу для нахождения цифрового корня натурального числа.
Решение
Программа, вычисляющая цифровой корень данного числа, может выглядеть следующим образом:
Program Example_57;
Var n, k, s: Longint;
Begin
Writeln('Введите число');
Readln(n);
s:=n;
While s>9 Do
Begin
k:=s; s:=0;
Repeat
s:=s+k mod 10;
k:=k div 10;
Until k=0;
End;
Writeln('Цифровой корень числа ',n,
' равен',s);
End.
Задача 2
Задано целое четное число n. Написать программу вычисления квадратов целых четных чисел от 0 до n.
Program Example_58;
var i, y, n: integer;
begin
writeln('Введите целое четное число');
readln(n);
i:=0;
while i<=n do
begin
y:=i*i;
writeln('Квадрат числа ' ,i,
' равен ',y);
i:=i+2
end;
readln;
end.
§22. СИМВОЛЬНЫЙ ТИП ДАННЫХ
Данные символьного типа описываются с помощью идентификатора Char.
Значением переменной символьного типа может быть любой символ − буквы, цифры, знаки препинания и специальные символы. Каждому символу алфавита соответствует индивидуальный числовой код от 0 до 255.
Примечание. Наиболее распространенной международной системой кодирования символов является система ASCII. Символы с кодами от 0 до 127 составляют так называемую основную таблицу кодов ASCII. Эта часть идентична на всех IBM-совместимых компьютерах. Символы с кодами от 128 до 255 составляют так называемую национальную кодовую таблицу. Именно в ней располагаются, например, русские буквы.
К символьным данным применимы операции сравнения. Операция сравнения осуществляется следующим образом: из двух символов меньше тот, который встречается в таблице ASCII раньше.
Обычно значения для переменных типа Char задаются в апострофах: ch:='*'; а:='3'; letter:='G'.
Кроме того, имеется возможность задавать значения непосредственно указанием ASCII-кода: kd:=#65 (символ 'А'); s:=#13 (код клавиши Enter).
Первые 32 символа ASCII являются управляющими. Для указания этих символов используются записи #<ASСII-код> или ^<символ>. Например, ^[ − символ, соответствующий клавише [Esc]; ^G − звуковой сигнал.
В модуле CRT имеется функция ReadKey, которая осуществляет ввод одного символа с клавиатуры.
Формат применения:
имя переменной:=ReadKey.
Выражение n:=ReadKey читается как n присвоить значение ReadKey.
Так как символьный тип является порядковым, то для него справедливо все, что было сказано о порядковых типах.
Пример 1
Написать программу вывода последовательности символов ААВАВС...АВ...YZ.