Создайте Блок-Схему для задачи Дана последовательность из л различных целых чисел. Най- jth сумму ее членов, расположенных между максимальным и ми- нимальным значениями. (В сумму включить и оба этих числа.)
В зависимости от версии компилятора языка Паскаль, вещественные числа по умолчанию выводятся в различном виде. Например, Турбо (Borland) Паскаль выводит их в "научном" представлении, т.е. в виде мантиссы, содержащей один разряд до запятой и десятичного порядка. PascalABC.Net, если может, выводит такие числа в виде привычной десятичной дроби. В приведенном ниже примере значение 4.03099999999977E+0001 читается следующим образом: . Для того, чтобы получать вывод в "привычном" виде, можно использовать форматирование. Для этого, в операторе вывода после значения переменной указывается конструкция вида m:n, где m- общее количество позиций, отводимое под запись числа (если 0 - то количество позиций определяется автоматически так, чтобы число поместилось), а n- количество позиций, отводимое под дробную часть. Такая запись может применяться как для общего описателя типа вещественных чисел real, так и для конкретного (например, double - чисел "двойной точности", т.е. восьмибайтных). В примере хорошо видно, как использование двойной точности отражается на выводе результата в "научном" формате .
Пример на Турбо Паскаль {$G+,N+} uses Crt;
procedure Sum1(a,b,c,d:real;var r:real); begin r:=a+b+c+d end;
procedure Sum2(a,b,c,d:double;var r:double); begin r:=a+b+c+d end;
var e,f,g,h,res1:real; p,q,r,s,res2:double; begin ClrScr; Write('e f g h= '); Read(e,f,g,h); Sum1(e,f,g,h,res1); Writeln('res1= ',res1,' = ',res1:0:2); Write('p q r s= '); Read(p,q,r,s); Sum2(p,q,r,s,res2); Writeln('res2= ',res2,' = ',res2:0:2); ReadKey end.
Тестовое решение: e f g h= 12.74 24.17 -5.6 9 res1= 4.03099999999977E+0001 = 40.31 p q r s= 12.74 24.17 -5.6 9 res2= 4.03100000000000E+0001 = 40.31
Во-первых, X1 < 8, иначе число 2N в 16-ной записи станет 4-значным. Можно написать такую программу поиска этих чисел Начало k = 0 ' Это счетчик чисел, которые мы ищем Цикл по X1 от 1 до 7 Цикл по Y1 от 0 до 15 Цикл по Z1 от 0 до 15 N = X1*256 + Y1*16 + Z1 M = 2*N X2 = Int (M / 256) Y2 = Int ((M - X2*256) / 16) Z2 = M Mod 16 Если (X1+Y1+Z1 = X2+Y2+Z2) And ((X1 = 2) Or (Y1 = 2) Or (Z1 = 2), То k = k + 1 Конец Если Конец цикла по Z1 Конец цикла по Y1 Конец цикла по X1 Вывод k Конец
В приведенном ниже примере значение 4.03099999999977E+0001 читается следующим образом:
Для того, чтобы получать вывод в "привычном" виде, можно использовать форматирование. Для этого, в операторе вывода после значения переменной указывается конструкция вида m:n, где m- общее количество позиций, отводимое под запись числа (если 0 - то количество позиций определяется автоматически так, чтобы число поместилось), а n- количество позиций, отводимое под дробную часть.
Такая запись может применяться как для общего описателя типа вещественных чисел real, так и для конкретного (например, double - чисел "двойной точности", т.е. восьмибайтных). В примере хорошо видно, как использование двойной точности отражается на выводе результата в "научном" формате .
Пример на Турбо Паскаль
{$G+,N+}
uses Crt;
procedure Sum1(a,b,c,d:real;var r:real);
begin
r:=a+b+c+d
end;
procedure Sum2(a,b,c,d:double;var r:double);
begin
r:=a+b+c+d
end;
var
e,f,g,h,res1:real;
p,q,r,s,res2:double;
begin
ClrScr;
Write('e f g h= '); Read(e,f,g,h);
Sum1(e,f,g,h,res1);
Writeln('res1= ',res1,' = ',res1:0:2);
Write('p q r s= '); Read(p,q,r,s);
Sum2(p,q,r,s,res2);
Writeln('res2= ',res2,' = ',res2:0:2);
ReadKey
end.
Тестовое решение:
e f g h= 12.74 24.17 -5.6 9
res1= 4.03099999999977E+0001 = 40.31
p q r s= 12.74 24.17 -5.6 9
res2= 4.03100000000000E+0001 = 40.31