Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.05.2010, 08:55   #1
justso
Инженеришка
Форумчанин
 
Аватар для justso
 
Регистрация: 18.05.2010
Сообщений: 147
По умолчанию Проблема с выводом данных в С++

Пишу программу для сбора данных для дальнейшего построения графиков.

Вот вся программа (обратите внимание на выделение):
Код:
#include <iostream>
#include <cmath>
#include <fstream>
using namespace std;
#define PI 3.14159265

int main (void)
{
    int i=0, j=0;
    long double Tg, Ti, T, Tsafe, density, c, r, k, mu, mus, V, vis, time_step, V2, vel_inc, time=0, h, rate_of_change, change_in_temperature;
    double RED, Pr, muf;
    ofstream outfile1;  
    ofstream outfile2;  
    ofstream outfile3;
    
    outfile1.open("Project1VelH.out");
    outfile2.open("Project1TimeTemp.out"); 
    outfile3.open("Project1TotalTime.out");

    cout<< "This program calculates the parameters of cooling a copper sphere with the gas stream of given properties and velocity." <<endl;
    cout<< "\nPlease enter initial temperature of the sphere(C): --> ";
    cin>>Ti;
    cout<< "\nPlease enter gas temperature(C): --> ";
    cin>>Tg;
    cout<< "\nPlease enter safe handling temperature(C): --> ";
    cin>>Tsafe;
    cout<< "\nPlease enter sphere density (kg/m^3): --> ";
    cin>>density;
    cout<< "\nPlease enter sphere specific heat(J/kgK): --> ";
    cin>>c;
    cout<< "\nPlease enter sphere radius(m): --> ";
    cin>>r;
    cout<< "\nPlease enter desired time step for temperature history(s): --> ";
    cin>>time_step;
    cout<< "\nPlease enter gas properties:\nThermal Conductivity k (w/mK): -->";
    cin>>k;
    cout<< "\nPrandt Number for gas stream: --> ";
    cin>>Pr;
    cout<< "\nViscosity of Gas Stream at Tbulk (Ns/m^2): --> ";
    cin>>mu;
    cout<< "\nViscosity of Gas Stream at Tsurface (Ns/m^2): --> ";
    cin>>mus;
    cout<< "\nKinematic viscosity of gas stream (m^2/s): --> ";
    cin>>vis;
    cout<< "\nPlease enter gas stream velocities to test (initial, final, incriment (m/s)): --> ";
    cin>>V >> V2 >> vel_inc;
    
  
   
   double As = 4*PI*pow(r,2);
    double m = (density*4*PI*pow(r,3))/3;
    
     outfile1 << "\nVelocity        H\n\n";
     outfile3 << "Time needed to cool    Velocity\n\n";
   while (V<=V2)
   {T = Ti;

         RED = (V*2*r)/vis;
   muf = mu/mus;
   h = (k/(2*r))*(2+(0.4*pow(RED,0.5)+0.06*pow(RED,0.667))*pow(Pr,0.4)*pow(muf,0.25));
   cout << "H = " <<h;
  
   outfile1 << V << "        " << h <<endl;
   
   outfile2 << "Testing for Velocity " <<V <<"\n\n";
   outfile2 << "Time(s)       Temp(C)\n";
   while (T>=Tsafe+0.099)
   {
        cout << time << "     " << T << endl;
         outfile2 << time << "     " << T << endl;
   rate_of_change=(h*As*(Tg-T))/(m*c);
   change_in_temperature = time_step*rate_of_change;
   T = T + change_in_temperature;
    time = time + time_step;}
    outfile2 <<"\n\n\n\n\n\n\n";
   
     outfile3 << time <<"                " << V << endl;
    V=V+vel_inc;
    i=i+1;
    time=0;
    }
        system("pause");
    
    return 0;
}

Когда строка double m = (density*4*PI*pow(r,3))/3; находится в подобном состоянии, то я получаю один результат финального времени.

Если же я заменяю pow(r,3) на r*r*r, то результат иной. r = вводимая константа.
Объясните, что правильно и почему так. Уже 3 часа бьюсь.

Заранее благодарна.
Ацко 342512564: Если по делу - то в случае острой необходимости. Если просто так - то в любое время.

Последний раз редактировалось justso; 19.05.2010 в 09:30.
justso вне форума Ответить с цитированием
Старый 19.05.2010, 10:20   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Во-первых: Нечего кросспостить. Сделала тему - все. Нужно будет модераторы перенесут.
Во-вторых:
Проверил так:
Код:
#include <cmath>

int _tmain(int argc, _TCHAR* argv[])
{
	double density=2,r=3,PI=3.1415926;
	double m = (density*4*PI*pow(r,3))/3;
	double q = (density*4*PI*(r*r*r))/3;
    
	return 0;
}
Результ одинаков полностью. так что что-то у тебя в другом месте не так.

Какие данные ты вводишь?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.05.2010, 10:34   #3
justso
Инженеришка
Форумчанин
 
Аватар для justso
 
Регистрация: 18.05.2010
Сообщений: 147
По умолчанию

r всегда одинакова и равняется 0.005. Остальное все меняется в зависимости от материала. Я проверяла, ошибка только в массе m, так как коеффициент теплопроводности h высчитывает правильно. Неверно лишь где-то тут:

Код:
rate_of_change=(h*As*(Tg-T))/(m*c);
   change_in_temperature = time_step*rate_of_change;
   T = T + change_in_temperature;
    time = time + time_step;
Так как именно тут используется m, я предположила что ошибка в ней.

Может где-то есть деление на int или что то вроде этого... это моя единственная мысль.
Ацко 342512564: Если по делу - то в случае острой необходимости. Если просто так - то в любое время.
justso вне форума Ответить с цитированием
Старый 19.05.2010, 11:04   #4
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

у вас за счет PI, при делении на int всегда будет double
NiCola999 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проблема с выводом в делфи shelest Помощь студентам 5 02.03.2010 20:12
Структура, содержащая массивы и матрицу данных - проблема с записью и/или выводом flexin Общие вопросы C/C++ 6 09.01.2010 19:42
проблема с вводом/выводом revan-8 Общие вопросы C/C++ 10 09.07.2009 20:54
проблема с выводом данных из таблицы. помогите поправить france@ PHP 4 07.01.2009 12:46
Проблема с выводом текста limon PHP 6 30.11.2008 20:03