Правила для оформления решений задач

Все результаты контрольных, домашних или индивидуальных заданий высылать в форме правил и примеров указанных ниже.

В каждом почтовом отправлении в теме письма(subject) указывать через запятую:

1. Предмет(Кратко) – С++ или С# или BASH и тд.
2. Группу
3. Тип работы: контрольная/домашняя/индивидуальное задание  
4. Дату контрольной или дату выдачи задания в формате DD.MM.YYYY

Примеры:
С#, PV-12, домашняя работа, 21.11.2013
Unix, PV-11, контрольная работа, 7.11.2013


Результат работы:

1. Программа/решение должно компилироваться/работать!!!
2. Для проверки перешли задачу однокласнику и пусть он проверит сможет ли он скомпилировать и запустить проект!!!
3. Текст программы/решение должно быть прикреплено к письму в виде фйла или архива проекта, не превышающего 10 мбайт
4. Тип архива zip или rar

В теле письма указать:

1. Номер задачи, при необходимости буква подзадачи
2. Название источника задачи (название задачник или ссылка на задачник в интернете)
3. Определение задачи, по возможности точно, если есть формула которую не возможно в письме написать описать характер этой формулы или дать ссылку на нахождение задачи в интернете
4. Словесное описание решения
5. Текст тела программы или решения в формате  указанном ниже в следующем разделе
6. Комментарий к программе, возможные недопонимания или завышенный уровень сложности по отношению к определению задачи. Проблемы при решении.
 
В теле программы удалить всякие строчки не относящиеся к выполнению программы. Тело должно содержать следующие элементы:

1. Блок определения используемых заголовков и установок препроцессора
2. При необходимости определение глобальных переменных, функций, классов
3. Содержимое функции
main()
3a. Определение переменных используемых в функции main()
3b. Вычисление или действия необходимые для решения задачи, возможен вывод промежуточных результатов
3c. Вывод конечных результатов

Сама программа должна быть структурирована табуляторами или пробелами
CodeBlocks правой кнопкой мыши на тексте программы „Format this file(AStyle)“ ) и содержать внятные комментарии описывающие смысл действия или выражения предпочтительно на русском языке или на латиннице(в классе):

1. для каждого включаемого заголовочного файла
2. по каждой определяемой функции и передаваемым параметрам
3. по каждой определяемой переменной
4. по каждому используемому выражению
5. при использовании любого оператора условного ветвления или цикла




Задача 77д из задачника Абрамова
Определение задачи:
Вычисление ряда вложенных квадратных корней, где каждый следующий член вычисляется на базе значения предыдущего члена этого ряда по формуле sqrt(2+sqrt(2+sqrt(2+sqrt(2+sqrt(2+sqrt(2+sqrt(2+sqrt(2)))))))) ,
где вложение повторяется заданное количество раз.
В указанном случае повтор операции осуществлялся 8 раз, где первый элемент получается вычислением квадратного корня из 2-ух, а каждый следующий элемент получается вычислением квадратного корня из суммы числа 2 и значения предыдущего элемента ряда.

Решение:
Будем использовать for цикл для вычисления элементов ряда и их суммирования.

#include <iostream>  // стандартный заголовочный файл
#include <cmath>     // указываем заголовочный файл для включения библиотеки математики
using namespace std; // определяем пространство имён

int main()
{
    int i;           // счётчик повторов для for цикла
    int n=10;        // количество повторов вычислений
    double r=0.0f;   // результат повторяемых вычислений, в начале равен 0
    // повторяем цикл n раз, где i меняется от 1 до n
    for(i=1; i<=n; i++) // в данном случае повторяем 10 раз, где i меняется от 1 до 10
    { 
        // вычисление по заданной формуле в каждом цикле
        r=sqrt (2+r); // в данном случае квадратный корень из суммы предыдущего значения и 2-х
        // следующую строку при здаче требуется закомментировать !!
        cout << "r=" << r << endl; // для проверки выводим промежуточный результат
    }
    cout << "r=" << r << endl; // выводим конечный результат
    return 0; // заканчиваем программу с результатом 0 (без ошибок)
}

Комментарий:
Мы ущё не проходили ряды в школе.
Задача оказалась слишком сложной.
Мне помог учитель/одногрупник справится.
____________________________________________________________________________

Задача 77е из задачника Абрамова

Определение задачи:
вычисление произведения элементов ряда, где каждый элемент ряда вычисляется как деление суммы косинусов от 1 до n на сумму синусов от 1 до n

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

#include <iostream> // стандартный заголовочный файл
#include <cmath>    // указываем заголовочный файл для включения библиотеки матем.функций и определений

using namespace std;  // определяем пространство имён

int main()
{
    int i;    // счётчик повторов для внешнего цикла
    int n=10; // количество повторов вычислений произведения
    int j;    // счётчик повторов для внутреннего цикла, изменяется от 1 до значени i в текущий момент
    double r=1.0f;  // результат повторяемых вычислений, в начале равен 1, так как производится перемножение элементов
    double e;       // переменная для промежуточного хранения значения элемента ряда
    double s=1.0f;  // результат суммы синусов для делимого, в начале равен 0, так как суммируется
    double c=1.0f;  // результат суммы косинусов для делителя, в начале равен 0, так как суммируется

    for(i=1; i<=n; i++) // повторяем вычисление элементов ряда n раз
    {
        for(j=1; j<=i; j++)    // повторяем вычисление для суммы синусов и косинусов (j - i + 1) раз
                               // j изменяется от 1 до значения i - текущего элемента ряда
        {
            // в формуле (double)j - преобразует целочисленное значение j
            //
в число с плавающей точкой, двойной точности
            // что бы во время вычислений не возникало неоднозначностей
            // при суммировании целого и числа с плавающей точкой
            c = c + cos((double)j); // вычисляем сумму синусов для делимого элемента ряда номер i
            s = s + sin((double)j);  // вычисляем сумму синусов для делителя элемента ряда номер i
        }
        e = c / s; // вычисление значения элемента ряда - сумма косинусов делится на сумму синусов
        r = r * e; // вычисление произведения значения предыдущего произведения на значение текущего элемента
        // проверочный вывод промежуточного результата вычислений
        //cout << "Sum of cos() " << c << endl;         // для суммы косинусов
        //cout << "Sum of sin() " << s << endl;          // для для суммы синусов
        cout << "            c / s " << r << endl;          // для результата их деления
    }
    cout << "Result is " << r << endl; // вывод результата работы программы
   
    return 0;  // заканчиваем программу с результатом 0 (без ошибок)
}

Комментарий:
Я не понял как решать задачу с рядами. Слишком сложно.
Мне помог одногрупник справится.