2015-04-04 73 views
0

因此,我理解制作簡單計算器的基本概念,例如向用戶詢問兩個int值a,b,然後詢問他們要使用哪個操作符號。但我想創造一些更復雜和更實用的東西。計算器C:輸入操作符號和整數來執行計算

我的方法是分別掃描int值和操作符,所以首先它會掃描到int,然後轉換爲字符串?輸入如下: 1(enter) '/'(enter) 2(enter) '+'(enter) 4(enter)然後用戶可以按x結束並計算。

int main() 
{ 
int array_int[30]; 
char array_operators[30]; 
int hold_value = 0; 
int i = 0; 
printf("Enter your calculations, press enter after each number and operator is entered \n"); 
while(1==1){ 
    scanf("%i",&hold_value); //Use this to decide which array to put it in. 
    if(isdigit(hold_value)){ 
     array_int[i] = hold value // Check if input will be an int or char to decide which array to store it in?? 

} 

我還需要結束用戶輸入循環的方式,我知道我的邏輯,我投入的條件是沒有意義的,但我是新來的C和我不知道所有我的選擇。希望我的目標足夠清晰,足以讓你們幫助我。謝謝

+0

「用戶可以按X鍵結束」,x是mutiplication操作..... – 2015-04-04 09:00:19

+0

我在想'*'是乘法運算符 – Arfondol 2015-04-04 22:09:54

+0

好的。在這種情況下,您可以更改下面的代碼以滿足您的需求。 – 2015-04-05 03:36:30

回答

0

改變你當前的代碼,

int main() 
{ 
    int array_int[30]={0}; 
    char array_operators[30]={0}; //Initialize variables. It is a good practice 
    char hold_value; //hold value must be a char 
    int i = 0, j = 0; 
    printf("Enter your calculations, press enter after each number and operator is entered, press Q to quit \n"); 
    while(1){ 
     scanf(" %c",&hold_value); //Note the space before %c. It skips whitespace characters 

     if(hold_value=='Q') //break the loop if character is Q 
     break; 
     if(isdigit(hold_value)){ // If input is a digit 
     array_int[i++] = hold_value-'0'; //Store the integer in array_int 
     } 
     else{ //Input is a character 
     array_operators[j++] = hold_value; 
     } 

    } 

    //Calculate from here 

    return 0; 
} 
+0

非常感謝!你能解釋一下hold_value-'0'在幹什麼嗎?我從來沒有見過這種語法 – Arfondol 2015-04-04 21:49:40

+0

@Arfondol,每個字符都有自己的ASCII值(一個'int'),如[ASCII表格]所示(http://benborowiec.com/wp-content/uploads/2011/07/ better_ascii_table.jpg)。 **請注意,字符「0」不等於整數0 **。當輸入是'0',並且當你使用'array_int [i ++] = hold_value;'時,你正在分配數字42(見ASCII表知道爲什麼)而不是0.減去字符'0' '與減去42相同,這將在完成時給出正確的結果。順便說一句,如果它有幫助,接受一個答案。我會給你和回答者一些聲望。 – 2015-04-05 03:32:08

+0

@Arfondol,糟糕。上述評論中的42應該是48 ..作爲''0'== 48' – 2015-04-05 06:19:45