Das ist mein Code. Für die Eingabe:Switch-Gehäuse wahrscheinlich nicht triggern
A 1
sollte es Ausgabe 2, aber es wird Druck 1 aus irgendeinem Grund, und ich weiß nicht, ist, wo das Problem ist.
Ich brauche Werte L mal umkehrt, geänderte Werte von char T.
Unlucky abhängig ist, ist es immer 1. Drucken
#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;
}
Diese Variablen wollen ein Array sein ... Sie brauchen auch keinen Schalter :) – Rakete1111
Anstelle von Variablen wie 'k4' und' k5' wollen Sie wirklich 'k [4]' und 'k [5] '. Wie Rakete sagt, ** benutze ein Array **. Sie können auch 'std :: vector' anstelle von' new x [] 'verwenden, um die Speicherverwaltung zu vereinfachen. – tadman
Verwenden Sie einen Debugger. – mascoj