2017-10-30 3 views
-3

演算選択で入力文字列を使用して電卓を作成するにはどうすればよいですか?割り当てられた:)演算選択で入力文字列を持つ電卓

printf("choose:"); 
scanf("%s", (char *) &choose); 

switch(choose) 
{ 
case 'tambah': 
printf("Masukkan Nilai 1:"); 
scanf("%d", &x); 
printf("Masukkan Nilai 2:"); 
scanf("%d", &y); 
hasil = tambah(x,y); 
printf("%d + %d = %d", x, y, hasil); 
break; 

case 'kurang': 
printf("Masukkan Nilai 1:"); 
scanf("%d", &x); 
printf("Masukkan Nilai 2:"); 
scanf("%d", &y); 
hasil = kurang(x,y); 
printf("%d - %d = %d", x, y, hasil); 
break; 
+3

コードは不完全です。特に、main()関数が欠けているようです。問題の[最小、完全、および検証可能](https://stackoverflow.com/help/mcve)の例になるようにコードを編集してください。そうすれば、再現と解決を試みることができます。 [How to Ask](https://stackoverflow.com/help/how-to-ask)もお読みください。 –

+1

switch文を文字列に適用できないのはなぜですか? https://stackoverflow.com/questions/650162/why-switch-statement-cannot-be-applied-on-strings –

+2

''tambah''これは間違いなくcharではありません。 – DimChtz

答えて

1

を直接文字列(あなたの例では、あなただけのcharことになっている、リテラルの中にいくつかの文字を入れているので、あなたが文字列を使用考慮)を使用してswitch()文でCに私の講義はひどいアイデアです。可能なオプションを列挙して、strcmpに入力して操作とブランチに合わせることをお勧めします。

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 

enum { 
tambah = 0, 
kurang = 1 
}; 

int decodeLineType(const char* strAction) 
{ 
    int i = 0; 

    char acAllowedCodes[2][7] = {"tambah","kurang"}; 

    for(; i < 2; ++i) 
    { 
    if (strncmp(strAction, acAllowedCodes[i], strlen(acAllowedCodes[i])) == 0) 
    { 
     return i; 
    } 
    } 

    return(-1); 
} 

int main() 
{ 
    char choose[30] = {0}; 
    scanf("%s", choose); 
    switch(decodeLineType(choose)) 
    { 
     case tambah : 
     /* some logic here*/ 
     break; 
     case kurang : 
     /* some logic here*/ 
     break; 
     default: 
     break; 
    } 
    return(0); 
} 

Offtopic:はまた、あなたは国際フォーラムでの指導を求めるしようとしているとき、プログラム内のすべてのラベルや変数名の英語の使用を検討してください。

+0

よろしくお願いします、私は試してみます –

関連する問題