// с циклом while var s,i:integer; begin i:=100; while i<=999 do begin if i mod 77 = 0 then s:=s+i; i:=i+1; end; writeln('Сумма трехзначных кратных 77: ',s); end.
Char shortint или byte smallint или word smallint или word single string single или real
На практике все это в настоящее время - анахронизм. Для целочисленных значений обычно используют integer, для вещественных - real. Это позволяет во-первых, не загружать голову проблемой, что в какой-то момент результат операции не поместится в отведенные рамки, во-вторых, позволяет компилятору получать более быстрый код (данные не надо преобразовывать к какому-то типу для вычисления, а потом назад).
Если вычисляется (byte)*(smallint)+(integer) div (shortint), какого типа данные нужно выбирать компилятору для промежуточных значений и результата? А вот если все данные одного типа integer, то и думать не о чем.
//c циклом for
var s,i:integer;
begin
for i:=100 to 999 do
if i mod 77 = 0 then s:=s+i;
writeln('Сумма трехзначных кратных 77: ',s);
end.
Тестовое решение:
Сумма трехзначных кратных 77: 5929
// с циклом while
var s,i:integer;
begin
i:=100;
while i<=999 do begin
if i mod 77 = 0 then s:=s+i;
i:=i+1;
end;
writeln('Сумма трехзначных кратных 77: ',s);
end.
shortint или byte
smallint или word
smallint или word
single
string
single или real
На практике все это в настоящее время - анахронизм. Для целочисленных значений обычно используют integer, для вещественных - real.
Это позволяет во-первых, не загружать голову проблемой, что в какой-то момент результат операции не поместится в отведенные рамки, во-вторых, позволяет компилятору получать более быстрый код (данные не надо преобразовывать к какому-то типу для вычисления, а потом назад).
Если вычисляется (byte)*(smallint)+(integer) div (shortint), какого типа данные нужно выбирать компилятору для промежуточных значений и результата? А вот если все данные одного типа integer, то и думать не о чем.