アプリ版:「スタンプのみでお礼する」機能のリリースについて

いつも教えて頂きありがとうございます。
実は基本を理解しておらず、キーパンチの練習になっています。
もう1冊自分にも解る書籍を購入しようと思います。
このプログラムの誤りだけでも教えて頂きたいのです。
2000文字では足りないので、2回に分けて投稿させて頂きます。

下記のプログラムです。

/*****************************************************

基本交換法による並べ替えを行うプログラム

******************************************************/

#include <stdio.h>



#defineN7/*データ個数*/

#defineON1/*sw : 交換しました*/

#defineOFF0/*sw : 交換していません*/

#defineDATA_LEN 20/*データ配列の1列の要素数*/



/*関数のプロトタイプ宣言*/

void printData(char p[][DATA_LEN], int n);/*文字列を表示する関数*/

void sort(char p[][DATA_LEN], int n);/*文字列を並び替える関数*/

voidstr_change(char *ps1,char *ps2);/*文字列と文字列とを交換する関数*/

voidatr_cpy(char *pd,char *ps)/*文字列を複写する関数*/

intstr_cmp(char *ps1,char *ps2)/*文字列と文字列とを比較する関数*/



main()

{

/*データの宣言*/

char p_data[N][DATA_LEN] = {"ふじさわ","えのしま","しちりがはま",

"ごくらくじ","はせ","ゆいがはま","かまくら"};



/*最初の状態を表示*/

printData(p_data,N);



/*並べ替え*/

sort(p_data,N);



/*結果を表示*/

printf("¥nソ¥ートしました¥n¥n");

printData(p_data,N);

}



/****************************************************

ポインタ型から文字列を表示

****************************************************/

void printData(char p[][DATA_LEN], int n)

/* p : 二次元配列*/

/* n : 文字列の要素数*/

{

inti;/*添え字*/



for(i=0;i<n;i++)

{

printf("%s¥n",p[i]);

}



}



/*****************************************************

基本交換法

*****************************************************/

void sort(char p[][DATA_LEN],int n)

/* p : 二次元配列*/

/* n : 文字列の要素数*/

{

intsw;/*交換したか*/

inti,j;/*添え字*/



sw = ON;

for(i = n-1 ; i>=1 && sw == ON ; i--)

{

sw = OFF;

for(j = 0; j< i ;j++)

{

/* p[j] <= p[j+1]となるようにする*/

if(str_cmp(p[j],p[j+1]) > 0)

{

str_change(p[j],p[j+1];/*交換*/

sw = ON;

}

}

}

}


もう1回投稿致します。

A 回答 (4件)

#defineの後にスペースが入っていません。


#defineN7 → #define N7

後13行目が宣言の構文エラーとなっています。
http://hp.vector.co.jp/authors/VA029438/easy/mis …
    • good
    • 0
この回答へのお礼

本当にありがとうございます。
私も一歩一歩学習し、最終的にkerneruさんの様になりたいです。

甘えてもいいですか?
まだ解らないのがいくつかあります。
でも後日に致しますので、是非質問させてください。

今回のはアドバイス通りに修正してコンパイルできるかやってみます。

本当にありがとうございました。

お礼日時:2010/11/21 12:35

↓ごめんなさい


13行目じゃなく31行目が宣言の構文エラーでした。

ついでに、基本は大事です。
プログラムは基本を押さえていないと、エラーが出たときにパニックになったりどこをどう調べていいのかわからなくなります。
絶対に入門書を購入してください。
http://www.amazon.co.jp/%E3%82%84%E3%81%95%E3%81 …
http://www.amazon.co.jp/%E7%8C%AB%E3%81%A7%E3%82 …
    • good
    • 0
この回答へのお礼

どうもありがとうございます。
初心者なので、せっかくのご回答も敷居が高く感じます。
それにしても、投稿してそんなに時間が経っていないのによく気付くのですね。
素晴らしいです。
もう1度、見直してみます。
ありがとうございました。

お礼日時:2010/11/21 12:22

>#defineN7/*データ個数*/


>#defineON1/*sw : 交換しました*/
>#defineOFF0/*sw : 交換していません*/
>#defineDATA_LEN 20/*データ配列の1列の要素数*/

#define の後ろに空白がないため、この時点でエラーが出ますね。
投稿されたソースコードは、お手元にあるものと本当に同じですか?

また、1行ごとに空白行が入っているのは、きわめて見づらいです。
ご本人は見やすくするためにそうしていらっしゃるのかもしれませんが、逆効果です。
実際には間延びしてしまっています。
空白行を入れるなら、メリハリを付けましょう。

この回答への補足

ありがとうございます。

実は空白行を入れていないのです。
geditをコピーしたら、多分質問箱の特性で間が空いたのです。
すみませんでした。

補足日時:2010/11/21 12:41
    • good
    • 0
この回答へのお礼

どうもありがとうございます。

その前に基本をマスターした方がいいのですが、
後日また教えてください。

本当にありがとうございました。

お礼日時:2010/11/21 12:54

質問を2つ投稿しておいて、もう一方は無視するのですか?



また、この質問も締め切らず放置するのですか?
    • good
    • 0
この回答へのお礼

このフォーラム自体のシステムを理解していませんでした。
今後はこのような事はございません。
申し訳ございません。

お礼日時:2011/01/15 18:08

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