[attachmentid=5194]вот задание:
составить прогарамму для вычисления в точках xi=a+i*h, i=0,1,2…,n, h=(b-a)/n промежутка [a,b] наибольшего и среднего значений функции y=f(x), x[–2; –1], n = 10
#include <stdio.h>
#include <MATH.H>
void main ()
{
double n=10, a=-2, b=-1, h, s, max, x_i, y_i, sredn, x_0, i;
x_0 = a + i*h;
max = pow ( log(1-x_0)/ log( 2), 1/3) + tan (1 + 1/x_0)/( sqrt ( fabs(x_0)) -2);
s=max;
for ( i=1; i<=10; i++)
{
x_i=a + i*h;
y_i= pow ( log(1-x_0)/ log( 2), 1/3) + tan (1 + 1/x_0)/( sqrt ( fabs(x_0)) -2);
if (y_i>max)
{
max = y_i;
}
s = s+y_i;
}
sredn = s/(n+1);
printf ("¬ ЄбЁ¬ «м®Ґ § 票Ґ = %10f\n", max, "б।ҐҐ § 票Ґ = %10f\n", sredn);
}
Вообще-то обычно Output Directory и Source Directories оставляют пустыми, чтобы компиляция производилась в текущую папку...
Убери doc-файл
Правила запрещают... лучше jpeg
Во-первых, это не ошибка, а предупреждение - ты не использовала в программе значения x_i и b, хотя и присвоила им значения (компилятор просто удивляется, зачем присваивать, если потом не использовать?) А во-вторых, на вопросы с DOC файлами больше ответов не будет, эти посты будут просто удаляться...
#include <stdio.h>
#include <MATH.H>
void main ()
{
double n=10, a=-2, b=-1, h, s, max, x_i, y_i, sredn, x_0, i;
h = (b-a)/n;
x_0 = a + i*h;
max = pow ( log(1-x_0)/ log( 2), 1/3) + tan (1 + 1/x_0)/( sqrt ( fabs(x_0)) -2);
s=max;
for ( i=1; i<=10; i++)
{
x_i=a + i*h;
y_i= pow ( log(1-x_i)/ log( 2), 1/3) + tan (1 + 1/x_i)/( sqrt ( fabs(x_i)) -2);
if (y_i>max)
{
max = y_i;
}
s = s+y_i;
}
sredn = s/(n+1);
printf ("¬ ЄбЁ¬ «м®Ґ § 票Ґ = %10f\n", max, "б।ҐҐ § 票Ґ = %10f\n", sredn);
}
В принципе, с выводом получилось....
но периодически получаемые значения меняются...
#include <stdio.h>
#include <MATH.H>
void main ()
{
double n=10, a=-2, b=-1, h, s, max, x_i, y_i, sredn, x_0, i;
h = (b-a)/n;
x_0 = a + i*h;
max = pow ( log(1-x_0)/ log( 2), 1/3) + tan (1 + 1/x_0)/( sqrt ( fabs(x_0)) -2);
s=max;
for ( i=1; i<=10; i++)
{
x_i=a + i*h;
y_i= pow ( log(1-x_i)/ log( 2), 1/3) + tan (1 + 1/x_i)/( sqrt ( fabs(x_i)) -2);
if (y_i>max)
{
max = y_i;
}
s = s+y_i;
}
{sredn = s/(n+1); printf ("c।ҐҐ § 票Ґ = %f\n", sredn);
}
printf ("¬ ЄбЁ¬ «м®Ґ § 票Ґ = %f\n", max, "c।ҐҐ § 票Ґ = %f\n", sredn);
}
x_0 = a + i*h;В этой строке, по-твоему, чему равно i ?
а ради чего переменная i делается double, еще и глобальной (в рамках функции main)?
она же нужна только в рамках цикла как счетчик?
другие переменные - тоже посмотри внимательно...
и еще - отступы. намного легче будет читаться код с ними...
вот мой окончательный вариант....но вот только когда пытаюсь вывести значение ф-ции в кадой точке хi-тое, получается одно и тоже....
#include <stdio.h>
#include <MATH.H>
void main ()
{
int n=10, a=-2, b=-1, i;
double h, s, max, x_i, y_i, sredn, x_0;
h = (b-a)/n;
s = 0;
x_0 = a ;
max = pow ( log(1-x_0)/ log( 2), 1/3) + tan (1 + 1/x_0)/( sqrt ( fabs(x_0)) -2);
printf (" при х_0 = %f", x_0);
printf (" значение ф-ции = %f\n", max);
s=max;
for ( i=1; i<=10; i++)
{
x_i=a + i*h;
y_i= pow ( log(1-x_i)/ log( 2), 1/3) + tan (1 + 1/x_i)/( sqrt (fabs(x_i)) -2);
printf (" при х_i = %f", x_i);
printf (" значение ф-ции = %f\n", y_i);
if (y_i>max)
max = y_i;
s = s+y_i;
}
sredn = s/(n+1); printf ("среднее значение = %f\n", sredn);
printf ("максимальное значение = %f\n", max);
}
С++ это тебе не Паскаль
h = (b-a)/n;вычисляется как 0, потому как компилятор берет только целую часть результата (один из операндов - n - целое число)... Чтобы заставить программу вычислять h как положено - делаем так:
h = (double)(b-a) / n;
h = (b-a)/n;вычисляется как 0, потому как компилятор берет только целую часть результата (один из операндов - n - целое число)... Чтобы заставить программу вычислять h как положено - делаем так:
h = (double)(b-a) / n;