PDA

Просмотр полной версии : ООП в С++



Vanya
07.03.2005, 18:44
Привет всем! Подскажите пожалуйста как решить эти задачи с помощью ООП, или хотя бы идею как решать, сам курс ООП на Си++ у нас очень маленький - всего 9 дней, а сроки сдачи короткие.

1)даны действительные числа x, eps (x<>0, eps>0
Вычислить сумму с точностью eps:
( - 1)^n
знак суммы от 0 до бесконечности ----------------- * ( x / 2 )^2n+1
n! (n + 1)!

2) написать программу для обработки матрицы, элементы матрицы вводить из текстового файла,
дано целое число N, сформировать матрицу:

N N-1 ..... 2 1
0 N ..... 3 2
A[i,j] = . . . . . . . . . .
0 0 ..... N N-1
0 0 ..... J N

3) Решение нелинейных уравнений
методом секущих: e^x - 10^x = 0 на отрезке [0, 1]

1. Отделить графическим способом корни уравнения и выбрать начальное приближение или начальный интервал (в зависимости от метода).
2. Уточнить указанным методом корень уравнения с заданной точностью.
3. Повторяющиеся вычисления оформить в виде функции.
4. Результат решения задачи: корень уравнения, заданная точность, число потребовавшихся для нахождения корня итераций.

4) Численное интегрирование
методом модифицированных прямоугольников: интеграл с пределами интегрирования от 0 до 3, подынтегральная функция: под корнем x^2 - 4

1.Написать программу для вычисления определенного интеграла с заданной точностью. В каче-стве тестового примера использовать заданный вариант.
2.Оформить в виде функции:
• вычисление интеграла с заданной точностью;
• вычисление интеграла с заданным числом разбиений интервала интегрирования;
• вычисление значения подынтегральной функции.
3.Функции вычисления интеграла разместить в отдельном файле.
4.Имя подынтегральной функции передавать в качестве параметра.
5.Предусмотреть обработку ситуации, когда заданная точность не может быть достигнута..

5) Требования к заданию:
1. Создания пользовательского интерфейса ( глобальное и локальное меню, окна, подсказки, и т.п.)
2. Использование технологии модульного программирования (разделение программы на функции, группировка функций и связанных с ними данных в отдельные файлы).

Исходные данные хранятся в файле
____________________________________________
} | | |
| Наименование товара | Цена | Срок реализации |
| ____________________|______|_________________|

Составить список товаров с просроченным сроком реализации(на текущую дату).
Использовать структурные переменные.

первую я уже сдеалал! Но только компилятор выдает ошибку : divide by 0. Хотя все проверял, что на 4-м шаге итерации должны завершится


# include <iostream.h>
# include <conio.h>
# include <complex.h>
double pow (double, double);
long fact (long);
long fact (long n)
{
if (n == 1.0 || n == 0)
return 1;
return n * fact (n - 1);
}

class Summa
{
private:
double S; //сумма
double x; //переменная
double eps; //точность вычислений
public:
Summa (double S, double x, double eps);
double formula (void);
};

Summa :: Summa (double S, double x, double eps)
{
Summa :: S = S;
Summa :: x = x;
Summa :: eps = eps;
}

double Summa :: formula (void)
{
double S_pred, // предыдущая сумма
S_tek; //текущая сумма
long
n, // номер элемента суммы
chis; //множитель отвечающий за 1 в степени n
S_pred = S_tek = 0;
n = 1;
do
{
chis = (n % 2 == 0) ? 1 : -1;
S_pred = S + chis * pow (x / 2.0, 2 * n + 1) / (fact (n) * fact (n - 1));
cout<<"S_pred = "<< S_pred<<endl;
S = S_pred;
n++;
chis = (n % 2 == 0) ? 1 : -1;
S_tek = S + chis * pow (x / 2, 2 * n + 1) /
(fact(n) * fact(n - 1));
cout<<"S_tek = "<< S_tek<<endl;
}
while (abs(S_tek - S_pred) < eps);
return S;
}

int main()
{
clrscr();
Summa SM (0, 1, 0.0001);
cout<< "сумма = "<<SM.formula() <<endl;
getch();
return 0;
}

Nucleus
25.05.2005, 10:29
http://freesoft.ru/?id=9728&name=%D1%EF%F0%E0%E2%EE%F7%ED%E8%EA-%EF%EE-c++builder-7