2015-04-05 56 views
-3

我有一個字符串(一個方程式或多項式),我想獲取字符串中的特定字符。例如,如果用戶進入:如何獲得字符串中的特定字符

4x^2+3x-9 

我想創建每個術語的節點,所以在第一個節點,我需要將「4」的因素,並在其權力「2」。以下是我用於識別節點的代碼。

typedef struct node *ptr; 
struct node 
{ 
char sign; 
int power; 
int factor; 
ptr next; 
}; 
typedef ptr poly; 
typedef ptr position; 

和以下是我已經從用戶接受多項式編寫的代碼:

void fillPoly(poly polynomial) 
{ 
system("cls"); 
char polyn[100]; 
printf("\t\t\tEnter your polynomial please. Your polynomial should not exceed 7 terms.\n\t\t\t"); 
scanf("\t\t\t%s",polyn); 
position temp; 
temp=polynomial; 
while (polyn!='\0') 
{ 
    (temp)->next=(position)malloc(sizeof (struct node)); 
// Here is the problem 

}  
} 

我不知道如何分配節點之後繼續,我會怎麼走因素和權力,並填補他們?

+2

兩個問題:首先是你從用戶*兩次*讀取輸入,一次用'scanf',另一次用'gets',第二次輸入覆蓋字符數組的內容。第二個問題是,爲了避免字符串或字符文字中的特殊字符,您應該使用* back *斜線,如''\ 0''。 – 2015-04-05 18:14:57

+0

@JoachimPileborg我編輯了它,現在是否正確?但是,我正在尋找的是一種分別獲得因子和權力的方法,並將它們存儲在每個術語的節點中。我的問題清楚了嗎? – 2015-04-05 18:20:06

+0

http://stackoverflow.com/a/11693474/971127 – BLUEPIXY 2015-04-05 18:25:53

回答

0

這段代碼會幫助你。

for(int i=0;i<strlen(poly);i++) { 
// You need only to fetch 4 data members from the string  
// 1 - Sign  
    temp->sign = poly[i++]; 
// 2 - Factor  
    temp->factor = poly[i++] - '0' ; // to convert char to int  
// 3 - x (is ignored in ur case )  
// 4 - Power 
    temp->power = poly[i++] - '0' ; 

} 

輸入應該以sign開頭,否則會導致錯誤答案。這只是一個基本的代碼。應根據您提供的輸入類型進行進一步的修改。我希望你能做到。

相關問題