Ты нуп!
У меня время сесть подумать только ночью щас!
И вообще пишу навскидку, доделать до программы самостоятельно
1.1. Составить алгоритм и программу вычис¬ления таблицы значений функции f(x) для N значений аргумента X, равномерно распределенных на отрезке [A,B]. Для проверки программы задать N=10; A=0,55; B=1.
#include math
double pi = 3.14159265359;
//функция на C++
double f(double x)
{
double y = (mod(sin(sqrt(10.5*x)))/(pow(x*x,1/3)-0,143)) + 2*pi*x;
return y;
}
double * get_values(double A, double B, int N)
{
double * ret = new double[N];
// Если N=1 то ошибка, ну не может быть одного значения на отрезке
if (N == 1 && B == A) { ret[0] = B; return ret; }
double i, step = (B-A)/(N-1);
int j;
for (i = A, j=0 ; i<=B ; i+= step, j++)
{
ret[j] = f(i);
}
return ret;
}
результат который возвращает get_value - это требуемый массив значений функции
Добавлено (27.12.08, 01:07)
---------------------------------------------
1.2
1. Начиная с января, на счет клиента в начале месяца переводится Z руб. (заработная плата) и снимается К руб. (коммунальные услуги); в конце месяца производится начисление р% от накопленной суммы. Вывести, сколько денег будет на счете в начале каждого месяца в течение года, если начальный вклад равен нулю.
progress(double summ, double K, double Z, double p, double month)
{
summ = (summ + K - Z) * (1+p/100);
printf("%i - %.2d\r\n", month, summ);
if (month < 12) progress(summ,K,Z,p,month+1);
}
функция выводит сумму в каждом месяце
первый вызов
progress(0,K,Z,p,1);
Добавлено (27.12.08, 01:08)
---------------------------------------------
Писец, Эш, позор, линейка тебе моск выжгла
Добавлено (27.12.08, 01:11)
---------------------------------------------
1. Ежемесячная зарплата служащего составляет Z руб.. В январе он перечислил на счет в банке половину зарплаты, в феврале—одну треть, в марте—одну четверть, и т.д. Ежемесячная ставка банка равна р%. Вычислить сумму, накопленную на счете к концу года.
progress(double summ, double Z, double p, double month)
{
summ = (summ + Z/(1 + month))*(1+p/100);
if (month < 12) progress(summ,Z,p,month+1);
else printf("Сумма - %.2d\r\n", summ);
}
progress(0,Z,p,1);
Добавлено (27.12.08, 01:15)
---------------------------------------------
1. Ежемесячная зарплата служащего составляет Z руб.. В январе он перечислил на счет в банке половину зарплаты, в феврале —одну треть, в марте —одну четверть, и т. д. Ежемесячная ставка банка равна р%. Определить, через сколько месяцев накопленная сумма превысит заданное значение С. Рассматривать срок не более года.
progress(double summ, double Z, double p, double C, double month)
{
summ = (summ + Z/(1 + month))*(1+p/100);
if (month < 12)
{
if (summ>C)
{
printf("Прошло %i месяцев, и заданное значение не достигнуто.", month);
}
else progress(summ,Z,p,C,month+1);
}
else printf("Год закончился, а заданное значение не достигнуто. Текущее значение- %.2d\r\n", summ);
}
progress(0,Z,p,C,1);
Добавлено (27.12.08, 01:22)
---------------------------------------------
Составить программу для решения уравнения f(х) = 0 на отрезке [А,В] с точностью Е методом деления отрезка пополам. Метод состоит в последовательном приближении к корню за счет уменьшения отрезка, на котором находится корень. Каждое новое приближение Х находится как середина текущего отрезка. Границы текущего отрезка выбираются из условия противоположности знака f(х) на его границах. Вычисление корня заканчивается, когда длина отрезка станет меньше Е.
Для проверки программы задать А 0, В 2, Е = 10-4.
double f(double x)
{
return (ln(1=x) + (10/3)*pow(e,0.01*x)) /2*sqrt(x) - x;
}
double calc(double A, double B, double E)
{
if (B double C = (B-A)/2;
if ((B-A) <= E) return C; // Решение
double Y = f©;
if (Y<0) return calc(C,B,E);
return calc(A,C,E);
}
результат calc(0,2,0.0001)
Добавлено (27.12.08, 01:29)
---------------------------------------------
Найти произведение, сомножители которого представлены каждым третьим членом (X1,X4,X7 и т. д.) заданного массива X1,X2,...,Xn.
double calc(double * X, int N /*количество элементов*/
{
double ret = X[0];
for (int i=3 ; i {
ret *= X[i];
}
return ret;
}
При заданной величине А и заданных элементах X1,X2,..., Xn; Y1,Y2,...,Yn определить число произведений вида XiYi, удовлетворяющих условию XiYiА, и сумму таких произве¬дений.
void calc(double * X, double * Y, int N, double A)
{
int count =0 ;
double summ = 0;
for (int i=0; i {
if ((X[i] * Y[i]) {
summ += X[i] * Y[i];
count ++;
}
}
// вывести summ и count
}
Добавлено (27.12.08, 01:46)
---------------------------------------------
Составить программу нахождения заданного экстремального элемента или его порядкового номера при заданном одномерном массиве А из n элементов (или массивах А и С по n элементов в каждом).
Определить наименьшую из разностей |Аi| - |Аn-i+1| (n - чет¬ное).
double calc(double A, int N)
{
double cmin = mod(A[0]) - mod(A[N-1]);
for (int i=1;i {
double c = mod(A[i]) - mod(A[N-i-1]);
if (c }
}
Задано N точек на плоскости.
Записать логическое выражение, соответствующее заданной области истинности.
Составить программу для:
• подсчета количества точек, попавших в заданную об¬ласть.
• формирования массива из координат точек, попавших в заданную
выражение истиннсти для точки (x,y)
FFF(x,y): ((sqrt(x*x + y*y)<=2) && (mod(mod(x)+mod(y)) >= 1)
void f(double[2] * p, int N)
{
int count = calc(p,N);
double [2] * points = pt(p,N, count);
}
int calc(double[2] * p, int N)
{
int ret = 0;
for (int i=0 ; i {
if (FFF(p[i][0],p[i][1])) ret ++;
}
return ret;
}
double[2] * pt(double[2] * p, int N, int count)
{
// вот здесь не уверен, а проверять лень
double[2] * ret = new (double[2])[count];
int j =0;
for (int i=0 ; i {
if (FFF(p[i][0],p[i][1]))
{
ret[j][0] = p[i][0];
ret[j][1] = p[i][1];
j++;
}
}
return ret;
}
Добавлено (27.12.08, 01:48)
---------------------------------------------
Не в натуре забодался уже, и ушел спать