IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Си, Ошибка 9
сообщение
Сообщение #1


Профи
****

Группа: Пользователи
Сообщений: 920
Пол: Женский
Реальное имя: Марина

Репутация: -  2  +


вот задание:
составить прогарамму для вычисления в точках 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);
}





проблема в том, что выдаёт ошибку 9

fatal..\include\stdio.h 9:unable to create output file 'c:\borland\bin\lab_11.obj'
я думаю, причина в заполнение directories, прикрипляю изображение (вверху)

Сообщение отредактировано: 18192123 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Вообще-то обычно Output Directory и Source Directories оставляют пустыми, чтобы компиляция производилась в текущую папку...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


Убери doc-файл
Правила запрещают... лучше jpeg

Сообщение отредактировано: мисс_граффити -


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Профи
****

Группа: Пользователи
Сообщений: 920
Пол: Женский
Реальное имя: Марина

Репутация: -  2  +


Цитата(volvo @ 14.02.2007 21:41) *

Вообще-то обычно Output Directory и Source Directories оставляют пустыми, чтобы компиляция производилась в текущую папку...

спасибо, буду знать.
так и сделала, но теперь выдаёт сообщение....(см. прикреплённый документ)


Сообщение отредактировано: 18192123 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






Во-первых, это не ошибка, а предупреждение - ты не использовала в программе значения x_i и b, хотя и присвоила им значения (компилятор просто удивляется, зачем присваивать, если потом не использовать?) А во-вторых, на вопросы с DOC файлами больше ответов не будет, эти посты будут просто удаляться...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Профи
****

Группа: Пользователи
Сообщений: 920
Пол: Женский
Реальное имя: Марина

Репутация: -  2  +


Цитата(volvo @ 14.02.2007 21:52) *

Во-первых, это не ошибка, а предупреждение - ты не использовала в программе значения x_i и b, хотя и присвоила им значения (компилятор просто удивляется, зачем присваивать, если потом не использовать?) А во-вторых, на вопросы с DOC файлами больше ответов не будет, эти посты будут просто удаляться...

прошу прощения.
больше не повториться.

но тогда почему не выводится никаких результатов?

Добавлено через 15 мин.
Цитата(18192123 @ 14.02.2007 21:56) *

прошу прощения.
больше не повториться.

но тогда почему не выводится никаких результатов?

подредактировала программу:


#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);
}




выводит только максимальное значение, а среднего нету...объясните причину этого....

Сообщение отредактировано: 18192123 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Профи
****

Группа: Пользователи
Сообщений: 920
Пол: Женский
Реальное имя: Марина

Репутация: -  2  +


В принципе, с выводом получилось....
но периодически получаемые значения меняются...

#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);
}


 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






x_0 = a + i*h;
В этой строке, по-твоему, чему равно i ?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


а ради чего переменная i делается double, еще и глобальной (в рамках функции main)?
она же нужна только в рамках цикла как счетчик?
другие переменные - тоже посмотри внимательно...

и еще - отступы. намного легче будет читаться код с ними...


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Профи
****

Группа: Пользователи
Сообщений: 920
Пол: Женский
Реальное имя: Марина

Репутация: -  2  +


вот мой окончательный вариант....но вот только когда пытаюсь вывести значение ф-ции в кадой точке х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);
}


 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Гость






С++ это тебе не Паскаль smile.gif

h = (b-a)/n;
вычисляется как 0, потому как компилятор берет только целую часть результата (один из операндов - n - целое число)... Чтобы заставить программу вычислять h как положено - делаем так:
h = (double)(b-a) / n;

Теперь сначала результат (b - a) приведется к типу double, а потом (при делении) компилятор не будет брать только целую часть, т.к. было ЯВНОЕ приведение типа, а раз так - значит, программист это сделал сознательно, и именно это он хочет получить.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Профи
****

Группа: Пользователи
Сообщений: 920
Пол: Женский
Реальное имя: Марина

Репутация: -  2  +


Цитата(volvo @ 16.02.2007 23:49) *

С++ это тебе не Паскаль smile.gif

h = (b-a)/n;
вычисляется как 0, потому как компилятор берет только целую часть результата (один из операндов - n - целое число)... Чтобы заставить программу вычислять h как положено - делаем так:
h = (double)(b-a) / n;

Теперь сначала результат (b - a) приведется к типу double, а потом (при делении) компилятор не будет брать только целую часть, т.к. было ЯВНОЕ приведение типа, а раз так - значит, программист это сделал сознательно, и именно это он хочет получить.

спасибо большое! теперь всё ясно!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 2.10.2020 2:43
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name