私はunsigned int = 100000000の最大合計サイズを与えられており、各プロセッサのサイズを入力する必要がありますが、配列の量は分かりません...オンラインで見た人のほとんどは既に定義済みです配列のサイズがないので、私は他の方法が配列のサイズなしで最適なアルゴリズムを実行するかどうか疑問に思った。私はこのアルゴリズムを作成する良い方法を得ることができないようです。私はまた、二重リンクリストを試して、私は問題を抱えています私はどのようにしてストアを最善のフィットのためのメモリの始まりと終わりにすることができますか?
int MaxMem = 20000000;
struct PCB
{
int ProcessID;
unsigned int ProcessorSize;
unsigned int Begin;
unsigned int End;
int sumOfMemory = 0;
PCB()
{
ProcessID = NULL;
ProcessorSize = NULL;
priority = NULL;
}
bool operator < (const PCB &c)
{
return priority < c.priority;
}
bool operator > (const PCB &c)
{
return priority > c.priority;
}
void rem(PCB &a)
{
a.ProcessID = NULL;
a.ProcessorSize = NULL;
a.priority = NULL;
sumOfMemory -= a.ProcessorSize;
}
};
static int start = NULL;
static int temp;
void best_fit(PCB a,vector<int> &memory)
{
int bestfit = -1;
unsigned int endMem = MaxMem;
unsigned int tempMem = MaxMem;
if((start == NULL) && (bestfit = -1))
{
temp = start;
memory.push_back(a.ProcessorSize);
bestfit = a.ProcessID;
start = a.ProcessorSize;
tempMem -= a.ProcessorSize;
cout << "pushed" << endl;
}
else if((start != NULL)&& (bestfit = -1) && (a.ProcessorSize < memorySize) && (a.sumOfMemory < tempMem))
{
memory.push_back(a.ProcessorSize);
bestfit = a.ProcessID;
tempMem -= a.ProcessorSize;
temp = start;
start += a.ProcessorSize;
cout << "pushed!" << endl;
}
else
{
cout << "No space" << endl;
}
}
int main()
{
PCB pcb;
while(true)
{
vector<int> mem;
cout << "process ID?" << endl;
cin >> pcb.ProcessID;
cout << "enter processor size?" << endl;
cin >> pcb.ProcessorSize;
bestfit(pcb,mem);
}
最後の 'else'節がありません。両方のif文がfalseの場合はどうなりますか? –
あなたのコードにfor-loop missingがあるように感じます。 'i'変数はどこで定義されますか? – Jvinniec
あなたに情報を与えるために 'PCB'の定義が必要です。 –