質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

解決済

2回答

211閲覧

main関数内のコードの書き方を教えてください。(C言語初心者)

hara

総合スコア7

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

1グッド

1クリップ

投稿2017/09/27 14:31

はじめまして。どうぞよろしくお願いいたします。
C言語の学習を始めたものですが、質問があります。
コードは平成23年春季の基本情報技術者の午後にあるC言語問題なのですが、
そのプログラムの動きを再現しようとした際に、タイトルの疑問に当りました。

https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2011h23_1/2011h23tokubetsu_fe_pm_qs.pdf

問題内に、以下の関数があります。

~以下抜粋
void check_seats(char class, int num, SEAT *hall[ROWNUM],
POSITION *pos) {
int cnt, found = 0, no, row;

for (row = 0; row < ROWNUM; row++) { cnt = 0; for (no = 0; hall[row][no].seat_class != '\0'; no++) { if ((hall[row][no].seat_class == class) && (hall[row][no].reserved == 0)) {

~ 抜粋ここまで

この関数内でSEAT型構造体の要素にhall[row][no]が使われている為、SEAT *hall[ROWNUM]に渡すコードをmain関数から試しているのですが、上手くゆきません。
以下が、main内のコードですがgccのコンパイルでエラーとなります。

int main(void)
{

SEAT *hall[ROWNUM]={                                //ROWNUM=26列分の座席表の状態を代入。テスト用に3列分を作成。
{{'a',0},{'a',0},{'s',0},{'s',0},{'s',0},{'s',0},{'s',0},{'s',0}, {'a',0},{'a',0},{'\0',0}},          //1列目
{{'a',0},{'a',0},{'a',0},{'s',0},{'s',0},{'s',0},{'s',0},{'s',0},{'s',0}, {'a',0},{'a',0},{'a',0},{'\0',0}},  //2列目
{{'a',0},{'a',0},{'a',0},{'a',0},{'s',0},{'s',0},{'s',0},{'s',0},{'s',0},{'s',0}, {'a',0},{'a',0},{'a',0},{'a',0},{'\0',0}}, //3列目
};

POSITION *pos;
check_seats('s',2,hall,pos);   //Sクラスの2席の空き座席を確認する  
return 0;
}  

上記のmain関数の書き方を教えていただけますと助かります。

tomogear👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

showkit

2017/09/27 22:44

もう一点、コンパイルエラーの内容は記述してください。
guest

回答2

0

ベストアンサー

check_seats(*hall[ROWNUM])として受けるので呼ぶ側も揃えてみました。

c

1int main(void) 2{ 3 SEAT def_hall[ROWNUM][100]={ 4 //ROWNUM=26列分の座席表の状態を代入。テスト用に3列分を作成。 5 {{'a',0},{'a',0},{'s',0},{'s',0},{'s',0},{'s',0},{'s',0},{'s',0}, {'a',0},{'a',0},{'\0',0}},//1列目 6 {{'a',0},{'a',0},{'a',0},{'s',0},{'s',0},{'s',0},{'s',0},{'s',0},{'s',0}, {'a',0},{'a',0},{'a',0},{'\0',0}},//2列目 7 {{'a',0},{'a',0},{'a',0},{'a',0},{'s',0},{'s',0},{'s',0},{'s',0},{'s',0},{'s',0}, {'a',0},{'a',0},{'a',0},{'a',0},{'\0',0}},//3列目 8 }; 9 10 POSITION pos; 11 SEAT *hall[ROWNUM]; 12 int i; 13 for (i=0;i<3;i++){ 14 hall[i]=def_hall[i]; 15 } 16 check_seats('s',2,hall,&pos);//Sクラスの2席の空き座席を確認する

投稿2017/09/28 05:40

A.Ichi

総合スコア4070

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hara

2017/09/28 14:53

ご回答方、有難うございました。 ご教授いただきましたmain関数にて、コンパイルが通り、プログラムが動くことを確認できました。
guest

0

もしこれが本当のコードからコピペで持ってきたのであれば、SEAT *hall[ROWNUM]={が全角なことが原因かと思います。

投稿2017/09/27 23:30

masaya_ohashi

総合スコア9206

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問