基本的な SJF アルゴリズムを実装しています。これは、バースト時間に応じてプロセスをソートし、同時にそれぞれのプロセス番号をソートするだけです。b[]
バースト用の配列でp[]
、プロセス番号を格納します。コンパイル時に次のエラーが発生します。
sjf.c: In function ‘main’:
sjf.c:23:10: warning: comparison between pointer and integer [enabled by default]
sjf.c:25:10: warning: comparison between pointer and integer [enabled by default]
sjf.c:39:10: warning: comparison between pointer and integer [enabled by default]
これだけでなく、Linux Mint 15 のターミナルでプログラムを実行した後、「セグメンテーション フォールト」が原因で実行が終了します。次に出力例を示します。
enter number of jobs2
Enter burst time12
21
Segmentation fault
私のコードは次のとおりです。
#include<stdio.h>
#include<string.h>
#include<unistd.h>
#include<stdlib.h>
#include<sys/types.h>
main()
{
int k;
int c;
int b[100];
int n[100];
int a;
int i;
int j;
printf("enter number of jobs");
scanf("%d",&a);
printf("Enter burst time");
for(i=0;i<a;i++)
{
scanf("%d",&b[i]);
n[i]=i;
}
for(i=0;i<n;i++)
{
for(j=0;j<n-1;j++)
{
if(b[j]>b[j+1])
{
k=b[j];
b[j]=b[j+1];
b[j+1]=k;
c=n[j];
n[j]=n[j+1];
n[j+1]=n[j];
}
}
}
for(i=0;i<n;i++)
{
printf("burst time for process %d = %d ",n[i],b[i]);
}
}
どうすればこれを解決できますか?