プロが教える店舗&オフィスのセキュリティ対策術

C言語で10個の数字を読み込んで選択法を使い表示するプログラムはできたのですが、挿入法ができません。

教えてください。 以下のプログラムは、選択方のプログラムです。

#include <stdio.h>
#include <stdlib.h>

#define MAX 50 //配列の寸法

//_プロトタイプ宣言
void showArry(char *lab,int ns[],int n);

int main(void){
//char__*fnam="numbers.dat";//_入力ファイル名
char *fnam="numbers.dat"; //_当方テスト用仮ファイル名
FILE *file; //_ファイルの番号(構造情報ポインタ)
int ns[MAX]; //_データ格納配列
int n; //_格納要素数
int i; //_ループ変数
int j; //_ループ変数
int k; //_最小候補要素の添字
int min; //_最小値
int temp; //_交換用作業変数

//_ファイルのオープン:ファイルが存在しない場合を監視
if((file=fopen(fnam,"r")) == NULL){
printf("%sファイルはオープンできません。\n",fnam);
return 1; //_強制的に終了
}
//_ファイルが存在している場合のみ、以下に進行する
//_特別の意図がないなら_else_{__}_は不要

//_1.ファイルから10個の数字を読み込む
n = 0;
while(fscanf(file,"%d",&ns[n]) != EOF){
n++;//_添字のインクリメント
}
showArry("入力直後",ns,n);

//_2.選択ソートで昇順に並べる
for(i=0;i<n-1;i++){
//_要素[i]以降の最小値選択
min = ns[i];//_i番目の最小値初期化
k = i;//_添字の保存
for(j=i+1;j<n;j++){
if(ns[j]<min){
min = ns[j];//_最小値の入れ替え
k = j;//_添字の保存
}
}
//_要素[i]を選択値に交換
temp = ns[k];
ns[k] = ns[i];
ns[i] = temp;
showArry("交換過程",ns,n);
}
fclose(file);//_ファイルのクロース

//_終了
printf("\n正常終了\n");//_確認メッセージ
return 0;//終了
}

//_ソート中の数字を表示
void showArry(char *lab,int ns[],int n){
int i;//_ループ用

printf("%s:Array = [",lab);
for(i=0;i<n;i++){
printf("%d",ns[i]);
}
printf("]\n");
}

質問者からの補足コメント

  • 選択法のこのプログラムをいじって、挿入法にしたいのです。

      補足日時:2016/12/01 13:54

A 回答 (1件)

「教えてください」というのは, 具体的には「何を」教えてほしい, と言っているのですか?



「挿入法ができません」というのは, なにがどう「できない」んですか?

大学の授業で出されている課題で, 別アカウントで質問しているというオチだったりはしませんよね?
    • good
    • 10

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!