profile
Размещено 4 года назад по предмету Информатика от Cristallo

Информатики, помогите пожалуйста решить в Паскале
Вычислить сумму S=2X+4X+6X+...+20X

  1. Ответ на вопрос
    Ответ на вопрос дан Аккаунт удален
    1.1. Количество нечетных чисел в заданном промежутке можно легко найти, зная что нечетные числа следуют через одно, чередуясь с четными. Конечно, можно написать в программе цикл и перебрать все нечетные элементы, каждый раз добавляя по +1 в счетчик количества, но гораздо проще воспользоваться знаниями из математики. Легко видеть, что нечетные числа образуют арифметическую прогрессию с разностью d=-2, начальный член a1=7, а конечный член an=-3.
    Вспомним формулу для n-го члена арифметической прогрессии и получим из нее n.
    displaystyle a_n=a_1+d(n-1) to n= frac{a_n-a_1}{d}+1
    В соответствии с условиями нашей задачи это будет верно, если a1 и an - нечетные. Если a1 четное, то его надо уменьшить на 1. Аналогично, если an четное, его надо увеличить на 1. Таким образом, мы получаем алгоритм, пригодный для быстрого определения количества нечетных чисел на любом интервале с целочисленными границами.
    Ниже приводится соответствующая программа.

    program p11;
    var
      a,b,n:integer;
    begin
      Write('Введите границы интервала: '); Readln(a,b);
      { защита от неверного порядка ввода }
      if a<b then begin n:=a; a:=b; b:=n end;
      { если надо, корректируем границы на нечет }
      if (a mod 2)=0 then a:=a-1;
      if (b mod 2)=0 then b:=b+1;
      { сам расчет }
      n:=(a-b) div 2 + 1;
      Writeln('Количество нечетных чисел на интервале равно ',n)
    end.

    Тестовое решение:
    Введите границы интервала: -3 7
    Количество нечетных чисел на интервале равно 6

    1.2 В противоположность предложенному решению, где сначала надо было думать, можно использовать "метод грубой силы" (программисты называют его "брутфорс" - от английского bruteforce), т.е. программировать ни о чем не думая.
    Ниже - пример такого решения. Оно более короткое, но при больших интервалах время решения окажется на несколько порядков больше.

    program p12;
    var
      a,b,i,k:integer;
    begin
      Write('Введите границы интервала: '); Readln(a,b);
      { защита от неверного порядка ввода }
      if a<b then begin k:=a; a:=b; b:=k end;
      k:=0;
      for i:=a downto b do
        if (i mod 2)<>0 then k:=k+1;
      Writeln('Количество нечетных чисел на интервале равно ',k)
    end.

    Тестовое решение:
    Введите границы интервала: -3 7
    Количество нечетных чисел на интервале равно 6

    2.1. Тут задача на первый взгляд стандартная и вроде бы думать нечего - в цикле накапливаем сумму:

    program p21;
    var
      i:integer;
      x,s:real;
    begin
      Write('Введите значение x: '); Readln(x);
      s:=0; i:=2;
      while i<=20 do begin s:=s+i*x; i:=i+2 end;
      Writeln('Cумма членов последовательности равна ',s)
    end.

    Тестовое решение:
    Введите значение x: 2.15
    Cумма членов последовательности равна 236.5

    2.2. Но и тут есть место для размышлений. Опять вспоминаем математику.
    displaystyle s=Sigma_{i=2}^{20}(xtimes i),  i=2k,  k in 
mathbb N \ s=xtimes Sigma_{k=1}^{10}(2times 
k)=2xtimesSigma_{k=1}^{10}k
    Но полученная сумма - это сумма арифметической прогрессии с начальным членом, равным единице,  конечным членом, равным 10 и разностью 1. Формула такой суммы известна и мы продолжаем преобразования.
    displaystyle s=2xtimes frac{a_1+a_n}{2}times n=ntimes 
xtimes(a_1+a_n);  \ a_1=1;  a_n=10;  n=a_n-a_1+1=10-1+1=10;  \ 
s=10times xtimes11=110times x
    Теперь можно и программу написать.

    program p22;
    var
      x:real;
    begin
      Write('Введите значение x: '); Readln(x);
      Writeln('Cумма членов последовательности равна ',110*x)
    end.

    Тестовое решение:
    Введите значение x: 2.15
    Cумма членов последовательности равна 236.5

    Пары приведенных решений призваны показать, что первое пришедшее в голову решение обычно всегда не лучшее. А еще - что для качественного программирования надо учить математику.

Не тот ответ на вопрос, который вам нужен?
Найди верный ответ
Самые новые вопросы
tegysigalpa2012
Русский язык - 5 лет назад

Помогите решить тест по русскому языку тест по русскому языку «местоимение. разряды местоимений» для 6 класса 1. укажите личное местоимение: 1) некто 2) вас 3) ни с кем 4) собой 2. укажите относительное местоимение: 1) кто-либо 2) некоторый 3) кто 4) нам 3. укажите вопросительное местоимение: 1) кем-нибудь 2) кем 3) себе 4) никакой 4. укажите определительное местоимение: 1) наш 2) который 3) некий 4) каждый 5. укажите возвратное местоимение: 1) свой 2) чей 3) сам 4) себя 6. найдите указательное местоимение: 1) твой 2) какой 3) тот 4) их 7. найдите притяжательное местоимение: 1) самый 2) моего 3) иной 4) ничей 8. укажите неопределённое местоимение: 1) весь 2) какой-нибудь 3) любой 4) этот 9. укажите вопросительное местоимение: 1) сколько 2) кое-что 3) она 4) нами 10. в каком варианте ответа выделенное слово является притяжательным местоимением? 1) увидел их 2) её нет дома 3) её тетрадь 4) их не спросили

Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.