いつも教えて頂きありがとうございます。
実は基本を理解しておらず、キーパンチの練習になっています。
もう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回投稿致します。
No.1
- 回答日時:
#defineの後にスペースが入っていません。
#defineN7 → #define N7
後13行目が宣言の構文エラーとなっています。
http://hp.vector.co.jp/authors/VA029438/easy/mis …
本当にありがとうございます。
私も一歩一歩学習し、最終的にkerneruさんの様になりたいです。
甘えてもいいですか?
まだ解らないのがいくつかあります。
でも後日に致しますので、是非質問させてください。
今回のはアドバイス通りに修正してコンパイルできるかやってみます。
本当にありがとうございました。
No.2
- 回答日時:
↓ごめんなさい
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 …
どうもありがとうございます。
初心者なので、せっかくのご回答も敷居が高く感じます。
それにしても、投稿してそんなに時間が経っていないのによく気付くのですね。
素晴らしいです。
もう1度、見直してみます。
ありがとうございました。
No.3
- 回答日時:
>#defineN7/*データ個数*/
>#defineON1/*sw : 交換しました*/
>#defineOFF0/*sw : 交換していません*/
>#defineDATA_LEN 20/*データ配列の1列の要素数*/
#define の後ろに空白がないため、この時点でエラーが出ますね。
投稿されたソースコードは、お手元にあるものと本当に同じですか?
また、1行ごとに空白行が入っているのは、きわめて見づらいです。
ご本人は見やすくするためにそうしていらっしゃるのかもしれませんが、逆効果です。
実際には間延びしてしまっています。
空白行を入れるなら、メリハリを付けましょう。
この回答への補足
ありがとうございます。
実は空白行を入れていないのです。
geditをコピーしたら、多分質問箱の特性で間が空いたのです。
すみませんでした。
どうもありがとうございます。
その前に基本をマスターした方がいいのですが、
後日また教えてください。
本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# c言語配列の結合についてです。 なぜうまくいかないのでしょうか。 #include <stdio.h 4 2022/05/30 22:42
- C言語・C++・C# c言語でユーザ関数を利用して入力された文字列を反転させるプログラムを作りたいです。 3 2023/01/29 19:47
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- C言語・C++・C# str[j++]の意味 2 2022/08/30 16:20
- C言語・C++・C# c言語の問題です 課題1 (二分探索木とセット) 大きさ size の配列 array を考える。す 2 2023/01/10 21:08
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# カードシャッフルのブログラムを使ってc言語でブラックジャックをしたい 2 2022/04/12 15:13
- C言語・C++・C# C言語初心者 構造体 課題について 2 2023/03/10 19:48
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
文字列内の数字削除
-
C言語のintとcharの違いってな...
-
文字列str内の全ての数字を...
-
C言語で文字列をかえす正しい書...
-
SetWindowTextについて。
-
char*を初期化したいのですが
-
構造体が戻り値の関数について...
-
strcat関数を自作したいです
-
CStringからchar*への型変換に...
-
C言語を用いた環境変数の作成/...
-
C言語でポインターで詰まってい...
-
C言語にて構造体のメンバがNULL...
-
char型にint型の数値を代入する。
-
new charとnew char[N]の違いは?
-
char 文字列型 の表現範囲が-12...
-
C言語において、以下の条件で...
-
p = (char **)*p の意味
-
文字の代入とコピーについて
-
ポインタを使用 [数字列を数値...
-
文字列の途中から途中までを抽出
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
char*を初期化したいのですが
-
C言語のintとcharの違いってな...
-
CStringからchar*への型変換に...
-
C言語にて構造体のメンバがNULL...
-
小数点入りの文字列をfloat型に...
-
C言語のプログラムについてです
-
strcat関数を自作したいです
-
fstream型オブジェクトを関数の...
-
new charとnew char[N]の違いは?
-
DWORDとcharの変換
-
文字列の途中から途中までを抽出
-
char 文字列型 の表現範囲が-12...
-
const char* s1とただのchar s1...
-
wsprintf( ポインタ , "%d" , "...
-
c言語でポインタ変数を用いた配...
-
char型にint型の数値を代入する。
-
C言語で文字列をかえす正しい書...
-
C++17で、unsigned char * 配列...
-
共用体について
-
エクセルのMID関数は、C言語では?
おすすめ情報