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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.02.2009, 11:38   #1
ciaonataha
Форумчанин
 
Регистрация: 12.02.2009
Сообщений: 150
По умолчанию rabota s if i else

est GHSER[k][l][i][j], kotoroe zadaetsya v function void GHSER(double GHSER[][][][][])
i est void range_temperature (double Tr[][]), gde zadaetsya matritsa c temperaturami.
Mne nado preobrazovat' GHSERs[i][j]=GHSER[p][l][i][j]..Tak, chto bi v funstsii "temperature" temperatura:
dlya kagdoi phazi [l] nugno naiti GHSER[p][l][i][j]

naprimer, dlya phazi for (l=0; k=0; k<n; k++) //k-temperatura

Код:
if  ((T==Tr[k][l])  ||  (T==Tr[k+1][l])) ((p=k) || (p=k+1)) 

     else if ((T-Tr[k][l])>0 && (T-Tr[k+1][l])<0) p=k;
      for (i=0; i<m; i++)
        for (j=0; j<m; j++)
//posle etogo matritsa GHSER[p][l][i][j] dolgna perepisatsya v matritsu GHSERs[i][j]   i    p i l dolgni opredelyatsya avtomaticheski
              GHSERs[i][j]=GHSER[p][l][i][j];
naprimer:
vvogu T=300, togda v matritse Tr vibirautsya znacheniya:

Tr[0][0]=300; Tr[0][1]=300; Tr[0][2]=300;
Tr[1][0]=1000; Tr[1][1]=500; Tr[1][2]=400;
Tr[2][0]=1200; Tr[2][1]=6000; Tr[2][2]=1000;
Tr[3][0]=6000; Tr[3][1]=1e9; Tr[3][2]=1e9;

p i l fiksiruetsya i ishet v matritse void GHSER(double GHSER[][][][][]) vse znacheniya s ficsirovannimi p i l
zatem prisvaevaet ix GHSERs[i][j]..Po idee dolgno bit' raspechatano 3 matritsi 2*2 dlya kagdoi phazi (ferrite, cementite i austenit). A mne raspechativaet odnu matritsu, zapolnennuu 0.0000.Pomogite pogaluista naiti oshibku. I eshe moget kto znaet, kak rabotat' s takimi matritsami, ne zadavaya ix tochnix razmerov?


Код:
void (*nrtemperature)(double Tr[4][3]);
void (*nrGHSER)(double GHSERp[4][3][2][2]);
void (*site_fraction)(double y[4][3]);
void range_temperature (double Tr[4][3])
{
//ferrite:cйmentite:epsilon
 Tr[0][0]=300;  Tr[0][1]=300;  Tr[0][2]=300;  
 Tr[1][0]=1000; Tr[1][1]=500;  Tr[1][2]=400; 
 Tr[2][0]=1200; Tr[2][1]=6000; Tr[2][2]=1000; 
 Tr[3][0]=6000; Tr[3][1]=1e9;  Tr[3][2]=1e9; 
}
void temperature (double T)
{
 int i,j,k,l,p; 
 double Tr[4][3]; 
 double GHSERp[4][3][2][2];
 double GHSERs[2][2];
  (*nrtemperature)(Tr);
  (*nrGHSER)(GHSERp);
 for (k=0; k<4; k++)
   for (l=0; l<3; l++)
   { if ((T==Tr[k][l]) || (T==Tr[k+1][l])) ((p=k) ||(p=k+1));
     else 
       {if ((T-Tr[k][l])>0 && (T-Tr[k+1][l])<0) p=k;}
          for (i=0; i<2; i++)
            for (j=0; j<2; j++)
              GHSERs[i][j]=GHSERp[p][l][i][j];
   }
}
void GHSERk(double GHSERp[4][3][2][2])
{
GHSERp[0][0][0][0]=-3000; /*(300):ferrite:Fe:C*/GHSERp[1][0][0][0]=-1000;/*(1000):ferrite:Fe:C*/GHSERp[2][0][0][0]=-9000; /*(1200):ferrite:Fe:C*/ 
GHSERp[0][0][0][1]=-2000;/*(300):ferrite:Fe:Va*/GHSERp[1][0][0][1]=-1000;/*(1000):ferrite:Fe:Va*/GHSERp[2][0][0][1]=-7500; /*(1200):ferrite:Fe:Va*/ 
GHSERp[0][0][1][0]=-5000;/*(300):ferrite:Cr:C*/GHSERp[1][0][1][0]=-500;/*(1000):ferrite:Cr:C*/GHSERp[2][0][1][0]=-600; /*(1200):ferrite:Cr:C*/ 
GHSERp[0][0][1][1]=-1000;/*(300):ferrite:Cr:Va*/GHSERp[1][0][1][1]=-1000;/*(1000):ferrite:Cr:Va*/GHSERp[2][0][1][1]=-3300; /*(1200):ferrite:Cr:Va*/ 
          
GHSERp[3][0][0][0]=-1000; /*(6000):ferrite:Fe:C*/ 
GHSERp[3][0][0][1]=-1500; /*(6000):ferrite:Fe:Va*/
GHSERp[3][0][1][0]=-1250; /*(6000):ferrite:Cr:C*/
GHSERp[3][0][1][1]=-7500; /*(6000):ferrite:Cr:Va*/  

GHSERp[0][1][0][0]=-200;/*(300):cйmentite:Fe:C*/GHSERp[1][1][0][0]=-7500;/*(500):cйmentite:Fe:C*/GHSERp[2][1][0][0]=-2000; /*(600):cйmentite:Fe:C*/ 
GHSERp[0][1][0][1]=-1000;/*(300):cйmentite:Fe:Va*/GHSERp[1][1][0][1]=-6000;/*(500):cйmentite:Fe:Va*/GHSERp[2][1][0][1]=-6000; /*(600):cйmentite:Fe:Va*/ 
GHSERp[0][1][1][0]=-6000;/*(300):cйmentite:Cr:C*/GHSERp[1][1][1][0]=-700;/*(500):cйmentite:Cr:C*/GHSERp[2][1][1][0]=-6100; /*(600):cйmentite:Cr:C*/ 
GHSERp[0][1][1][1]=-5000;/*(300):cйmentite:Cr:Va*/GHSERp[1][1][1][1]=-2100;/*(500):cйmentite:Cr:Va*/GHSERp[2][1][1][1]=-2100; /*(600):cйmentite:Cr:Va*/ 
          
GHSERp[3][1][0][0]=-1500; /*(1e9):cйmentite:Fe:C*/ 
GHSERp[3][1][0][1]=-1200; /*(1e9):cйmentite:Fe:Va*/
GHSERp[3][1][1][0]=-1150; /*(1e9):cйmentite:Cr:C*/
GHSERp[3][1][1][1]=-6100; /*(1e9):cйmentite:Cr:Va*/
I toge samoe dlya epsilon phzi..Ogranichennoe kolichestvo simvolov ne pozvolyaet napisat' vse polnost'u
Код:
}
void myfuncs_gibbse_comp_Fe_Cr_C (double T)
{
   int i,j;
   //double T=300;
   double y[4][3];
   double GHSERs[2][2];

   nrGHSER = GHSERk;
   nrtemperature = range_temperature;
   site_fraction = sites;
   temperature (T);
   for(i=0; i<2; i++)
    {
     for(j=0; j<2; j++)
      {
        printf ("%f\t",GHSERs[i][j]);
      }
   printf("\n");  
    }
}
Модератор: тег CODE

Последний раз редактировалось MaTBeu; 23.02.2009 в 18:53.
ciaonataha вне форума Ответить с цитированием
Старый 23.02.2009, 12:51   #2
ciaonataha
Форумчанин
 
Регистрация: 12.02.2009
Сообщений: 150
По умолчанию dopolnenie

toest' mne nugno preobrazovat' matritsu GHSERp[p][l][i][j] v matritsu GHSERs[i][j]; matritsu y[i][l] v vectore y[i]; matritsu L[p][l][i][j][k][m][n] v matritsu L[i][j][k][m][n] tak chtobi
ciaonataha вне форума Ответить с цитированием
Старый 24.02.2009, 21:02   #3
Svetlag
Пользователь
 
Аватар для Svetlag
 
Регистрация: 24.02.2009
Сообщений: 85
По умолчанию

У вас условие :
Код:
if ((T==Tr[k][l]) || (T==Tr[k+1][l])) ((p=k) ||(p=k+1));
     else 
       {if ((T-Tr[k][l])>0 && (T-Tr[k+1][l])<0) p=k;}
Если я правильно поняла, вы хотите такое:
Код:
if ((T==Tr[k][l]) || ((T-Tr[k][l])>0 && (T-Tr[k+1][l])<0) ) p=k;
else 
if (T==Tr[k+1][l]) p=k+1;
Модератор: тег CODE а не HTML

Последний раз редактировалось MaTBeu; 24.02.2009 в 22:44.
Svetlag вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Rabota s matritsami ciaonataha Общие вопросы C/C++ 1 20.02.2009 20:21