2017-03-16 15 views
1

こんにちは私のプログラムのこの部分は、2x3 +2y²のような入力文字列を取得して2つの配列に分けることです。termos = termsとexp =指数関数それを動かす文字列を変数の型と比較する

#include <stdio.h> 
#include <math.h> 

int main() 
{ 
    char poly[50]; 
    int termos[10]; 
    int exp[10]; 
    int contt=0, conte=0, i=0; 
    char var1, var2, var3; 

    printf("Introduza o polinómio\n"); 
    scanf("%s", &poly); 

    for(i=0; i<50; i++) 
    { 
    if(poly[i-1]==char && poly[i]==int && poly[i-1]!='+') 
    { 
     exp[conte]=poly[i]; 
     conte++; 
    } 

    if(poly[i]==int) 
    { 
     termos[contt]=poly[i]; 
     contt++; 
    } 

    if(poly[i]=='x') 
     var1=poly[i]; 
    if(poly[i]=='y') 
     var2=poly[i]; 
    if(poly[i]=='z') 
     var3=poly[i]; 
    } 
+1

forループのインデックスを確認してください。 i = 0で始まり[i - 1]を検索しようとするのは正しいことではありません。 – AlexG

+0

コードは配列の終わりまでループしてはいけませんが、文字列の最後にはループしないでください: 'for(i = 0; i <50; i ++)' - 'for(i = 0; poly [i]; i ++ ) ' – chux

+0

' for(i = 0; i <50; i ++) 'は、入力文字列を短くすることができるので正しくありません。 'i = 0;を使います。 while(poly [i]!= '\ 0'){... i ++;} ' –

答えて

0

には実行時のタイプ情報がありません。おそらく、The XY Problemを読んで、別の質問をしてください。

あなたは、例えば、 poly[i-1]は英字であるかどうかを知りたいのラインで
0

if(poly[i-1]==char && poly[i]==int && poly[i-1]!='+') 

'a'、または数字です。次の関数をctype.hから使用できます。

// among the includes 
#include <ctype.h> 

// later 
if(isalpha(poly[i-1]) && isdigit(poly[i]) && poly[i-1]!='+') 

コードにはさらに問題があります。これらをコメントとして掲載します。

+0

は 'exp []'を 'exp [conte] = poly [i] - '0'に変更するのと同じです。 'exp(n)'は一般的なアンチログ関数であるため、 'exp []'を使用すると、ASCII桁から数値 ' – infixed

+0

btwに変換すると混乱するかもしれません。 – infixed

関連する問題