1) Чтобы не было переполнения. s=a+b; Если s будет объявлена как integer, а a и b - как long integer (и значения a и b будут превышать диапазон integer), то ячейка s переполнится и s будет равно не пойми чему.
2) Для корректной работы s=a+b; s - integer; a,b - double - некорректно.
3) Чтобы не было неиспользуемой памяти. Если i изменяется от 1 до 10, а для переменной объявлен тип double, то при выполнении программы будут "висеть" незаполненные ячейки памяти, выделенные под этот тип.
Sergei1805
21.12.2020
В общем случае, трассировка - один из отладки программ врукопашную: состояние программы контролируется на определённом отрезке времени её выполнения путём анализа значений переменных. трассировка в том или ином виде при отладке программ сложнее школьного дз практически неизбежна. в простейшем случае, трассировка - вывод значений переменных на экран (например, в окно консоли) , либо расчёт их на бумажке для каждого шага. в более продвинутом варианте используются точки останова, окно наблюдения, выполнение по шагам и, если есть, контекстный интерпретатор выражений. есть также специальная "трассирующая консоль" - интерфейс вывода информации из программы в отладчик, если таковой присутствует. почти любой современный отладчик показывает состояние програмm при её останове, что делает трассировку процессом легко доступным
Olesya
21.12.2020
// PascalABC.Net 3.0, версия 1066 const mm=50; nn=50; var n,m,i,j,k1,k2,p:integer; s1,s2,s3:longint; a:array[1..mm,1..nn] of integer; begin Write('Число строк и столбцов массива: '); Read(m,n); Write('Значение p: '); Read(p); Writeln('*** Сгенерированный массив ***'); Randomize; s1:=0; s2:=0; s3:=0; k1:=0; k2:=0; for i:=1 to m do begin for j:=1 to n do begin a[i,j]:=Random(101)-50; Write(a[i,j]:4); if a[i,j]>30 then s1:=s1+a[i,j]; if Odd(a[i,j]) then Inc(k1) else begin s2:=s2+a[i,j]; Inc(k2) end; if i+j=p then s3:=s3+a[i,j] end; Writeln end; Writeln('Сумма элементов массива, больших 30: ',s1); Writeln('Количество нечетных элементов массива: ',k1); Writeln('Среднее арифметическое четных элементов массива: ',s2/k2); Writeln('Сумма элементов массива c суммой индексов ',p,': ',s3) end.
s=a+b;
Если s будет объявлена как integer, а a и b - как long integer (и значения a и b будут превышать диапазон integer), то ячейка s переполнится и s будет равно не пойми чему.
2) Для корректной работы
s=a+b;
s - integer; a,b - double - некорректно.
3) Чтобы не было неиспользуемой памяти.
Если i изменяется от 1 до 10, а для переменной объявлен тип double, то при выполнении программы будут "висеть" незаполненные ячейки памяти, выделенные под этот тип.