Напишите программу которая находит минимальное и максимальное среди чётных положительных чисел, записенных в файле, и выводит результат в другой файл. учтите что таких чисел может вообще не быть
Const lim=2000000; var d,max,min:longint; f:Text; begin Assign(f,'input.txt'); Reset(f); max:=-lim; min:=lim; while not Eof(f) do begin Readln(f,d); if (d>0) and (d mod 2=0) then if max<d then max:=d else if min>d then min:=d; end; Close(f); Assign(f,'output.txt'); Rewrite(f); if min<>lim then Writeln(f,min,' ',max); Close(f); end.
sebastianpereira994
28.03.2020
//PascalABC.Net 3.0, сборка 1064 const n=20; var a:array[1..n] of integer; i,imax,imin:integer; s:longint; begin Randomize; Writeln('Исходный ряд значений'); imax:=1; imin:=1; for i:=1 to n do begin a[i]:=Random(51)-25; Write(a[i],' '); if a[i]>a[imax] then imax:=i else if a[i]<a[imin] then imin:=i end; Writeln; if imax>imin then Writeln('Максимальный элемент встретился позже минимального') else begin s:=0; for i:=imax+1 to imin-1 do s:=s+a[i]; Writeln('Сумма элементов между максимальным и минимальным значением ',s) end end.
Тестовое решение: Исходный ряд значений 10 -3 9 5 20 10 6 2 -19 -19 6 -24 -7 -1 23 11 -8 -16 -14 -25 Сумма элементов между максимальным и минимальным значением -27
Анна1169
28.03.2020
Если речь о результатах, то в компьютерной арифметике числа представляются в двоичном коде, а точность их представления обычно ограничена разрядностью процессора. Для проведения расчетов с неограниченной точностью используются специальные алгоритмы с представлением чисел в виде символьных строк. При использовании двоичной арифметики приходится сталкиваться с тем, что большинство нецелых чисел невозможно точно представить в двоичной системе, как нельзя, например, в десятичной системе точно представить в виде десятичной дроби число 1/3 = 0.333 Рассмотрим пример. Если в простых дробях (1/3) х 3 = 1, то в десятичных 0.3333 х 3 = 0.9999. В двоичной машинной арифметике происходит аналогичная ситуация. Но если человек сознает, что результат 0.9999... - та же единица, то компьютер этого не понимает. В результате в компьютерной арифметике (1 / 3) х 3 не равняется единице. Еще пример. Пусть нам надо вычислить значение функции в точках от -2π до 2π с шагом π/6. Человек будет использовать значения -2π, -11π/6, -10π/6 и т.д. пока не придет к точке 2π. Компьютер (в арифметике с обычной точностью) вычислит значение -2π как -6.283185, а шаг представит значением 0.5235988. Это приведет к тому, что когда мы придем к нулю, то получим значение аргумента -9.536743х10⁻⁷, а в конечной точке получим аргумент 6.283184, который по абсолютной величине отличается от начального на единицу в младшей цифре, т.е. для компьютера при таком последовательном счете |-2π| ≠ 2π. Третий пример. отрицательные целые числа представляются в компьютере в дополнительном коде, когда старший разряд является знаковым: 0 - это плюс, 1 - это минус. Пусть мы прибавляем к 127 единицу в арифметике целых чисел, которым в двоичном представлении отведен один байт: 1111111₂ + 1₂ = 10000000₂ - тут все понятно, единичка перешла в старший, восьмой разряд. Но ведь он ЗНАКОВЫЙ! И вместо двоичного эквивалента 128 в компьютерной арифметике мы получаем отрицательное число! Причем, что самое интересное, из соображений эффективности эта ситуация обычно аппаратно не контролируется и в результате программы могут вести себя очень странно.
Ответить на вопрос
Поделитесь своими знаниями, ответьте на вопрос:
Напишите программу которая находит минимальное и максимальное среди чётных положительных чисел, записенных в файле, и выводит результат в другой файл. учтите что таких чисел может вообще не быть
lim=2000000;
var
d,max,min:longint;
f:Text;
begin
Assign(f,'input.txt'); Reset(f);
max:=-lim; min:=lim;
while not Eof(f) do begin
Readln(f,d);
if (d>0) and (d mod 2=0) then
if max<d then max:=d
else if min>d then min:=d;
end;
Close(f);
Assign(f,'output.txt'); Rewrite(f);
if min<>lim then Writeln(f,min,' ',max);
Close(f);
end.