2017-12-01 4 views
0

私は大学で過去3週間のCプログラミングを勉強していましたが、これは私の初めての宿題です。私はそれを自分で95%完成させましたが、私はこの部分に行きました! なので、質問には4つの差分文字を入力してください( "N"、 "R"、 "F"、 "T")、何をすればよいかは、文字が表示されるたびにカウントされ、回数は、各文字が現れたと降順にそれらを配置し、このように:どのように私は高いから低いまで複数のカウンタを配置し、カウンタ名タグも表示します(これはcharです)?

enter image description here

私はすべてがソートしまったと私は残っているすべては最高のカウンターに正しい文字をリンクすることで、今、私ができますこれをIFの全面的なものでやってください。しかし私はそれを行う良い方法だとは思いません。まあ

#include <stdio.h> 
#include <math.h> 


printf("Enter answers (R-radio, T-tv, N-newspaper, F-facebook, * to finish\n"); 
ch = getch(); 
putch(ch); 
while (ch != '*') { 
    switch (ch) { 

    case 'R': 
     rc++; 

     break; 
    case 'T': 
     tc++; 

     break; 
    case 'F': 
     fc++; 
     break; 
    case 'N': 
     nc++; 

     break; 

    default: 
     if (error == 0) { 
      temp1 = ch; 
      error = 1; 
     } 
     break; 


    } 
    ch = getch(); 
    putch(ch); 

} 
a = rc; 
b = nc; 
c = tc; 
d = fc; 

int i; 

for (i = 0; i < 4; i++) { 

    if (d > c) { 
     temp = c; 
     c = d; 
     d = temp; 
    } 
    if (c > b) { 
     temp = b; 
     b = c; 
     c = temp; 
    } 
    if (b > a) { 
     temp = a; 
     a = b; 
     b = temp; 

    } 

} 

if (error == 1) { 
    printf("\nIllegal input : %c\n", temp1); 
} 
else { 
    printf("\n1. %c (%d)",a, a); 
    printf("\n2. R (%d)", b); 

    printf("\n3. F (%d)", c); 

    printf("\n4. T (%d)", d); 
} 

return 0; 
} 
+1

になる場合、あなたがやっていることを示すような気がしませんか? – babon

+1

charとその数を構造体に入れ、countに基づいて構造体をソートしたいとします。 –

+0

私はあなたが何を意味しているか知っているかどうかはまだわかりませんが、コースでまだ教えていない...あなたは説明できますか? –

答えて

1

、私は[2]各文字のために、一つの要素は、文字のためになり、別のカウンターのためになり、別の解決策は、文字列配列を移入することだと思います。比較のために2番目の要素を使用することができます。

0

ペアの値を格納するための "コンテナ"が必要です。 keyおよびvalue- MapまたはHashmapによると、

C言語では、独自の "オブジェクト"を作成することができます。これはstructuresです。それはおそらく最善の方法です。

例えば、別の方法が可能です。いくつかの "疑似csv" - 文字列配列を[key;value]の形式にするには、それを分割していつでも数値として解析する必要があります。 その解決策はちょっと面倒ですので、私に言いましょう。

それほど効果的ではありませんが、解を満足させることは、数字の配列(各回答の値)からmaxを得るための独自の関数を作成した後で、

  • 第1の反復:

    • パスアレイ[rc,nc,tc,fc](例えば、10,15,5,3)
    • 各変数RCと比較し、15を得、NC、TC、FC-15でありますnc
    • プリント15 (N)
  • 2反復

    • パスアレイ[rc,tc,fc](例えば。 10,5,3)
    • 各変数RC、TC、Fcに比較し、10を得、それはRC
    • など
    • プリント10 (C)

あります..

しかし、そこにも問題を抱えているいくつかの選択肢のカウントが同じ

関連する問題