ООП в С++

За вознаграждение или нахаляву (если повезёт)

Модераторы: Хыиуду, MOTOCoder, Medved, dr.Jekill

Ответить
Vanya
Сообщения: 7
Зарегистрирован: 30 май 2004, 09:35

07 мар 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;
}
Ответить