課題について至急アドバイスをお願いします!

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ottochang
記事: 2
登録日時: 7年前

課題について至急アドバイスをお願いします!

#1

投稿記事 by ottochang » 7年前

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;
}

box
記事: 2002
登録日時: 13年前

Re: 課題について至急アドバイスをお願いします!

#2

投稿記事 by box » 7年前

ottochang さんが書きました: sounyuuhou.c:23: error: expected expression before ‘)’ token
sounyuuhou.c:29: error: expected declaration or statement at end of input
とでるのですが、どこが間違っているのでしょうか?
if文の勢力範囲が終わった後にelseが来ているのがよろしくなさそうです。
また、どうも閉じカッコ } の数が多いように見えます。それもエラーの原因だと思います。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

とキンちゃん

Re: 課題について至急アドバイスをお願いします!

#3

投稿記事 by とキンちゃん » 7年前

ここまでは出来てる。あとソートだけです。

コード:

#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: 課題について至急アドバイスをお願いします!

#4

投稿記事 by とキンちゃん » 7年前

ここまでは出来てる。あとソートだけです。

コード:

#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: 課題について至急アドバイスをお願いします!

#5

投稿記事 by とキンちゃん » 7年前

コード:

#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;
}

ottochang
記事: 2
登録日時: 7年前

Re: 課題について至急アドバイスをお願いします!

#6

投稿記事 by ottochang » 7年前

<とキンチャンさん、boxさん

ご協力ありがとうございます!これを元に作って見ます!

閉鎖

“C言語何でも質問掲示板” へ戻る