2017-05-24 2 views
-1

だから私はCを学ぶ割り当てて、私のように動作するようにしようとしてきた、と私は間違ってカウント値 - C

シナリオがあるつもりだどこの補正のいくつかの並べ替えを期待していました調査では、これは私がテーブルのためのM、S、B、Aおよび1,2,3,4-さ

 POPULARITY TABLE 
    ---------------------------------------------------- 
    City Cricket Footy Tennis Soccer 
    ----------------------------------------------------- 
    Melbourne 4 1 1 4 
    Sydney 4 5 1 0 
    Brisbane 2 2 4 4 
    Adelaide 1 0 2 0 
    ----------------------------------------------------- 

変数私は私のコードを実行

毎回を生成すると予想しています出力されますそれは値を数えないか、または1つの値のtheres 36を言います

#include <stdio.h> 
    int main() 
    { 
     int i, j; 
     char M, B, S, A; 
     int m_cricket = 0, m_footy = 0, m_tennis = 0, m_soccer = 0; 
     int s_cricket = 0, s_footy = 0, s_tennis = 0, s_soccer = 0 
     int b_cricket = 0, b_footy = 0, b_tennis = 0, b_soccer = 0 
     int a_cricket = 0, a_footy = 0, a_tennis = 0, a_soccer = 0 
     int survey[36][2] = {{M, 1}, {S, 2}, {B, 1}, {B, 3}, {M, 2}, {B, 4}, {S, 1}, {A, 3}, {M, 4}, {B, 2}, {B, 1}, {S, 3}, {B, 4}, {B, 4}, {M, 1}, {M, 1}, {B, 3}, {B, 3}, {S, 1}, {S, 1}, {S, 2}, {M, 4}, {M, 4}, {S, 2}, {A, 1}, {S, 2}, {B, 3}, {M, 1}, {B, 1}, {S, 2}, {A, 3}, {M, 4}, {S, 1}, {B, 2}, {M, 3}, {B, 4}}; 

for (int i = 0; i < 36; i++) 
{ 
     for (int j = 0; j == 2; j++) 
     { 
      if (survey[i][j] == M, 1) 
      { 
       m_cricket++; 
      } 
     } 

} 

    printf("\tCity Cricket Footy Tennis Soccer\n"); 
    printf("------------------------------------------------\n"); 
    printf("Melbourne:\t %d\t %d\t %d\t %d\t\n", m_cricket, m_footy, m_tennis, m_soccer); 
    printf("Sydney:\t %d\t %d\t %d\t %d\t\n", s_cricket, s_footy, s_tennis, s_soccer); 
    printf("Brisbane:\t %d\t %d\t %d\t %d\t\n", b_cricket, b_footy, b_tennis, b_soccer); 
    printf("Adelaide:\t %d\t %d\t %d\t %d\t\n", a_cricket, a_footy, a_tennis, a_soccer); 

    return 0; 
} 

どこが間違っていますか?これをコード化できる良い方法はありますか?

私はこれだけをコーディングするとき、私は1つの都市の作業を取得することができれば、残りの部分は簡単だろうとロジックの下で行っていたとして、メルボルンにコード

+1

'私は、jはint型;'あなたがループで再びそれらを宣言しているため、冗長であり、彼らは唯一のループで使用されています。 – InternetAussie

+0

C言語のプログラミングを行うときには、試行錯誤だけで "構文を推測する"ことはできません。それは決してうまくいかないでしょう。代わりに、実際にあなたが何をしているのか、あなたが書いているコードのすべての行で知る必要があります。このコードは意味をなさない - あなたは初級レベルのプログラミングブックで文字列や文字を勉強する必要があります。 – Lundin

答えて

1

このループ...

for (int j = 0; j == 2; j++) 

...は何もしません。 j2の間だけ実行されます。 0に初期化されているので、そのコードは決して実行されません。

あなたがjかどうかを確認したい内部配列(01)の値をループにそれをしたい場合は、あなたの外側のループでやっただけのように、このような未満2です。

for (int j = 0; j < 2; j++) 

あなたがそれらのループ内ifで同時に両方の値をチェックしようとしているように見える与えられますが、多分何がやりたいことは、このような異なるif文でそのループを交換するのですか?あなたがMBSA変数との意向をしている場合

if ((survey[i][0] == M) && (survey[i][1]== 1)) 

はまた、あなたがちょうど彼らが値を割り当てられていないとして、現在'M'のように周りの単一引用符を配置する必要があり、あなたの配列に文字に置くことです潜在的にいかなる価値も持ちます。同じこともifのステートメントにも当てはまります。だからあなたのコードを要約する

は次のようになります。

#include <stdio.h> 
int main() 
    { 
    int m_cricket = 0, m_footy = 0, m_tennis = 0, m_soccer = 0; 
    int s_cricket = 0, s_footy = 0, s_tennis = 0, s_soccer = 0 
    int b_cricket = 0, b_footy = 0, b_tennis = 0, b_soccer = 0 
    int a_cricket = 0, a_footy = 0, a_tennis = 0, a_soccer = 0 
    int survey[36][2] = {{'M', 1}, {'S', 2}, {'B', 1}, {'B', 3}, {'M', 2}, {'B', 4}, {'S', 1}, {'A', 3}, {'M', 4}, {'B', 2}, {'B', 1}, {'S', 3}, {'B', 4}, {'B', 4}, {'M', 1}, {'M', 1}, {'B', 3}, {'B', 3}, {'S', 1}, {'S', 1}, {'S', 2}, {'M', 4}, {'M', 4}, {'S', 2}, {'A', 1}, {'S', 2}, {'B', 3}, {'M', 1}, {'B', 1}, {'S', 2}, {''A'', 3}, {'M', 4}, {'S', 1}, {'B', 2}, {'M', 3}, {'B', 4}}; 

    for (int i = 0; i < 36; i++) 
     { 
     if ((survey[i][0] == 'M') && (survey[i][1]==1)) 
     { 
     m_cricket++; 
     } 
     } 

    printf("\tCity Cricket Footy Tennis Soccer\n"); 
    printf("------------------------------------------------\n"); 
    printf("Melbourne:\t %d\t %d\t %d\t %d\t\n", m_cricket, m_footy, m_tennis, m_soccer); 
    printf("Sydney:\t %d\t %d\t %d\t %d\t\n", s_cricket, s_footy, s_tennis, s_soccer); 
    printf("Brisbane:\t %d\t %d\t %d\t %d\t\n", b_cricket, b_footy, b_tennis, b_soccer); 
    printf("Adelaide:\t %d\t %d\t %d\t %d\t\n", a_cricket, a_footy, a_tennis, a_soccer); 

    return 0; 
} 
1

2つのことを目立た:

  • ます何かを意味するように、初期化されていない文字変数(MBS、およびA)を使用してください。これは非常に混乱しています。
  • この行:if (survey[i][j] == M, 1)はまったく意味がありません。カンマ演算子では条件が単一の1と等しくなるため、常にifが使用されます。