Стереофайл с частотой дискретизации 48кгц и глубиной кодирования 24 бита преобразовали в монофайл с частотой дискретизации 24 кгц и глубиной кодирования 16 бит. во сколько раз исходный файл больше полученного?
// pascalabc.net 3.0, сборка 1088 const nn=100; var a: array[1..nn] of integer; i,n,k,max,f2,f1,fib: integer; begin write('введите количество элементов в массиве (1-100): '); read(n); randomize; writeln('*** сформированный массив ***'); max: =0; for i: =1 to n do begin a[i]: =random(100)+1; write(a[i],' '); if max< a[i] then max: =a[i] end; writeln; // заменяем элементы, равные числам фибоначчи, на -1 k: =0; f1: =1; fib: =1; while fib< =max do begin for i: =1 to n do if a[i]=fib then begin a[i]: =-1; inc(k) end; f2: =f1; f1: =fib; fib: =f1+f2 end; if k> 0 then begin // удаляем элементы, равные -1 writeln('*** результирующий массив ***'); for i: =n downto 1 do begin if a[i]=-1 then begin if i< > n then for k: =i to n-1 do a[k]: =a[k+1]; dec(n); end; end; for i: =1 to n do write(a[i],' '); writeln end else writeln('числа фибоначчи не обнаружены') end. тестовое решение: введите количество элементов в массиве (1-100): 20 *** сформированный массив *** 21 51 15 38 52 35 42 51 16 53 96 3 53 82 87 12 55 37 93 19 *** результирующий массив *** 51 15 38 52 35 42 51 16 53 96 53 82 87 12 37 93 19
buriginast5
22.11.2020
// pascalabc.net 3.0, сборка 1088 const nn=100; function sov(n: integer): boolean; var i,s: integer; begin s: =0; for i: =1 to n div 2 do if n mod i = 0 then s: =s+i; sov: =(s=n) end; var a: array[1..nn] of integer; i,n,k: integer; begin write('введите количество элементов в массиве (1-100): '); read(n); randomize; writeln('*** сформированный массив ***'); for i: =1 to n do begin a[i]: =random(1000)+1; write(a[i],' ') end; writeln; writeln('*** найденные совершенные числа ***'); k: =0; for i: =1 to n do if sov(a[i]) then begin write(a[i],' '); inc(k) end; if k=0 then writeln(' к сожалению, не нашли ни одного') end. тестовое решение: введите количество элементов в массиве (1-100): 100 *** сформированный массив *** 890 171 531 345 764 347 433 602 368 51 490 271 310 249 96 365 751 521 951 501 646 467 24 698 23 580 902 950 154 607 263 333 625 92 454 302 661 323 806 761 989 645 606 739 87 151 231 804 990 496 422 805 982 664 178 424 148 833 322 184 446 484 449 761 789 158 647 219 796 794 704 429 715 190 513 1 861 285 612 872 349 99 960 659 185 458 352 961 914 31 155 828 1 622 316 505 197 845 951 930 *** найденные совершенные числа *** 496 vba excel 2003 function sov(n as integer) as boolean dim i as integer, s as integer s = 0 for i = 1 to n / 2 if n mod i = 0 then s = s + i next i sov = (s = n) end function sub main() dim n as integer, i as integer, k as integer cells.clear n = val(inputbox("введите количество элементов в массиве: ")) redim a(1 to n) as integer randomize timer cells(1, 1).value = "*** сформированный массив ***" for i = 1 to n a(i) = int(1000 * rnd) + 1 cells(i + 1, 1).value = a(i) next i k = 0 cells(1, 5).value = "*** найденные совершенные числа ***" for i = 1 to n if sov(a(i)) then cells(k + 2, 5) = a(i) k = k + 1 end if next i if k = 0 then cells(1, 5).value = "" msgbox "совершенных чисел не найдено" end if end sub
вес одной секунды стерео-файла: 48000*24*2 бит
вес одной секунды моно-файла: 24000*16*1 бит
(48000*24*2): (24000*16*1) = (2*24*2) : 16 = 6.
исходный файл больше в 6 раз.