Экспоненциа́льная за́пись — представление действительных чисел в виде мантиссы и порядка. Удобна при представлении очень больших и очень малых чисел, а также для унификации их написания.
{\displaystyle N=M\cdot n^{p}} N=M\cdot n^{p}, где
1 000 000 (один миллион): {\displaystyle 1{,}0\cdot 10^{6}} 1{,}0\cdot 10^{6}; N = 1 000 000, M = 1,0, n = 10, p = 6.
1 201 000 (один миллион двести одна тысяча): {\displaystyle 1{,}201\cdot 10^{6}} 1{,}201\cdot 10^{6}; N = 1 201 000, M = 1,201, n = 10, p = 6.
−1 246 145 000 (минус один миллиард двести сорок шесть миллионов сто сорок пять тысяч): {\displaystyle -1{,}246145\cdot 10^{9}} -1{,}246145\cdot 10^{9}; N = −1 246 145 000, M = −1,246145, n = 10, p = 9.
0,000001 (одна миллионная): {\displaystyle 1{,}0\cdot 10^{-6}} 1{,}0\cdot 10^{{-6}}; N = 0,000001, M = 1,0, n = 10, p = −6.
0,000000231 (двести тридцать одна миллиардная): {\displaystyle 231\cdot 10^{-9}=2{,}31\cdot 100\cdot 10^{-9}=2{,}31\cdot 10^{2}\cdot 10^{-9}=2{,}31\cdot 10^{-9+2}=2{,}31\cdot 10^{-7}} 231\cdot 10^{{-9}}=2{,}31\cdot 100\cdot 10^{{-9}}=2{,}31\cdot 10^{2}\cdot 10^{{-9}}=2{,}31\cdot 10^{{-9+2}}=2{,}31\cdot 10^{{-7}}; N = 0,000000231, M = 2,31, n = 10, p = −7.
Const Letters = ['a'..'z', 'A'..'Z']; LineEnds = [#13, #10, #0, '.']; MAX_LEN = 255; var txt: array [0..MAX_LEN] of char; bnd: array [0..MAX_LEN, 0..1] of integer; tsz, bsz: integer; // размеры массивов isLetter, isWord, f1, f2: boolean; i, j: integer; begin repeat read(txt[tsz]);
// Определение границ слов isLetter := txt[tsz] in Letters; if isLetter and not isWord then bnd[bsz, 0] := tsz; if isWord and not isLetter then begin bnd[bsz, 1] := tsz; bsz := bsz + 1; end;
isWord := isLetter; tsz := tsz + 1; until txt[tsz-1] in LineEnds;
if bsz > 1 then begin for i := 0 to bsz-2 do begin j := 0; f2 := true; f1 := (bnd[bsz-1, 1] - bnd[bsz-1, 0]) = (bnd[i, 1]-bnd[i, 0]); // совпадение длин
while (j < bnd[i, 1] - bnd[i, 0]) and f2 do begin f1 := f1 and (txt[bnd[i, 0] + j] = txt[bnd[bsz-1, 0] + j]); f2 := f2 and (LowCase(txt[bnd[i, 0] + j]) = Chr(Ord('a') + j)); j := j + 1; end;
// вывод if f2 and not f1 then begin for j := bnd[i, 0] to bnd[i, 1] - 1 do write(txt[j]); writeln; end; end; end; end.
Экспоненциа́льная за́пись — представление действительных чисел в виде мантиссы и порядка. Удобна при представлении очень больших и очень малых чисел, а также для унификации их написания.
{\displaystyle N=M\cdot n^{p}} N=M\cdot n^{p}, где
N — записываемое число;
M — мантисса;
n — основание показательной функции;
p (целое) — порядок;
{\displaystyle n^{p}} n^{p} — характеристика числа.
Примеры:
1 000 000 (один миллион): {\displaystyle 1{,}0\cdot 10^{6}} 1{,}0\cdot 10^{6}; N = 1 000 000, M = 1,0, n = 10, p = 6.
1 201 000 (один миллион двести одна тысяча): {\displaystyle 1{,}201\cdot 10^{6}} 1{,}201\cdot 10^{6}; N = 1 201 000, M = 1,201, n = 10, p = 6.
−1 246 145 000 (минус один миллиард двести сорок шесть миллионов сто сорок пять тысяч): {\displaystyle -1{,}246145\cdot 10^{9}} -1{,}246145\cdot 10^{9}; N = −1 246 145 000, M = −1,246145, n = 10, p = 9.
0,000001 (одна миллионная): {\displaystyle 1{,}0\cdot 10^{-6}} 1{,}0\cdot 10^{{-6}}; N = 0,000001, M = 1,0, n = 10, p = −6.
0,000000231 (двести тридцать одна миллиардная): {\displaystyle 231\cdot 10^{-9}=2{,}31\cdot 100\cdot 10^{-9}=2{,}31\cdot 10^{2}\cdot 10^{-9}=2{,}31\cdot 10^{-9+2}=2{,}31\cdot 10^{-7}} 231\cdot 10^{{-9}}=2{,}31\cdot 100\cdot 10^{{-9}}=2{,}31\cdot 10^{2}\cdot 10^{{-9}}=2{,}31\cdot 10^{{-9+2}}=2{,}31\cdot 10^{{-7}}; N = 0,000000231, M = 2,31, n = 10, p = −7.
Объяснение: както так
Letters = ['a'..'z', 'A'..'Z'];
LineEnds = [#13, #10, #0, '.'];
MAX_LEN = 255;
var
txt: array [0..MAX_LEN] of char;
bnd: array [0..MAX_LEN, 0..1] of integer;
tsz, bsz: integer; // размеры массивов
isLetter, isWord, f1, f2: boolean;
i, j: integer;
begin
repeat
read(txt[tsz]);
// Определение границ слов
isLetter := txt[tsz] in Letters;
if isLetter and not isWord then
bnd[bsz, 0] := tsz;
if isWord and not isLetter then begin
bnd[bsz, 1] := tsz;
bsz := bsz + 1;
end;
isWord := isLetter;
tsz := tsz + 1;
until txt[tsz-1] in LineEnds;
if bsz > 1 then begin
for i := 0 to bsz-2 do begin
j := 0; f2 := true;
f1 := (bnd[bsz-1, 1] - bnd[bsz-1, 0]) = (bnd[i, 1]-bnd[i, 0]); // совпадение длин
while (j < bnd[i, 1] - bnd[i, 0]) and f2 do begin
f1 := f1 and (txt[bnd[i, 0] + j] = txt[bnd[bsz-1, 0] + j]);
f2 := f2 and (LowCase(txt[bnd[i, 0] + j]) = Chr(Ord('a') + j));
j := j + 1;
end;
// вывод
if f2 and not f1 then begin
for j := bnd[i, 0] to bnd[i, 1] - 1 do
write(txt[j]);
writeln;
end;
end;
end;
end.