スタックのデータ表示

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ポップする

スタックのデータ表示

#1

投稿記事 by ポップする » 11年前

スタックのデータを、取り出し表示したいものです。
Windows8、 mingw32を使っています。
エラーのあるコードを載せます。

コード:

#include <stdio.h>
#include <stdlib.h>
#define STACK_MAX 10

double stack[STACK_MAX];
int stack_top=0;

void stack_push(double val)
{ 
    if(stack_top==STACK_MAX)
      { 
        printf("エラー:スタックが満杯です(Stack overflow)\n");
        exit(EXIT_FAILURE);
         }else{
          stack[stack_top]=val;
          ++stack_top;  

          }
          
}

double stack_pop(void)
{
       if(stack_top==0)
         { printf("エラー:スタックが空なのにpopが呼ばれました(Stack underflow)\n");
           exit(EXIT_FAILURE);
            return 0;
            }else{
               
               --stack_top;
               return stack[stack_top]; 
                 }
}

int main (void)
{    
     int  i=0;
     double   j=0;
      double k=0; 
     do{printf("\n0:終了1:プッシュ 2:ポップ");
        scanf("%d",&i);
          switch(i)
          { case 1: 
                    printf("数を入力してください。\n");
                    scanf("%f",&j); 
                   stack_push(j);
                   
                    break;
             case 2: k=stack_pop();
         
                     printf("%f",k);
                     break;
              
           }




        }while(i!=0);
}
コマンドプロンプトで、プッシュを数回行い、2を入力し、ポップを選ぶと、表示は0.000000になります。
データを取り出そうする度に、表示は0.000000になります。
入力したデータを表示できるようにしたいです。
C言語は、二年間学んだものです。
お返事お願いします。

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

Re: スタックのデータ表示

#2

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

とりあえず、scanf("%f",&j); をscanf("%lf",&j);としてください。
それと、インデントを整えることをおすすめします。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

ポップする

Re: スタックのデータ表示

#3

投稿記事 by ポップする » 11年前

データを取り出し表示できました。解決しました。
みけCATさんありがとうございます。

閉鎖

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