2

単語を配列に取り込んでから、switchステートメントを介して各文字をスローし、各文字がどの文字であるかに応じて各文字にポイントを割り当て、単語の最終的なポイント値を与えるswitchステートメントを作成しようとしています。配列部分を正しく取得できないようです。どんな助けでもいただければ幸いです!

int main(){
int letter_points = 0;
char word[7];
int word_length = 7;
int i;
printf("Enter a Word\n");
scanf("%s", word);
for(i = 0; i < word_length; i++){

switch(word){
    //1 point
    case 'A':
    case 'E':
    case 'I':
    case 'L':
    case 'N':
    case 'O':
    case 'R':
    case 'S':
    case 'T':
    case 'U':
        letter_points++;
        break;
    //2 points
    case 'D':
    case 'G':
        letter_points += 2;
        break;
    //3 points
    case 'B':
    case 'C':
    case 'M':
    case 'P':
        letter_points += 3;
        break;
    //4 points
    case 'F':
    case 'H':
    case 'V':
    case 'W':
    case 'Y':
        letter_points += 4;
        break;
    //5 points
    case 'K':
        letter_points += 5;
        break;
    //8 points
    case 'J':
    case 'X':
        letter_points += 8;
        break;
    //10 points
    case 'Q':
    case 'Z':
        letter_points += 10;
        break;
}
}
printf("%d\n", letter_points);
return;
}
4

5 に答える 5

7

ルックアップ配列を使用する方がおそらく高速です。

int const letter_score[26] = { 1, 2, 1, 3, ..., 10 };
/*                      key:   A  B  C  D        Z    */

score += letter_score[c - 'A'];   // or "toupper(word[i]) - 'A'"

警告:これには、UnicodeやASCIIなど、大文字が連続して配置されているエンコーディングが必要です。

于 2012-09-14T15:33:24.380 に答える
3

これを使ってみてください

 switch(word[i]){ 

switchステートメントで。現状では、配列の範囲を反復処理している場合でも、配列内の各要素をテストしているわけではありません。私は他の答えでKerrekSBによって提案されたアプローチに行くと言った。これははるかにすっきりとコンパクトです。

于 2012-09-14T15:33:19.843 に答える
3

変数wordは配列ですがswitch、各文字に配置する必要があります。したがって、次のものが必要です。

switch(word[i])
于 2012-09-14T15:33:28.967 に答える
0

switchC では、 (および の式)で配列を使用できませんcase。また、渡される型switch()とそれぞれで指定される型がcase一致する必要があります。したがって、できることのほとんどは、キャラクターをオンにすることです。ただし、配列全体を switch に渡していることを除いて、ほとんど正しいです。代わりに index を使用して文字を参照してください。例えば:

switch (word[i]) {
 ...
}
于 2012-09-14T15:36:13.963 に答える
0

size7 の配列として word があり、配列をオンにすることはできません。配列の各文字をオンにする必要があるため、次を使用します: switch(word[i])

于 2013-03-25T11:26:20.303 に答える