1 / 13

Лекция №5

Лекция №5. Программирование типовых алгоритмов вычислений Информатика. 1. Вычисление суммы и произведения. Пусть требуется вычислить сумму значений некоторой последовательности s = а 1 + а 2 + ... + а 20 = , где а i – массив исходных данных.

yuri
Download Presentation

Лекция №5

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Лекция №5 Программирование типовых алгоритмов вычислений Информатика

  2. 1. Вычисление суммы и произведения • Пусть требуется вычислить сумму значений некоторой последовательности s = а1 + а2 + ... + а20 = , где аi – массив исходных данных. • При вычислении суммы используется прием накопления по выражению s = s + ai, i = 1,2,..., n. Начальное значение суммы принимается равным нулю (s = 0). При первом выполнении цикла (i=1) вычисляется значение s = 0 + a[1], на втором шаге (i = 2) – значение s = (0 + a[1]) + a[2] или s = s + a[2]. В результате повторения этой операции 20 раз получим искомую сумму.

  3. Вычисление суммы и произведения • Аналогично вычисляется и произведение z = a1a2  ... an = , но с той разницей, что для его накопления используется выражение P = P *ai , а начальное значение произведения должно быть равно единице (P=1). Пример. Дана последовательность значений b1, b2, …, b10.Вычислить сумму отрицательных элементов массива, превышающих значение переменной mи произведение положительных элементов данного массива.

  4. ProgramPrim1; varb:array[1..10]of real; i: integer; P,s,m: real; Begin writeln(’Введите m’); readln(m); fori:=1 to 10 do begin writeln(’Введитеb’,i); readln(b[i]); end; s:=0; p:=1; fori:=1 to 10 do begin if(b[i]>0) and (b[i]>m) then s:=s+b[i]; if(b[i]<0) then p:=p٭b[i]; end; writeln(’s=’,s:8:2,’ p=’,p:8:2); End.

  5. Схема алгоритма и программа вычисления суммы и произведения Program SumPr; var a:array[1..20]of real; i: integer; P,s: real; Begin for i:=1 to 20 do begin writeln(’Введите а’,i); readln(a[i]);end; s:=0.0; p:=1; for i:=1 to 20 do begin s:=s+a[i]; p:=p٭a[i];end; writeln(’s=’,s:10, ’ p=’,p:10); End.

  6. 2. Вычисление n-фактериала: Дано целое число n=15, вычислить n!, (т.е. 1*2*3* … *15). f:=1; for i:=1 to 15 do f:=f٭i; 3. Нахождение наибольшего (наименьшего) значения и порядкового номера Пример. В массиве плотностей десяти химических элементов (d1, d2, ..., d10) найти элемент с наибольшей плотностью (dmax) и его порядковый номер (n). Нахождение наибольшего (наименьшего) значения из последовательности чисел осуществляется при помощи алгоритма попарного сравнения. В качестве начального значения наибольшего (наименьшего) принимается первый элемент массива (dmax=d[1,1]), с которым сравниваются все остальные элементы массива.

  7. Если сравниваемый член последовательности больше dmax, то dmaxприсваивается его значение, в противном случае dmax остается без изменения. Можно за начальное приближение dmax принять число, которое заведомо меньше (больше) всех элементов массива, например 10–5 (dmax=1E-5). В том случае, когда не требуется нахождение самого значения максимального (минимального) элемента массива, а требуется определить только его номер, алгоритм поиска номера будет следующий: Nmax:=1; For i:=2 to 10 do if d[i]> d[Nmax] then Nmax:= i;

  8. Program Max; vard:array[1..10]ofreal; dmax:real; i,n:integer; Begin fori:=1 to 10 do readln(d[i]); dmax:=d[1]; fori:=2 to 10 do if d[i]>dmaxthen begin dmax:=d[i]; n:=i end; writeln(’dmax=’, dmax:10:3,’ n=’,n:3); End.

  9. 4.Нахождение количества чисел Пример. Вычислить средний тепловой эффект (SH) экзотермических реакций (Н1, Н2, ..., Н10) химико–технологического процесса. Для того, чтобы найти средний тепловой эффект, необходимо найти суммарный тепловой эффект (SumH) и количество реакций (n) с отрицательными значениями Нi .

  10. ProgramTepl; var H:array[1..10]ofreal; SumH,SH:real; i,k:integer; Begin fori:=1 to 10 do readln(H[i]); SumH:=0; k:=0; fori:=1 to 10 do if H[i]<0 then begin Sum:=SumH+H[i]; k:=k+1; end; SH:=SumH/k; writeln(’SH=’,SH:10; ’ k=’,k:3); End.

  11. Количество элементовможно также вычислить, используя стандартную функцию inc(k): fori:=1 to 10 do ifH[i]<0 theninc(k); writeln(‘k=’,k:3); • Пример алгоритма использования функции odd(x) Вычислить сумму и количество элементов массива С1, С2, . . . ,С15, стоящих на нечетных местах и произведение положительных элементов, расположенных на четных местах. S:=0; P:=1; fori:=1 to 15 do begin ifodd(i)then begin inc(k); S:=S+C[i] end; if(С[i]>0)andnot(odd(i))then P:=P*C[i]; end; writeln(‘k=’,k:3,’ S=’,S:7:2,’ P=’,P:7:2);

  12. 5. Преобразование массивов Пример. Дан массив энтальпий экзо– и эндотермических реакций образования химических соединений: Н1, Н2, ..., Н20. Сформировать массив (Нр1, Нр2, ..., Нрк), состоящий из положительных значений энтальпий и массив, состоящий из отрицательных значений энтальпий (Но1, Но2, ..., Ноn). Обозначим: k, n – количество положительных и отрицательных элементов в массивах Нр и Но соответственно.

  13. ProgramEntalp; typemas=array[1..20]ofreal; varH,Hp,Ho:mas; k,n,i:integer; Begin fori:=1 to 20 do readln(H[i]); k:=0;n:=0; fori:=1 to 20 do if H[i]>0 then begin k:=k+1; Hp[k]:=H[i]; end else begin n:=n+1; Ho[n]:=H[i];end; fori:=1 to k do writeln(Hp[i]:10,’ ’); writeln; fori:=1 to n do writeln(Ho[i]:10,’ ’);End.

More Related