PDA

View Full Version : سوال: مشکل - error constant expression required



mohsenonline
شنبه 28 آبان 1390, 21:14 عصر
const int n=cin.get();
const int m=cin.get();
int maxneed[n][m],need[n][m],allocation[n][m];
char processname[n],d;
cout<<"\nPlease enter process name:\n";
for(i=0;i<n;i++)
cin>>processname[i];



این قسمتی از کد الگوریتم banker هست من می خواهم مقداری را با cin دریافت نموده و آن مقدار را به عنوان
ایندکس یک آرایه نسبت بدهم و اما با error مواجه می شوم چی کار کنم این مقدار داده شده ثابت نباشد
وبتوانم با cin مقدار بدهم

rezaricky
یک شنبه 29 آبان 1390, 00:56 صبح
کدی که نوشتی اشتباه است و کامپایل نمیشه
دلیلش هم اینه که چون ارایه ها یی که تعریف کردی استاتیک هستند و ارایه های استاتیک هنگام کامپایل فضا اشغال می کنن و باید یک مقدار ثابت بهشون بدی
برای حل مشکلت 2 تا راه حل داری:
1- از ارایه های پویا استفاده کنی مثل کد زیر:
#include <iostream>
#include <cstdlib>
using namespace std;

int main()
{

int n;
cin>>n;
int *p;

p=new int[n];

p[n-2]=5;

cout<<p[n-2];


return 0;
}

2- مقادیر m, n رو حداکثر تعریف کنی و از ارایه ای فقط تا جاییکه نیاز هست استفاده کنی
کد :
#include <iostream>
#include <cstdlib>
using namespace std;

int main()
{

const int n =100;
const int m=100;
char processname[n];

int a,b;

cin>>a>>b;

for(int i=0;i<a;i++)
{
cout<<"\nenter value:"
cin>>processname[i];
}


return 0;
}

به نظر من بهتره از روش دوم استفاده کنی