Вопрос по С++

lordъ

jerk it out
как записать нахождение интеграла, значение которого при увеличении верхней границы стремится в отрицательную область значений?
Код:
......
      dobule v, t1=298;
..... 
	for(t2=299;v>0;t2++)
		{
		h=(t2-t1)/n;
		for (i=0; i<n; i++)
		s+=f(t1+i*h+h/2);
		v=h*s;
      }
 

dreamer

Member
как записать нахождение интеграла, значение которого при увеличении верхней границы стремится в отрицательную область значений?
Код:
......
      dobule v, t1=298;
..... 
	for(t2=299;v>0;t2++)
		{
		h=(t2-t1)/n;
		for (i=0; i<n; i++)
		s+=f(t1+i*h+h/2);
		v=h*s;
      }
Формула интеграла при этом не меняется. Только у вас там бесконечный цикл. Это нормально?
 

lordъ

jerk it out
не издевайтесь над бедным химиком, вот код весь
Kichrum посмотрел у него были замечания. но программа всеравно отказывается считать.
 

dreamer

Member
не издевайтесь над бедным химиком, вот код весь
Kichrum посмотрел у него были замечания. но программа всеравно отказывается считать.
А-а, ну вы не так сформулировали. Кстати цикл не бесконечный, недоглядел я. А как отказывается? Кричит «не буду считать!» и выключает комп? :)
 

lordъ

jerk it out
тонко. нет, конечно можно сделать дебаг по считаемым переменным но мне и так по загрузке проца видно что после ввода переменным цикл выполняется но результата нет. хотя 2 года назад считал по таким же данным в эксель, как то все получилось.
 

dreamer

Member
тонко. нет, конечно можно сделать дебаг по считаемым переменным но мне и так по загрузке проца видно что после ввода переменным цикл выполняется но результата нет. хотя 2 года назад считал по таким же данным в эксель, как то все получилось.
Добавьте в цикл строку вида
Код:
printf("I[%lf : %lf] = %lf\n", t1, t2, v);
вам будет проще.
Вы знаете примерно на каком t2 интеграл должен стать отрицательным?
Может вы слишком далеко от этой точки?
 

Ashtaret

Филаретовый пизироq
есть структура sz
Код:
struct SZ { char name[10];
				int amount;
				double price; } sz;
мы считываем с 1 файла это все дело и должны записать во второй файл только если слова начинаются на "Monitor":

while (true) {
nread=myFile.Read(&sz,sizeof(SZ));
if (nread!=sizeof(SZ)) break;
if (sz.name[0]=='M')
if (sz.name[1]=='o')
if (sz.name[2]=='n')
if (sz.name[3]=='i')
if (sz.name[4]=='t')
if (sz.name[5]=='o')
if (sz.name[6]=='r')
myFile1.Write(&sz,sizeof(SZ));
}
но когда допустим нужно найти минимальную цену
Код:
min=999999;
while (true) {
		nread=myFile.Read(&sz,sizeof(SZ));
		if (nread!=sizeof(SZ)) break;
			if (sz.name[0]=='M')
		if (sz.name[1]=='o')
		if (sz.name[2]=='n')
		if (sz.name[3]=='i')
		if (sz.name[4]=='t')
		if (sz.name[5]=='o')
		if (sz.name[6]=='r')
                if(sz.price<min){
                min = sz.price; //min мы используем в другой ф-ции, просто нужно покачто получить минимальную цену
			myFile1.Write(&sz,sizeof(SZ));}
		}
то в 2 файл незаписывает нечего, вообще несоберусь в чем проблема.
 

Пух

كنت بلهاء
Модератор
ну этот кусок кода был готов))
+ вроде стркмп сравнивает полностью 2 строки, а не начало пременной ?)
тогда ищи первое вхождение и проверяй индекс начала этого вхождения. А если б было слово не монитор, а "достопримечательность" ?)
 
Зверху