

貪欲算法を求めたく、とりあえず第一段階として、ファイルに書いてあるすべての文を出力させたいのですが、なぜか一番と二番だけしか出てきません。C言語の参考書など色々参考にしながらプログラムを行ったので不備はないと思ったのですが、どこがおかしいのでしょうか。（ちなみに、「knap10.txt」には１０個のデータが打ち込んであります。）

[code]

    int main()
    {
        FILE *fp;
        int i,j;
        int nitem=0;
        double capacity;
        double weight,value;
        char file_name[NMOJI],name[100];
        printf("Data Flie Name: ");
        scanf("%s",file_name);
        if((fp=fopen(file_name,"r"))==NULL){
            printf("%s:そのファイルを開けることはできません。\n",file_name);
            return -1;
        }
        printf("Knapsack capacity: ");  scanf("%lf",&capacity);
        printf("データファイル名： %s\n",file_name);
        printf("ナップサック容量： %f\n",capacity);
       
         fscanf(fp,"%d",&nitem);
        if(nitem>MAX_ITEM){
            printf("アイテム数を%3d以下にしてください.\n",MAX_ITEM);
            return -1;
        } else{
            while(fscanf(fp,"%s%lf%lf",name,&weight,&value)==3){
              printf("%-10s %5.1f %5.1f\n",name,weight,value);  
        }
        for(i=0;i<nitem;i++)
            fscanf(fp,"%lf",&weight);
        for(i=0;i<nitem;i++)
            fscanf(fp,"%lf",&value);
    
       
        fclose(fp);
        return 0;
    }
    }
    
[/code]

「knap10.txtに打ち込んだ文」

[code]

    一番  39.0   42.0
    二番  13.0   12.0
    三番　68.0   45.0
    四番  15.0   5.0
    五番  10.0   2.0
    六番  20.0   61.0
    七番  31.0   89.0
    八番  15.0   32.0
    九番  41.0   47.0
    十番  16.0   18.0
    
[/code]

期待しているプログラム

[code]

    $ ./a.out
    Data Flie Name: knap10.txt
    Knapsack capacity: 121
    データファイル名： knap10.txt
    ナップサック容量： 121.000000
    
    一番     39.000000 42.000000
    二番     13.000000 12.000000
    三番     68.000000 45.000000
    四番     15.000000 5.000000
    五番     10.000000 2.000000
    六番     20.000000 61.000000
    七番     31.000000 89.000000
    八番     15.000000 32.000000
    九番     41.000000 47.000000
    十番     16.000000 18.000000
    
[/code]

実行結果

[code]

    $ ./a.out
    Data Flie Name: knap10.txt
    Knapsack capacity: 121
    データファイル名： knap10.txt
    ナップサック容量： 121.000000
    一番      39.0  42.0
    二番      13.0  12.0
    
[/code]


CC BY-SA 4.0
2020-10-11T12:13:17.333
71105
2020-10-11T12:26:42.870
2020-10-11T12:26:42.870
3060
41837
question
c
貪欲算法の算出プログラムついて、とりあえず第一段階の質問