М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
sasha3756245
sasha3756245
30.06.2020 13:53 •  Информатика

Дано натуральное число n. вычислить: s=1/1! - 1/2! - 1/3! 1/n! написать это в паскале!

👇
Ответ:
пятка1980
пятка1980
30.06.2020
Чтобы уменьшить количество вычислений, преобразуем формулу к рекуррентной.
\displaystyle S_n= \frac{1}{1!}-\frac{1}{2!}-\frac{1}{3!}-... -\frac{1}{n!} =1-\sum_{i=2}^n \frac{1}{i!}=1-\sum_{i=2}^na_i \\ \\ k!=k\times (k-1)! \\ a_i= \frac{1}{i!}= \frac{a_{i-1}}{i}, a_2= \frac{1}{2}

Теперь все готово для программирования.
// PascalABC.NET 3.2, сборка 1353 от 27.11.2016

var
  i,n:integer;
  a,s:real;
begin
  Write('n='); Read(n);
  if n=1 then Writeln('S=1')
  else
    if n=2 then Writeln('S=0.5')
    else begin
      s:=0.5; a:=0.5;
      for i:=3 to n do begin a:=a/i; s:=s-a end
      end;
  Writeln('S=',s)
end.

Пример
n=10
S=0.281718198853615
4,5(12 оценок)
Открыть все ответы
Ответ:
muzess
muzess
30.06.2020

=В$5+=$А8

Объяснение:

данная формула  содержит смешанную ссылку

В6      =А$5+$А6

Надо скопировать в С8

B6-- C8 ( посмотри что изменилось)

буква была В стала С ( на одну позицию вперед  +1)

цифра 6 изменилась на 8 ( на две позиции   +2)

к формуле    =А$5+$А6 применим эти изменения

но учтем что $ - это абсолютный адрес и он не будет меняться

=А$5

была  А ( на одну позицию вперед)  --- В

$5 при копировании не изменится

=В$5

$А6

при копировании $А ничего не происходит

6 на две позиции увеличиваем =8

=$А8

Тогда   формула  =А$5+$А6  приобретет вид  =В$5+=$А8

4,6(63 оценок)
Ответ:
Zanyt
Zanyt
30.06.2020
Procedure GetWord(s:string; var p:integer; var w:string; delim:string:=' ');
{
 Получает в w слово из строки s, которое начинается не ранее позиции p.
 Возвращает новое значение p, указывающее на первый разделитель delim,
 который следует за найденным словом или 0, если такой разделитель не найден.
 По умолчанию слова разделяются не менее чем одним пробелом
}
var
  i,n:integer;
  fBreak:boolean; { флажок для прерывания циклов }
begin
  n:=Length(s); fBreak:=False;
  {ищем первый символ, отличный от разделителя - начало слова }
  while ((p<=n) and (not fBreak)) do
    if (p=n) or (s[p]<>delim) then fBreak:=True
    else Inc(p);
  { ищем очередной разделитель - конец слова }
  if p<n then begin
    i:=p; Inc(p); fBreak:=False;
    while (p<=n) and (not fBreak) do begin
      if (p=n) or (s[p]=' ') then fBreak:=True else Inc(p)
    end;
  { теперь слово находится между позициями i и p }
  w:=Copy(s,i,p-i)
  end;
  if p>=n then p:=0
end;

function CountG(w:string):integer;
{ возвращает количество гласных в слове w}
var
  i,k:integer;
begin
  k:=0;
  for i:=1 to length(w) do
    if w[i] in ['а','е','ё','и','о','у','ы','э','ю','я'] then Inc(k);
  CountG:=k
end;

var
  s,w,wmax:string;
  p,k,gmax:integer;
begin
  Writeln('Введите текст, разделяя слова пробелами');
  Readln(s);
  s:=LowerCase(s);
  p:=1; gmax:=0;
  while p>0 do begin
    GetWord(s,p,w);
    k:=CountG(w);;
    if gmax<k then begin gmax:=k; wmax:=w end
  end;
  if gmax>0 then Writeln('В слове "',wmax,'" максимум гласных, равный ',gmax)
  else Writeln('Во введенной строке гласных букв не найдено')
end.
4,4(28 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ