stubborn2
یک شنبه 13 اسفند 1391, 23:49 عصر
سلام دوستان.
من کد نوشتم که ایراد می گیره. موضوعه کد اینه: تلفیق ۲۰ پرسشنامه طراحی شده با ماتریس های مقایسه زوجی (روش ANP) با روش میانگین هندسی، و حل آن با متد توسعه ای چانگ. اشکالی که میگیره همون اوله موقع وارد کردن داده ها. یه مثال بزنم که متوجه موضوع اصلی کد بشید: من می خوام که ۱ شاخص رو با ۳ شاخص مقایسه کنم توسط پرسشنامه. جواب پرسشنامه ها از ۱ تا ۹ می باشد که هر کدام بیانگر یک عدد فازی مثلثی است (۳ تا عدد دارند، آرایه های a). تعداد پرسشنامه ها نا محدوده (n). بعدش این پرسشنامه ها باید ادغام شن با روش میانگین هندسی ( تک تک اعداد باید در هم ضرب شن بدش ریشه n ام رو باید حساب کرد). در آخر هر کدام باید در سطرهای مختلف آرایه s نوشته شن!! (توضیح بقیه اش زیاده و سخته و مشکلی اونجا نداره)
من حدود ۲۰ تا جدول دارم که برای تک تکشون باید این کد رو جدا گونه اجرا کنم با تغییراتی در سایز آرایه ها. اشکالی که به وجود آمده برای بزرگترین جدوله که باید آرایه ی s[9][10][3]s بسازم. اشکالی می گیره اینه: Floating Point:...s. کد رو میزارم هرکی تونست کمکم کنه. ممنونم. راستی واسه سایزهای کوچیک جواب میده. اگه توضیحه دیگه ای لازم بود بگید که بگم
#include <iostream.h>
#include <conio.h>
#include <math.h>
int main ()
{
clrscr();
char a;
long double n;
long double o;
long double a1[]={0.2857,0.3333,0.4}, a2[]={0.3333,0.4,0.5}, a3[]={0.4,0.5,0.6667}, a4[] = {0.5, 0.6667, 1.0L}, a0[]={0.6667,1.0L,2.0L}, a5[]={0.5,1.0L,1.5}, a6[]= {1.0L,1.5,2.0L}, a7[]={1.5,2.0L,2.5}, a8[]={2.0L,2.5,3.0L}, a9[]={2.5,3.0L,3.5};
cout << "Enter Number of datas:";
cin >> n;
long double r[10][3], s[9][10][3];
o = 1 / n;
for(int i =0; i<9; i++)
{
for (int w =0; w<10; w++)
{
long double M[] = {1.0L,1.0L,1.0L};
long double m[] = {1.0L,1.0L,1.0L};
long double f[] ={1.0L,1.0L,1.0L};
for (int j = 0; j < n; j++)
{
cin >> a;
switch (a){
case '1':m[0]=a1[0], m[1] = a1[1]; m[2] = a1[2];
break;
case '2':m[0]=a2[0], m[1] = a2[1], m[2]=a3[2];
break;
case '3':m[0]= a3[0], m[1]= a3[1], m[2]= a3[2];
break;
case '4':m[0]=a4[0], m[1]=a4[1], m[2]=a4[2];
break;
case '5':m[0]=a5[0], m[1]=a5[1], m[2]=a5[2];
break;
case '0':m[0]= a0[0], m[1]= a0[1], m[2]= a0[2];
break;
case '6': m[0]= a6[0],m[1]= a6[1], m[2]= a6[2];
break;
case '7': m[0]= a7[0], m[1]= a7[1], m[2]= a7[2];
break;
case '8': m[0]= a8[0], m[1]= a8[1], m[2]= a8[2];
break;
case '9': m[0]= a9[0], m[1]= a9[1], m[2]= a9[2];
break;
}
M[0] = m[0]*M[0];
M[1] = m[1]*M[1];
M[2] = m[2]*M[2];
}
cout<<"Data"<<"\n";
for (int k = 0; k<3; k++)
{
f[k] = f[k]*M[k];
}
r[w][0] = powl(f[0],o);
r[w][1] = powl(f[1],o);
r[w][2] = powl(f[2],o);
}
for (int q =0; q<10; q++)
{
for (int t=0; t<3; t++)
{
s[i][q][t] = r[q][t];
}
}
}
for (int x =0; x<9; x++)
{
for (int y = 0; y<10; y++)
{
for(int d=0; d<3; d++)
{
cout << s[x][y][d] << "\t";
}
cout << "\n";
}
cout << "\n";
}
long double op[9][1][3];
long double ss[9][10][3];
long double Ss[9][1][3];
for (int c=0; c<9; C++)
{
for (int v =0; v<10; v++)
{
for (int z=0; z<3; z++)
{
ss[c][v][z] += s[c][v][z];
}
Ss[c][0][0] += ss[c][v][0];
Ss[c][0][1] += ss[c][v][1];
Ss[c][0][2] += ss[c][v][2];
}
op[c][0][0] += Ss[c][0][0]+1;
op[c][0][1] += Ss[c][0][1]+1;
op[c][0][2] += Ss[c][0][2]+1;
for(int b=0; b<3; b++)
{
cout << op[c][0][b] << "\t";
}
cout << "\n";
}
long double SSM[1][1][3];
for (int lk=0; lk<9; lk++)
{
SSM[0][0][0] += op[lk][0][0];
SSM[0][0][1] += op[lk][0][1];
SSM[0][0][2] += op[lk][0][2];
}
cout << "\n"<<"\n"<<"Sum"<<"\n";
for(int mn=0; mn<3; mn++)
{
cout << SSM[0][0][mn] << "\t";
}
long double SSSM [1][1][3];
SSSM[0][0][0] = 1 / SSM[0][0][2];
SSSM[0][0][1] = 1 / SSM[0][0][1];
SSSM[0][0][2] = 1 / SSM[0][0][0];
cout << "\n"<<"\n"<<"Divers Sum"<<"\n";
for(int pq=0; pq<3; pq++)
{
cout << SSSM[0][0][pq] << "\t";
}
long double SSMM[9][1][3]={1};
for(int rs=0; rs <9; rs++)
{
for (int lm=0; lm<3; lm++)
{
SSMM[rs][0][lm]= SSSM[0][0][lm] * op[rs][0][lm];
}
cout << "\n"<<"\n"<< "S"<< "\n";
for(int fg=0; fg<3; fg++)
{
cout << SSMM[rs][0][fg] << "\t";
}
}
long double V1[10][9];
long double htg;
for (int tr=0; tr<9; tr++)
{
for (int qe = 1; qe <10; qe++)
{
if (tr+qe<10)
{
if(SSMM[tr][0][1] >= SSMM[qe+tr][0][1])
{
V1[tr][qe+tr-1]= 1;
htg = ((SSMM[qe+tr][0][2] - SSMM[tr][0][0]))/((SSMM[qe+tr][0][2] - SSMM[tr][0][0])+(SSMM[tr][0][1] - SSMM[qe+tr][0][1]));
V1[qe+tr][tr] = fabs(htg);
}
else
{
htg = ((SSMM[tr][0][2] - SSMM[qe+tr][0][0]))/((SSMM[tr][0][2] - SSMM[qe+tr][0][0])+(SSMM[qe+tr][0][1] - SSMM[tr][0][1]));
V1[tr][qe+tr-1] = fabs(htg);
V1[qe+tr][tr] = 1;
}
}
}
}
cout <<"\n"<<"\n"<<"V"<<"\n";
for (int jk=0; jk<10; jk++)
{
for (int kj=0; kj <9; kj++)
{
cout << V1[jk][kj] <<"\t";
}
cout << "\n";
}
long double temp;
for (int ef=0; ef<10; ef++)
{
for (int gh=1; gh<9; gh++)
{
for (int kh=0; kh<9 - gh; kh++)
{
if (V1[ef][kh] > V1[ef][kh+1])
{
temp = V1[ef][kh];
V1[ef][kh] = V1[ef][kh+1];
V1[ef][kh+1] = temp;
}
}
}
}
cout <<"\n"<<"\n"<<"Min V"<<"\n";
for (int jh=0; jh<10; jh++)
{
for (int hj=0; hj <9; hj++)
{
cout << V1[jh][hj] <<"\t";
}
cout << "\n";
}
long double W[10];
for (int io=0; io<10; io++)
{
W[io] = V1[io][0];
}
cout <<"\n"<<"W"<<"\n";
for (int lp= 0; lp<10; lp++)
{
cout << W[lp] << "\t";
}
long double SW = 0;
for (int lo=0; lo<10; lo++)
{
SW = W[lo]+ SW;
}
cout << "\n"<< "\n" << "Sum W"<<"\n"<<SW;
long double WW[10];
for (int kf=0; kf<10; kf++)
{
WW[kf] = W[kf] / SW;
}
cout <<"\n"<<"Final W"<<"\n";
for (int pl= 0; pl<10; pl++)
{
cout << WW[pl] << "\t";
}
return 0;
}
من کد نوشتم که ایراد می گیره. موضوعه کد اینه: تلفیق ۲۰ پرسشنامه طراحی شده با ماتریس های مقایسه زوجی (روش ANP) با روش میانگین هندسی، و حل آن با متد توسعه ای چانگ. اشکالی که میگیره همون اوله موقع وارد کردن داده ها. یه مثال بزنم که متوجه موضوع اصلی کد بشید: من می خوام که ۱ شاخص رو با ۳ شاخص مقایسه کنم توسط پرسشنامه. جواب پرسشنامه ها از ۱ تا ۹ می باشد که هر کدام بیانگر یک عدد فازی مثلثی است (۳ تا عدد دارند، آرایه های a). تعداد پرسشنامه ها نا محدوده (n). بعدش این پرسشنامه ها باید ادغام شن با روش میانگین هندسی ( تک تک اعداد باید در هم ضرب شن بدش ریشه n ام رو باید حساب کرد). در آخر هر کدام باید در سطرهای مختلف آرایه s نوشته شن!! (توضیح بقیه اش زیاده و سخته و مشکلی اونجا نداره)
من حدود ۲۰ تا جدول دارم که برای تک تکشون باید این کد رو جدا گونه اجرا کنم با تغییراتی در سایز آرایه ها. اشکالی که به وجود آمده برای بزرگترین جدوله که باید آرایه ی s[9][10][3]s بسازم. اشکالی می گیره اینه: Floating Point:...s. کد رو میزارم هرکی تونست کمکم کنه. ممنونم. راستی واسه سایزهای کوچیک جواب میده. اگه توضیحه دیگه ای لازم بود بگید که بگم
#include <iostream.h>
#include <conio.h>
#include <math.h>
int main ()
{
clrscr();
char a;
long double n;
long double o;
long double a1[]={0.2857,0.3333,0.4}, a2[]={0.3333,0.4,0.5}, a3[]={0.4,0.5,0.6667}, a4[] = {0.5, 0.6667, 1.0L}, a0[]={0.6667,1.0L,2.0L}, a5[]={0.5,1.0L,1.5}, a6[]= {1.0L,1.5,2.0L}, a7[]={1.5,2.0L,2.5}, a8[]={2.0L,2.5,3.0L}, a9[]={2.5,3.0L,3.5};
cout << "Enter Number of datas:";
cin >> n;
long double r[10][3], s[9][10][3];
o = 1 / n;
for(int i =0; i<9; i++)
{
for (int w =0; w<10; w++)
{
long double M[] = {1.0L,1.0L,1.0L};
long double m[] = {1.0L,1.0L,1.0L};
long double f[] ={1.0L,1.0L,1.0L};
for (int j = 0; j < n; j++)
{
cin >> a;
switch (a){
case '1':m[0]=a1[0], m[1] = a1[1]; m[2] = a1[2];
break;
case '2':m[0]=a2[0], m[1] = a2[1], m[2]=a3[2];
break;
case '3':m[0]= a3[0], m[1]= a3[1], m[2]= a3[2];
break;
case '4':m[0]=a4[0], m[1]=a4[1], m[2]=a4[2];
break;
case '5':m[0]=a5[0], m[1]=a5[1], m[2]=a5[2];
break;
case '0':m[0]= a0[0], m[1]= a0[1], m[2]= a0[2];
break;
case '6': m[0]= a6[0],m[1]= a6[1], m[2]= a6[2];
break;
case '7': m[0]= a7[0], m[1]= a7[1], m[2]= a7[2];
break;
case '8': m[0]= a8[0], m[1]= a8[1], m[2]= a8[2];
break;
case '9': m[0]= a9[0], m[1]= a9[1], m[2]= a9[2];
break;
}
M[0] = m[0]*M[0];
M[1] = m[1]*M[1];
M[2] = m[2]*M[2];
}
cout<<"Data"<<"\n";
for (int k = 0; k<3; k++)
{
f[k] = f[k]*M[k];
}
r[w][0] = powl(f[0],o);
r[w][1] = powl(f[1],o);
r[w][2] = powl(f[2],o);
}
for (int q =0; q<10; q++)
{
for (int t=0; t<3; t++)
{
s[i][q][t] = r[q][t];
}
}
}
for (int x =0; x<9; x++)
{
for (int y = 0; y<10; y++)
{
for(int d=0; d<3; d++)
{
cout << s[x][y][d] << "\t";
}
cout << "\n";
}
cout << "\n";
}
long double op[9][1][3];
long double ss[9][10][3];
long double Ss[9][1][3];
for (int c=0; c<9; C++)
{
for (int v =0; v<10; v++)
{
for (int z=0; z<3; z++)
{
ss[c][v][z] += s[c][v][z];
}
Ss[c][0][0] += ss[c][v][0];
Ss[c][0][1] += ss[c][v][1];
Ss[c][0][2] += ss[c][v][2];
}
op[c][0][0] += Ss[c][0][0]+1;
op[c][0][1] += Ss[c][0][1]+1;
op[c][0][2] += Ss[c][0][2]+1;
for(int b=0; b<3; b++)
{
cout << op[c][0][b] << "\t";
}
cout << "\n";
}
long double SSM[1][1][3];
for (int lk=0; lk<9; lk++)
{
SSM[0][0][0] += op[lk][0][0];
SSM[0][0][1] += op[lk][0][1];
SSM[0][0][2] += op[lk][0][2];
}
cout << "\n"<<"\n"<<"Sum"<<"\n";
for(int mn=0; mn<3; mn++)
{
cout << SSM[0][0][mn] << "\t";
}
long double SSSM [1][1][3];
SSSM[0][0][0] = 1 / SSM[0][0][2];
SSSM[0][0][1] = 1 / SSM[0][0][1];
SSSM[0][0][2] = 1 / SSM[0][0][0];
cout << "\n"<<"\n"<<"Divers Sum"<<"\n";
for(int pq=0; pq<3; pq++)
{
cout << SSSM[0][0][pq] << "\t";
}
long double SSMM[9][1][3]={1};
for(int rs=0; rs <9; rs++)
{
for (int lm=0; lm<3; lm++)
{
SSMM[rs][0][lm]= SSSM[0][0][lm] * op[rs][0][lm];
}
cout << "\n"<<"\n"<< "S"<< "\n";
for(int fg=0; fg<3; fg++)
{
cout << SSMM[rs][0][fg] << "\t";
}
}
long double V1[10][9];
long double htg;
for (int tr=0; tr<9; tr++)
{
for (int qe = 1; qe <10; qe++)
{
if (tr+qe<10)
{
if(SSMM[tr][0][1] >= SSMM[qe+tr][0][1])
{
V1[tr][qe+tr-1]= 1;
htg = ((SSMM[qe+tr][0][2] - SSMM[tr][0][0]))/((SSMM[qe+tr][0][2] - SSMM[tr][0][0])+(SSMM[tr][0][1] - SSMM[qe+tr][0][1]));
V1[qe+tr][tr] = fabs(htg);
}
else
{
htg = ((SSMM[tr][0][2] - SSMM[qe+tr][0][0]))/((SSMM[tr][0][2] - SSMM[qe+tr][0][0])+(SSMM[qe+tr][0][1] - SSMM[tr][0][1]));
V1[tr][qe+tr-1] = fabs(htg);
V1[qe+tr][tr] = 1;
}
}
}
}
cout <<"\n"<<"\n"<<"V"<<"\n";
for (int jk=0; jk<10; jk++)
{
for (int kj=0; kj <9; kj++)
{
cout << V1[jk][kj] <<"\t";
}
cout << "\n";
}
long double temp;
for (int ef=0; ef<10; ef++)
{
for (int gh=1; gh<9; gh++)
{
for (int kh=0; kh<9 - gh; kh++)
{
if (V1[ef][kh] > V1[ef][kh+1])
{
temp = V1[ef][kh];
V1[ef][kh] = V1[ef][kh+1];
V1[ef][kh+1] = temp;
}
}
}
}
cout <<"\n"<<"\n"<<"Min V"<<"\n";
for (int jh=0; jh<10; jh++)
{
for (int hj=0; hj <9; hj++)
{
cout << V1[jh][hj] <<"\t";
}
cout << "\n";
}
long double W[10];
for (int io=0; io<10; io++)
{
W[io] = V1[io][0];
}
cout <<"\n"<<"W"<<"\n";
for (int lp= 0; lp<10; lp++)
{
cout << W[lp] << "\t";
}
long double SW = 0;
for (int lo=0; lo<10; lo++)
{
SW = W[lo]+ SW;
}
cout << "\n"<< "\n" << "Sum W"<<"\n"<<SW;
long double WW[10];
for (int kf=0; kf<10; kf++)
{
WW[kf] = W[kf] / SW;
}
cout <<"\n"<<"Final W"<<"\n";
for (int pl= 0; pl<10; pl++)
{
cout << WW[pl] << "\t";
}
return 0;
}