2017-01-16 9 views
-4

これは私のコードです。入力の場合:スイッチケースがおそらくトリガーされていない

は、出力2必要がありますが、それはいくつかの理由で1を印刷だと私は知らない1

は、どこ問題です。

for(int length = 0; length < N; length++){ 
    scanf("%c", &T[length]); 
    scanf("%d", &L[length]); 
} 

をご入力した場合:私は、値L回反転する必要が

は、それは常に

#include <stdio.h> 
#include <ctype.h> 

int main(void) { 
    int N, aa, bb; 
    int k1 = 1, k2 = 0, k3 = 0, k4 = 0, k5 = 0; 
    scanf("%d", &N); 
    char *T = new char[N]; 
    int *L = new int[N]; 

    for (int length = 0; length < N; length++) { 
     scanf("%c", &T[length]); 
     scanf("%d", &L[length]); 
    } 
    for (int i = 0; i < N; i++) { 
     switch (toupper(T[i])) { 
     case 'A': 
      for (int j = 0; j < L[i]; j++) { 
       aa = k1; 
       bb = k2; 
       k2 = aa; 
       k1 = bb; 
      } 
      break; 
     case 'B': 
      for (int j = 0; j < L[i]; j++) { 
       aa = k1; 
       bb = k3; 
       k3 = aa; 
       k1 = bb; 
      } 
      break; 
     case 'C': 
      for (int j = 0; j < L[i]; j++) { 
       aa = k1; 
       bb = k4; 
       k4 = aa; 
       k1 = bb; 
      } 
      break; 
     case 'D': 
      for (int j = 0; j < L[i]; j++) { 
       aa = k1; 
       bb = k5; 
       k5 = aa; 
       k1 = bb; 
      } 
      break; 
     case 'E': 
      for (int j = 0; j < L[i]; j++) { 
       aa = k2; 
       bb = k3; 
       k3 = aa; 
       k2 = bb; 
      } 
      break; 
     case 'F': 
      for (int j = 0; j < L[i]; j++) { 
       aa = k2; 
       bb = k4; 
       k4 = aa; 
       k2 = bb; 
      } 
      break; 
     case 'G': 
      for (int j = 0; j < L[i]; j++) { 
       aa = k2; 
       bb = k5; 
       k5 = aa; 
       k2 = bb; 
      } 
      break; 
     case 'H': 
      for (int j = 0; j < L[i]; j++) { 
       aa = k3; 
       bb = k4; 
       k4 = aa; 
       k3 = bb; 
      } 
      break; 
     case 'I': 
      for (int j = 0; j < L[i]; j++) { 
       aa = k3; 
       bb = k5; 
       k5 = aa; 
       k3 = bb; 
      } 
      break; 
     case 'J': 
      for (int j = 0; j < L[i]; j++) { 
       aa = k4; 
       bb = k5; 
       k5 = aa; 
       k4 = bb; 
      } 
      break; 
     } 
    } 
    if (k1 == 1) 
     printf("1"); 
    else if (k2 == 1) 
     printf("2"); 
    else if (k3 == 1) 
     printf("3"); 
    else if (k4 == 1) 
     printf("4"); 
    else 
     printf("5"); 
    return 0; 
} 
+2

これらの変数は配列になりたいです...スイッチも必要ないでしょう:) – Rakete1111

+0

'k4'や' k5'のような変数の代わりに 'k [4]'と 'k [5] '。 Raketeさんのように、**配列を使用してください**。 'new x []'の代わりに 'std :: vector'を使ってメモリ管理を簡単にすることもできます。 – tadman

+2

デバッガを使用します。 – mascoj

答えて

1

ここを見て1を印刷しています、値がchar Tの

アンラッキー依存変更しました"1 A1"であれば、空白のスペースTになり、scanfは "A1"を整数にスキャンするのに最適です。これらの値を使用しようとする前にこれらの値を印刷することで、このバグを発見できました。

関連する問題