3

基本的な 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]);
    }
}

どうすればこれを解決できますか?

4

1 に答える 1