ページ 1 / 1
課題について至急アドバイスをお願いします!
Posted: 2017年1月16日(月) 18:29
by ottochang
C言語初心者です。
仮想Linuxで挿入法というソートを作成途中ですが、プログラムがコンパイルできなくて困っています。
コンパイルは
$ gcc -lm sounyuuhou.c -o sounyuuhou
sounyuuhou.c: In function ‘main’:
sounyuuhou.c:23: error: expected expression before ‘)’ token
sounyuuhou.c:29: error: expected declaration or statement at end of input
とでるのですが、どこが間違っているのでしょうか?
コード:
#include <stdio.h>
#include <math.h>
int main(void)
{
int N;
int a[300];
int i,j; //jは最小値順に並べた時の順番の変数
int dummy;
FILE *fp;
fp=fopen("testsoat.txt","r");
fscanf(fp,"%d",&N);
for(i=0;i<N;i++) {
fscanf(fp,"%d",&(a[i]));
// printf("%3d\n",a[i]);
}
fclose(fp);
for(j=1;j<N;j++){
dummy = a[j];
for(i=j-1;i>=0;--i){
if(a[i]>=dummy){
a[i]=dummy;
}
}
else{
break;
}
}
}
return 0;
}
Re: 課題について至急アドバイスをお願いします!
Posted: 2017年1月16日(月) 20:20
by box
ottochang さんが書きました:
sounyuuhou.c:23: error: expected expression before ‘)’ token
sounyuuhou.c:29: error: expected declaration or statement at end of input
とでるのですが、どこが間違っているのでしょうか?
if文の勢力範囲が終わった後にelseが来ているのがよろしくなさそうです。
また、どうも閉じカッコ } の数が多いように見えます。それもエラーの原因だと思います。
Re: 課題について至急アドバイスをお願いします!
Posted: 2017年1月16日(月) 21:02
by とキンちゃん
ここまでは出来てる。あとソートだけです。
コード:
#include <stdio.h> //[挿入ソート]
#include <math.h> //testsoat.txt
int main(void)
{
int N; //ファイルから読み込む[個数]
int a[300]; //300個の整数配列
int i,j; //jは最小値順に並べた時の順番の変数
int dummy; //dummy
//-----------------------------------------------File
FILE *fp; //ファイルポインタ
fp=fopen("testsort.txt","r");//ファイルオープンx[testsoat.txt]
fscanf(fp,"%d",&N); //Nを読む
for(i=0;i<N;i++){ //N個の
fscanf(fp,"%d",&(a[i])); //整数をa[i]に読む
printf("%3d\n",a[i]); //チェック用
}
fclose(fp); //クローズ
//-----------------------------------------------Sort
for(j=1;j<N;j++){
dummy = a[j];
for(i=j-1;i>=0;--i){
if(a[i]>=dummy){
a[i]=dummy;
}
}
//else{-------------------------------------
break;
//}
//}
}
//----------------------------------------------
return 0;
}
Re: 課題について至急アドバイスをお願いします!
Posted: 2017年1月16日(月) 21:02
by とキンちゃん
ここまでは出来てる。あとソートだけです。
コード:
#include <stdio.h> //[挿入ソート]
#include <math.h> //testsoat.txt
int main(void)
{
int N; //ファイルから読み込む[個数]
int a[300]; //300個の整数配列
int i,j; //jは最小値順に並べた時の順番の変数
int dummy; //dummy
//-----------------------------------------------File
FILE *fp; //ファイルポインタ
fp=fopen("testsort.txt","r");//ファイルオープンx[testsoat.txt]
fscanf(fp,"%d",&N); //Nを読む
for(i=0;i<N;i++){ //N個の
fscanf(fp,"%d",&(a[i])); //整数をa[i]に読む
printf("%3d\n",a[i]); //チェック用
}
fclose(fp); //クローズ
//-----------------------------------------------Sort
for(j=1;j<N;j++){
dummy = a[j];
for(i=j-1;i>=0;--i){
if(a[i]>=dummy){
a[i]=dummy;
}
}
//else{-------------------------------------
break;
//}
//}
}
//----------------------------------------------
return 0;
}
Re: 課題について至急アドバイスをお願いします!
Posted: 2017年1月16日(月) 23:49
by とキンちゃん
コード:
#include <stdio.h> //[挿入ソート]
#include <math.h> //testsort.txt
int main(void)
{
int N; //ファイルから読み込む[個数]
int a[300]; //300個の整数配列
int i,j; //jは最小値順に並べた時の順番の変数
int dummy; //dummy
//-----------------------------------------------File
FILE *fp; //ファイルポインタ
fp=fopen("testsort.txt","r");//ファイルオープン
fscanf(fp,"%d",&N); //Nを読む
for(i=0;i<N;i++){ //N個の
fscanf(fp,"%d",&(a[i])); //整数をa[i]に読む
printf("%3d\n",a[i]); //チェック用
}
fclose(fp); //クローズ
//-----------------------------------------------Sort
for (i = 1; i < N; i++) {
dummy = a[i];
if (a[i - 1] > dummy) {
j = i;
do {
a[j] = a[j - 1];
j--;
} while (j > 0 && a[j - 1] > dummy);
a[j] = dummy;
}
}
//----------------------------------------------
for(i=0;i<N;i++){ //N個の
printf("%3d\n",a[i]); //チェック用
}
return 0;
}
Re: 課題について至急アドバイスをお願いします!
Posted: 2017年1月17日(火) 13:16
by ottochang
<とキンチャンさん、boxさん
ご協力ありがとうございます!これを元に作って見ます!