2015-04-05 57 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开头,否则会导致错误答案。这只是一个基本的代码。应根据您提供的输入类型进行进一步的修改。我希望你能做到。

相关问题