Раздел: Задачи / Простейшие /

Программа вычисления суммы

Основы программирования 2.0 Основы программирования
Каждый профессионал когда-то был чайником. Наверняка вам знакомо состояние, когда “не знаешь как начать думать, чтобы до такого додуматься”. Наверняка вы сталкивались с ситуацией, когда вы просто не знаете, с чего начать. Эта книга ориентирована как раз на таких людей, кто хотел бы стать программистом, но совершенно не знает, как начать этот путь. Подробнее...

Условие задачи 2.4

Задача 2.4
Написать программу для вычисления суммы по формуле:

S = (1*2) / (3*4) + (3*4) / (5*6) + … + (85*86) / (87*88)

Хотя в учебнике, из которого я взял эту задачу, она помечена звёздочкой (что означает средний уровень сложности), особых затруднений её решение не должно вызвать даже у новичка, если, конечно, он знает, что такое циклы.

Итак, как вы уже догадались, составить программу вычисления суммы по заданной выше формуле можно, используя цикл.

Алгоритм будет несложным. Мы используем четыре переменных для работы с множителями и одну переменную (Sum) для вычисления суммы:

  1. Сначала мы определяем первый множитель (n1) и присваиваем ему значение 1.
  2. Затем в цикле:
    1. Увеличиваем значения остальных множителей (n2, n3, n4) таким образом, чтобы в первой итерации n2, n3 и n4 были равны соответственно 2, 3 и 4. А последующих итерациях они также будут зависеть от значения первого множителя n1.
    2. Вычисляем выражение (n1 * n2) / (n3 * n4) и прибавляем его к значению переменной Sum.
  3. В итоге после завершения цикла будет вычислена нужная нам сумма.

Ниже приведены решения на Паскале и С++.

Решение задачи 2.4 на Паскале

program summa;

const
  MAX_NUM = 85;

//****************************************************************
// ГЛОБАЛЬНЫЕ ПЕРЕМЕННЫЕ
//****************************************************************
var
  n1, n2, n3, n4  : Integer;
  Sum             : Single;

//****************************************************************
// ОСНОВНАЯ ПРОГРАММА
//****************************************************************
begin
  Sum := 0;
  n1 := 1;
  while n1 <= MAX_NUM do
    begin
      n2 := n1 + 1;
      n3 := n2 + 1;
      n4 := n3 + 1;
      Sum := Sum + (n1 * n2) / (n3 * n4);
      Inc(n1, 2);
    end;
  WriteLn('Summa = ', Sum:0:4);
  WriteLn('The end. Press ENTER...');
  ReadLn;
end.

Решение задачи 2.4 на С++

#include 
#include 

using namespace std;

const int MAX_NUM = 85;  

//****************************************************************
// ОСНОВНАЯ ПРОГРАММА
//****************************************************************
int main(int argc, char *argv[])
{
  int n1, n2, n3, n4;
  float Sum;
  
  Sum = 0;
  n1 = 1;
  while (n1 <= MAX_NUM)
  {
    n2 = n1 + 1;
    n3 = n2 + 1;
    n4 = n3 + 1;
    Sum = Sum + float(n1 * n2) / float(n3 * n4);
    n1 = n1 + 2;
  }
  cout << "Summa = " << Sum << endl;  
  
  system("PAUSE");
  return EXIT_SUCCESS;
}

ВАЖНО! Обратите внимание на строку в примере на С++, которая выделена красным цветом. Результат выражений (n1 * n2) и (n3 * n4) мы явно преобразуем к типу float. Если этого не сделать, то деление первого выражения на второе вернёт ноль, так как n1...n4 - это целочисленные переменные. Поэтому нам надо либо объявлять n1...n4 как float, либо явно преобразовывать их в тип float. Вот такой вот С++ заморочистый язык.


Как стать программистом 2.0 Как стать программистом 2.0

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

Помощь студентам. Курсовые, дипломы, чертежи (КОМПАС), задачи по программированию: Pascal/Delphi/Lazarus; С/С++; Ассемблер; языки программирования ПЛК; JavaScript; VBScript; Fortran; Python и др. Разработка (доработка) ПО ПЛК (предпочтение - ОВЕН, CoDeSys 2 и 3), а также программирование панелей оператора, программируемых реле и других приборов систем автоматизации. Подробнее...

Инфо-МАСТЕР ®
Все права защищены ©
e-mail: mail@info-master.su

Яндекс.Метрика