Во-первых, не whill, а while. Во-вторых, цикл с предусловием(while) выполняется только тогда, когда его условие возвращает ложь. Если условие возвращает правду, цикл завершается. Бывает так, что при попытке первой итерации цикла условие уже возвращает правду. В этом случае цикл не будет выполнен ни разу. Цикл с предусловием(repeat), наоборот, выполняется, пока условие возвращает правду и завершается ложью. Стоит заметить, что если цикл с предусловием проверяет своё условие перед итерацией, цикл с постусловием делает это после, а это значит, что последний выполнится хотя бы один раз.
// PascalABC.NET 3.0, сборка 1111 var a,b:BigInteger; sa,sb:string; begin Write('Первое слагаемое: '); Readln(sa); if BigInteger.TryParse(sa,a)=False then Writeln('Это не целое число!') else begin Write('Второе слагаемое: '); Readln(sb); if BigInteger.TryParse(sb,b)=False then Writeln('Это не целое число!') else Writeln('Точный результат: ',a+b) end end.
Тестовое решение: Первое слагаемое: 5423323409523846095938445870434764308454095 Второе слагаемое: 7425543205430235436743455446541423534233 Точный результат: 5430748952729276331375189325881305731988328
Во-вторых, цикл с предусловием(while) выполняется только тогда, когда его условие возвращает ложь. Если условие возвращает правду, цикл завершается. Бывает так, что при попытке первой итерации цикла условие уже возвращает правду. В этом случае цикл не будет выполнен ни разу.
Цикл с предусловием(repeat), наоборот, выполняется, пока условие возвращает правду и завершается ложью. Стоит заметить, что если цикл с предусловием проверяет своё условие перед итерацией, цикл с постусловием делает это после, а это значит, что последний выполнится хотя бы один раз.