PDA

View Full Version : سوال: مشکل در کد



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

stubborn2
دوشنبه 14 اسفند 1391, 19:01 عصر
راستی دوستان، یک نقطه خواستم اشاره کنم شاید مفید باشه من کد را در Borland C++ 3.5 نوشتم. نمی دونم ربطی داره یا نه!! من منتظره کمک هایتان هستم

sr2m72
دوشنبه 14 اسفند 1391, 19:31 عصر
راستی دوستان، یک نقطه خواستم اشاره کنم شاید مفید باشه من کد را در Borland C++ 3.5 نوشتم. نمی دونم ربطی داره یا نه!! من منتظره کمک هایتان هستم

سلام
ميشه بگيد چه داده هايي وارد ميكنيد كه ارور ميده؟؟

stubborn2
دوشنبه 14 اسفند 1391, 19:40 عصر
سلام
ميشه بگيد چه داده هايي وارد ميكنيد كه ارور ميده؟؟
سلام داداش. من اولین ورودی که وارد می کنم تعداد پرسشنامه هام است. برای مثال 2 وارد می کنم. بعدش که می خوام از اعداد 1 الی 9 وارد کنم (Char a) که بیانگر طیف جواب های پرسشنامه هام است(آرایه های a)، ارور میده!!

sr2m72
دوشنبه 14 اسفند 1391, 19:47 عصر
سلام داداش. من اولین ورودی که وارد می کنم تعداد پرسشنامه هام است. برای مثال 2 وارد می کنم. بعدش که می خوام از اعداد 1 الی 9 وارد کنم (Char a) که بیانگر طیف جواب های پرسشنامه هام است(آرایه های a)، ارور میده!!

داداش من اين كد شما رو كامپايل كردم ولي هيچ اروري به من نميده كه بفهمم مشكل از كجاست!

stubborn2
دوشنبه 14 اسفند 1391, 19:52 عصر
داداش من اين كد شما رو كامپايل كردم ولي هيچ اروري به من نميده كه بفهمم مشكل از كجاست!
واقعا؟؟؟ شما داده اولو هرچی دوست داری بده، بقیه از 1 تا 9. هیچ اروری نمیده؟
چرا واسه من پس میده؟
floating point: square negative roots..!!!

sr2m72
دوشنبه 14 اسفند 1391, 20:03 عصر
بله من هرچيزي كه وارد ميكنم(اعداد، كاراكتر) هيچ اروري نميده!

احتمالا دليلش همون Borland C++‎ 3.5 باشه. من از Dev-C++ استفاده ميكنم.

stubborn2
دوشنبه 14 اسفند 1391, 20:07 عصر
بله من هرچيزي كه وارد ميكنم(اعداد، كاراكتر) هيچ اروري نميده!

احتمالا دليلش همون Borland C++‎ 3.5 باشه. من از Dev-C++ استفاده ميكنم.
مر سی داداش من ببینم همینی که شما استفاده کردی رو می تونم دانلود کنم و اجراش کنم. فقط یک سوال تغییری که در کد نباید بدم؟ و البته شما از چه ورژنی استفاده کردید?
ممنون از لطفت.

sr2m72
دوشنبه 14 اسفند 1391, 20:34 عصر
مر سی داداش من ببینم همینی که شما استفاده کردی رو می تونم دانلود کنم و اجراش کنم. فقط یک سوال تغییری که در کد نباید بدم؟ و البته شما از چه ورژنی استفاده کردید?
ممنون از لطفت.

نه نيازي به تغيير نيست.
من از نسخه 4.9.9.2 استفاده ميكنم.

موفق باشيد!

stubborn2
دوشنبه 14 اسفند 1391, 20:38 عصر
نه نيازي به تغيير نيست.
من از نسخه 4.9.9.2 استفاده ميكنم.

موفق باشيد!
ممنون از راهنماییاتون. شما هم موفق باشید.

stubborn2
سه شنبه 15 اسفند 1391, 17:51 عصر
دوستان مشکله قبلی حل شده!! ولی مشکل هنوز پابرجاست. وقتی اجرا می کنم و داده ها رو وارد می کنم تا نصف مسیر درست محاسبه می کنه ولی از یه جای دیگه به بعد چیزای عجیبی می نویسه. من قبلا برای مدل های مختلف با Borland C++ حل کرده بودم و جواب داشتم، اونا رو هم امتحان کردم همین اتفاق می افتد. در جواب اینا رو می نویسه:
IND#.1
QNAN#.1
این یعنی چی؟

stubborn2
سه شنبه 15 اسفند 1391, 18:43 عصر
دوستان وقتی کامپایل می کنم یک هشداری بهم میده که نمی فهمم چی میگه:

#ifndef _BACKWARD_BACKWARD_WARNING_H
#define _BACKWARD_BACKWARD_WARNING_H 1

#ifdef __DEPRECATED
#warning This file includes at least one deprecated or antiquated header. \
Please consider using one of the 32 headers found in section 17.4.1.2 of the \
C++‎ standard. Examples include substituting the <X> header for the <X.h> \
header for C++‎ includes, or <iostream> instead of the deprecated header \
<iostream.h>. To disable this warning use -Wno-deprecated.
#endif

#endif

sr2m72
سه شنبه 15 اسفند 1391, 23:04 عصر
دوستان وقتی کامپایل می کنم یک هشداری بهم میده که نمی فهمم چی میگه:

#ifndef _BACKWARD_BACKWARD_WARNING_H
#define _BACKWARD_BACKWARD_WARNING_H 1

#ifdef __DEPRECATED
#warning This file includes at least one deprecated or antiquated header. \
Please consider using one of the 32 headers found in section 17.4.1.2 of the \
C++‎ standard. Examples include substituting the <X> header for the <X.h> \
header for C++‎ includes, or <iostream> instead of the deprecated header \
<iostream.h>. To disable this warning use -Wno-deprecated.
#endif

#endif

سلام
اگه در تعريف پيش پردازنده به جاي iostream.h فقط iostream را بزاريد درست ميشه. يعني نيازي به بسوند .h براي iostream نيست.

موفق باشيد!

stubborn2
چهارشنبه 16 اسفند 1391, 00:53 صبح
سلام
اگه در تعريف پيش پردازنده به جاي iostream.h فقط iostream را بزاريد درست ميشه. يعني نيازي به بسوند .h براي iostream نيست.

موفق باشيد!
سلام داداش، ممنون. این کارو کردم. ولی بازم ارور داد، میگه cin, cout رو نمیشناسه.
واسه من قابل درک نیست که کدی که در Borland جواب میده، dev نمیده و میگه عدد قابل قبول نیست (#QNAN, #INF,)!! یکی بگه آخه چرا؟

stubborn2
پنج شنبه 17 اسفند 1391, 23:33 عصر
دوستان هیچ کی نمی تونه کمکم کنه؟