2016-10-28 10 views
-1

私のプログラムは、分子を求め、分母の直後に(オプション1を選択すると)分母を求めます。Cで配列を使用して小数を代入する

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

typedef struct fraction 
{ 
int numerator, denom; 
} fraction; //defined the fraction. 

int main() 
{//start of program 

int z = 0; 
int y = 0; 

while (1) 
    { //start of while loop 
    int choice; 
    printf("\nPress 1 to enter a fraction\n"); 
    printf("Press 2 to view the entered fraction\n"); 

    scanf("%d", &choice); 

    fraction arrFraction[100]; 

    arrFraction[0].numerator = 0; 
    arrFraction[0].denom = 0; 

    if (choice == 1) // first option (enter numerator and then denom after) 
    { 
     printf("Enter the fraction\n"); 
     scanf("%d", &arrFraction[y].numerator); 
     scanf("%d", &arrFraction[z].denom); 
    y++  
    z++; 

    }// end of first if statement(to enter the fraction) 

    if (choice == 2) //to view the entered fractions. 
    { 
     printf("\n-----------------------------"); 

     for (int m = 0; m < z; m++) 
     { 
      printf(" %d/%d \n", arrFraction[y].numerator/arrFraction[z].denom); 
     } 
     printf("\n\n-----------------------------"); 
    } // end of second if statement (to view the fraction entered earlier) 
     } // end of while loop 

system("pause"); 
return(0); 

} 
+0

'printf("%d /%d \ n "、arrFraction [y] .numerator、arrFraction [z] .denom); ' –

+1

[以前の質問](http://stackoverflow.com/questions/40312021)/enter-with-c-using-arrays-strings)をOPの2時間前に使用しています。同じ配列要素をインデックスするのに2つの変数を使いました。 –

答えて

0

あなたが必要:私は、私は2

オプションを打ったとき、これは私のコードですが、私はその部分correct.Iは分数(複数可)を表示する方法を見つけ出すように見えることはできませんしまったかなり確信していますfraction arrFraction[100];whileループの外に移動します。それ以外の場合は、繰り返しごとに新しい配列が作成されます。

printf(" %d/%d \n", arrFraction[y].numerator/arrFraction[z].denom); 

は、次の2つの書式指定子が、1つの引数を供給している、間違っている、と述べました。これによりundefined behaviorが呼び出されます。あなたのコンパイラが警告していたはずです。

私は何をあなたの代わりにしたいことは、私は全体的なロジックと非常に確信していない、と述べた

printf(" %d/%d \n", arrFraction[y].numerator, arrFraction[z].denom); 

である、と信じています。なぜ100要素の配列が必要なようですか? 以前のレコード(レコードではない)に興味がある場合は、配列ではなく単純な変数のみを使用してください。さらに、とにかく2つの別々のインデックス/カウンタを持つ必要はありません。単一の索引で入力を非常に簡潔で堅牢な方法で管理することができます。

+0

arrFractionをwhileループから移動し、そのprintf()ステートメントを使用しようとしましたが、動作しませんでしたか? – airdemko3

+0

@ airdemko3まだ多くの問題があります... –

+0

私は配列でそれを必要とします。 – airdemko3