最大値検索法のプログラムソースを書きましたが、
実行すると、セグメンテーション違反となってしまいます。
どこがおかしいのでしょうか?
分かる方、教えてください。
宜しくお願いします。
swapのソース
#include <stdio.h>
void swap(int *px,int *py);
int main (void)
{
FILE *fp;
if ((fp=fopen("file.txt","rt"))==NULL){
printf("File open error.\n"); //ファイルが無い場合のエラー処理//
return 0;
}
int i,a[10];
for(i=0;i<100;i++){
fscanf(fp,"%d,",&a[i]); //ファイルから読み込み処理。//
}
fclose(fp);
//初期データの並びの表示//
for(i=0;i<10;i++) printf("[%d]=%d\n",i,a[i]);
/*1.ソートすべきデータの中で最大のデータを見つけ、
2.そのデータを最後のデータと入れ替える。
最大データは配列のどこにあるのか⇒maxi
その値⇒max とする。*/
//データが10個の場合
int max,maxi,j;
max=a[0],maxi=0;
for(i = 0;i < 9; i++){
if(a[i + 1] > max){
max = a[i + 1];
maxi = i + 1;
}
swap(&a[maxi],&a[9-j]);
for(j=0;j<9;j++){
printf("%d \n",j);
printf("i=%d\n ",i);
max=a[0], maxi=0;
for(i=0;i<9-j;i++){
//最大値をもつデータ探索;(カウンタ変数)
max++;
//最大データと探索範囲最後のデータとの入れ替え:
int n;
n=maxi;
maxi=max;
max=n;
printf("maxi=%d \n ",maxi);
printf("i=%d\n ",i);
printf("j=%d \n",j);
}
}
if((fp=fopen("file.txt","wt"))==NULL){
printf("File open error.\n");
return 0;
}
for(i=0;i<100;i++){
fprintf(fp,"%d,",a[i]);
}
fclose(fp);
}
sortのソース
#include<stdio.h>
void swap (int *px,int *py);
void swap (int *px,int *py)
{
int n;
n =*px;
*px = *py;
*py = n;
}
お礼
回答ありがとうございます。 無事、出来たと思います。 最大値検索法って、このようにprintすれば いいんですか? [0]=23 [1]=12 [2]=55 [3]=44 [4]=77 [5]=66 [6]=0 [7]=88 [8]=10 [9]=99 0 0 24 1 25 2 26 3 27 4 1 0 24 1 25 2 26 3 27 2 0 24 1 25 2 26 3 3 0 24 1 25 2 26 4 0 24 1 25 2 5 0 24 1 25 6 0 24 1 7 0 24 8 0