プログラミングCでエラーが出てしまいます。

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

プログラミングCでエラーが出てしまいます。

#1

投稿記事 by wonford » 3年前

機能をつけたいと思っています。
          • 引数と戻り値はともにint型変数とする。
            データを格納する関数のFuncで以下の配列変数とデータ数を格納する変数はともに静的変数とする。 配列の長さは マクロ定数 N に定める。
            データ数は、スタックの末尾の位置(配列の添字)でもある。
            引数が正のとき、その数値をスタックに格納して(スタックの末尾にデータを追加し、データ数を 1 増やす)、戻り値 0 を返す。 ただし、スタックが満杯のとき(数値を格納できないとき)は、戻り値として マクロ定数 FULL を返す。
            引数が負のとき、スタックからデータを取り出して(スタックの最後のデータを取り出し、データ数を 1 減らす)、戻り値として取り出した数値を返す。 ただし、スタックが空のとき(データを取り出せないとき)は、戻り値として マクロ定数 EMPTY を返す。
            スタックの最後のデータは、スタックの末尾の一つ前(size-1 の位置)に格納されている。
            引数が 0 のとき、データ数とスタックの内容を表示して、戻り値 0 を返す。
エラー

コード:

 
 prog03.c: 関数 ‘func’ 内:
prog03.c:49:10: エラー: ‘size’ undeclared (first use in this function); did you mean ‘size_t’?
   49 |     retu[size++] = a;
      |          ^~~~
      |          size_t
prog03.c:49:10: 備考: 未宣言の識別子は出現した各関数内で一回のみ報告されます

 



やりたい実行結果

コード:

 
 % ./a.out
スタックを実現するプログラム
  正の整数値:入力値をスタックに格納する(Push)
  負の整数値:スタックからデータを取り出す(Pop)
整数値を入力 (正:格納,負:取出,0:終了): 31
size = 1 [31 ]
整数値を入力 (正:格納,負:取出,0:終了): 41
size = 2 [31 41 ]
整数値を入力 (正:格納,負:取出,0:終了): 59
size = 3 [31 41 59 ]
整数値を入力 (正:格納,負:取出,0:終了): -1
取出データ = 59
size = 2 [31 41 ]
整数値を入力 (正:格納,負:取出,0:終了): 26
size = 3 [31 41 26 ]
整数値を入力 (正:格納,負:取出,0:終了): 53
size = 4 [31 41 26 53 ]
整数値を入力 (正:格納,負:取出,0:終了): 58
size = 5 [31 41 26 53 58 ]
整数値を入力 (正:格納,負:取出,0:終了): -1
取出データ = 58
size = 4 [31 41 26 53 ]
整数値を入力 (正:格納,負:取出,0:終了): -1
取出データ = 53
size = 3 [31 41 26 ]
整数値を入力 (正:格納,負:取出,0:終了): -1
取出データ = 26
size = 2 [31 41 ]
整数値を入力 (正:格納,負:取出,0:終了): 97
size = 3 [31 41 97 ]
整数値を入力 (正:格納,負:取出,0:終了): -1
取出データ = 97
size = 2 [31 41 ]
整数値を入力 (正:格納,負:取出,0:終了): -1
取出データ = 41
size = 1 [31 ]
整数値を入力 (正:格納,負:取出,0:終了): -1
取出データ = 31
size = 0 []
整数値を入力 (正:格納,負:取出,0:終了): 0
 


自分のソースコード

コード:

 
 int func(int a)
{
  static int retu[N];
  
  static int kosu = 0;
  int i;
  

if (a > 0) {
  
    if (kosu == N) return FULL;
    
    retu[size++] = a;
  }
 
 
 else if (a < 0) { 
    if (kosu == 0) return EMPTY;
    
    return retu[--kosu];
  }
 

 else { 
    printf("size = %d [", kosu);
    
    for (i = 0; i < kosu; i++) printf("%d ", retu[i]);
    
    
    printf("]\n");
  }
 
  return 0; 

  
}
 

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: プログラミングCでエラーが出てしまいます。

#2

投稿記事 by みけCAT » 3年前

未定義のsizeが使われているというメッセージですね。
sizeのかわりにkosuを使うべきであうように思えます。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

返信

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