А код верный? Судя по тому, что в условии цикла стоит знак <=, цикл будет работать до тех пор, пока i меньше или равно некоторого числа. То есть цикл должен остановиться, когда i станет больше выбранного числа (которое нужно поставить вместо многоточия). Но в цикле стоит операция уменьшения параметра i. То есть i будет только уменьшаться! Цикл будет бесконечным!
Пример 1:
i:=5;
while i<=4 do begin writeln('Привет'); i:=i-1; end;
Цикл не сработает ни разу, т.к. условие с самого начала неверное!
Пример 2:
i:=5;
while i<=5 do begin writeln('Привет'); i:=i-1; end;
Условие верное, программа "заходит в цикл", выполняет вывод текста, а затем уменьшает значение i на 1, т.е. i=4. Далее идет автоматическая проверка условия цикла, и оно снова верное: 4<=5!
Идет снова выполнение всех операторов цикла, и опять уменьшение i на 1, то есть i=3. И снова условие цикла верное: 3<=5!
И так далее. Теперь каждое следующее значение параметра i меньше предыдущего, а значит, и условие цикла всегда верное! Цикл никогда не остановится!
Пример 3:
i:=5;
while i<=6 do begin writeln('Привет'); i:=i-1; end;
И даже если вместо многоточия поставить число более 5, получим аналогичный результат: условие верное, программа "заходит в цикл", выполняет вывод текста, а затем уменьшает значение i на 1, т.е. i=5. Далее идет автоматическая проверка условия цикла, и оно снова верное: 5<=5!
Идет снова выполнение всех операторов цикла, и опять уменьшение i на 1, то есть i=4. И снова условие цикла верное: 4<=5!
И так далее. Теперь каждое следующее значение параметра i меньше предыдущего, а значит, и условие цикла всегда верное! Цикл никогда не остановится!
Возможно, ошибка в условии цикла? Если записать while i>=3 do..., то цикл сработает 3 раза: при i, равном 5, 4, 3. Либо неверно указано действие в цикле: i:=i-1. Если записать i:=i+1, а вместо многоточия поставить i<=7, то цикл также сработает ровно 3 раза, т.к. i будет менять свое значение 5, 6, 7.
Program pr1;
var x,y, nod:integer;
begin
readln(x,y);
repeat
if x > y then x:=x mod y
else y:=y mod x
until x*y=0;
nod:=x+y;
writeln('НОД=', nod);
<span>end.
program pr2;
var i,n,sum:integer;
begin
readln(n);
sum:=1;
for i:=1 to n do
if i mod 2 = 0 then inc(sum,i);
writeln(sum);
<span>end.</span></span>
<em>Решение столбиком для каждого примера в прикрепленном файле.</em>
1. 1100110₂ + 110101₂ = 10011011₂
<em>Правило сложения в 2сс:</em>
<em>0+0=0; 0+1=1; 1+1 =10;... т.е "десяток" 10₂ = 2₁₀</em>
2. 177₈ - 104₈ = 73₈
<em>Правило сложения в 8 сс:</em>
<em>0+0=0; 0+1=1; 0+2=2; ... ; 0+7=7; 1+1=2; ...; 1+7=10;... т.е "десяток" 10₈ = 8₁₀</em>
3. AB₁₆ - 1C₁₆ = 8F₁₆ (В этом примере при вычитании происходит заем из соседнего старшего разряда)
<em>Правило сложения в 16 сс:</em>
0+0=0; 1+0=1; ... 1+8=9; 1+9=A; 1+A=B;...; 1+F=10;... <em>т.е "десяток" 10₁₆ = 16₁₀</em>
4. Прежде чем складывать числа, их необходимо привести к одной сс. В данном примере для этого проще восползоваться методом триад и тетрад:
<u>2 сс | 8сс | 16сс</u>
000 | 0 | 0
001 | 1 | 1
010 | 2 | 2
011 | 3 | 3
100 | 4 | 4
101 | 5 | 5
110 | 6 | 6
111 | 7 | 7
1000 | 10 | 8
1001 | 11 | 9
1010 | 12 | A
1011 | 13 | B
1100 | 14 | C
1101 | 15 | D
1110 | 16 | E
1111 | 17 | F
Переведем числа в 16сс с помощью этой таблички:
7,2₈ = 111,010₂ = 0111,0100₂ = 7,4₁₆
1011,1₂ = 1011,1000₂ = B,8₁₆
1011,1₂ + 7,2₈ + 27,4A₁₆ = B,8₁₆ + 7,4₁₆ + 27,4A₁₆ = 12,C₁₆ + 27,4A₁₆ = 3A,0A₁₆
Var s1: string;
begin
s1:='Антарктида';
writeln (copy(s1,1,1)+copy(s1,5,4)+copy(s1,6,1)+copy(s1,4,1))
end.
Var
a,b,y:integer;
Begin
Write('Введите углы треугольника ');
Readln(a,b,y);
if a+b+y=180 then write('Такой треугольник существует ') else write('Такой треугольник не существует ');
End.