2017-11-11 4 views
-3

私は、患者の名前と緊急性の順にステップの順序を示すプログラムを書こうとしました。しかし、私は入力を記入し、出力を再度印刷する方法を知らない。このプログラムを患者名と緊急度の順に印刷する方法を変更するには?

これは入出力の例である:

This is an example of input-output

これは、不完全なコードです。

#include <stdio.h> 
#include <ctype.h> 
#define fi 1000 
int w; 
char e; 
struct quier { 
    int data[fi]; 
    int front, near; 
    int overflow; 
    int underflow; 
    char title[fi]; 
}; 

void enqueue(struct quier *quier, int a, char b) { 
    if (quier -> near >- fi - 1) { 
     quier -> overflow = 1; 
    } 
    else { 
     quier -> near++; 
     quier -> data[quier -> near] = a; 
     quier -> title[quier -> near] = b; 
     } 
} 

void dequeue(struct quier *quier) { 
    if (quier -> front == quier -> near) { 
     quier -> underflow = 1; 
    } 
    else { 
     quier -> front++; 
     w = quier -> data[quier -> front]; 
     e = quier -> title[quier -> front]; 
    } 
} 

int main() { 
    struct quier quier; 
    quier.front = -1; 
    quier.near -1; 
    quier.overflow = 0; 
    quier.underflow = 0; 

    int x, i, v; 
    char k; 
    scanf("%d", &x); 
    for (i = 0; i < x; i++) { 
     scanf("&c %d", &k, &v); 
     enqueue(&quier, v, k); 
    } 
} 
+1

_「これは入出力の例です」_実際の出力、または必要な出力_ "これは不完全なコードです。" _何が欠けていますか?読者があなたのために何をしたいですか?これは非常に不明瞭な質問です。 –

+1

'scanf("%c%d "、&k、&v);'の代わりに 'scanf("&c%d "、&k、&v);' –

+0

@AditiRawatのタイプミスがあります。 ' - >'は明らかに意図されていた... – duskwuff

答えて

1

まずような、それはあなたがscanfあなたがバッファに「N \」空白文字については、およそ一つのことを忘れてはならない使用する場合scanfにタイプミスがscanf("%c %d", &k, &v);

あるべきであるアディティRawatに気づきます。あなたの最初のscanfに入力を得て、あなたのループの値を読み込んで "Enter"ボタンを押すと、バッファ '\ n'に入れられ、後でforループの先頭の文字がscanfから '\ n'に読み込まれます。正しい値を取得するには入力バッファをクリアする必要があります。ここではいくつかの例:

はバッファをクリアし、各scanf後にそれを呼び出す関数記述:問題の周り

void clear_buff(void) 
    { 
     while ((c = getchar()) != '\n' && c != EOF) 
      ; 
    } 

一つの方法は、書式文字列内の変換指定の前に空白を置くことです。

scanf(" %c", &c); 

フォーマット文字列の空白は、scanfに先行する空白をスキップするように指示し、最初の空白以外の文字は%c変換指定子で読み取られます。

それとも、私が見つけgetchar();

scanf();後のもう一つの間違い使用します。ここで、あなたの初期化文字 =がある quier.near -1;

戦利品を?

if (quier -> near >- fi - 1)という文では、私はif (quier -> near > fi - 1)を意味すると思います。

および#define fi 1000は大文字にする必要があります。それは規約であり、コードを読みやすく理解しやすくします。必須ではありませんが、推奨されています。

それが変化した後、私は私が期待した出力を得る:あなたは常にそれをチェックして、あなたの入力が間違っている可能ならば、あなたが何をすべきだと思う、ユーザーからいくつかのデータを取るプログラムを書くときにも

A 5 
B 6 
..etc 

を?エラーメッセージを送信してプログラムを閉じたり、別のユーザーが試してみるべきですか?

あなたのプログラムで何が間違っているかを理解するだけで十分だと思います。私がどこかで間違えたら、私を修正してください。

関連する問題