2016-11-09 9 views
-2

特定のテキストファイルを読み込んでいる何らかの理由で、最初と3番目のファイルを読み込んで出力しています。私はなぜそれが全く読んでいないのかわからない、第2の男のために負の数があるかどうかにかかわらず。ここでは私が使用しているテキストファイルです:EDIT:C++の入力ファイルと出力ファイル

EDIT:読書の問題を修正しましたが、空のファイルを読むと、それは空であると認識し、終了しません。 "file was empty"のようなメッセージを出してください。ここでは2 12

ジョセフKradin III

ジョーブー

ナンシーアダムス

15000の一部である私私のループとフィンのすべてがそこにあるコード:

fin >> firstName; 
     getline(fin, lastName); 
     fin >> deposit >> year >> numCompound; 

    do 
    { 

     fullName = firstName + " " + lastName; 

     // if statements to determine the interest rate depending on the years 

     if (year >= 5) 
      rate = 0.045; 
     else if ((year < 5) & (year >= 4)) 
      rate = 0.04; 
     else if ((year < 4) & (year >= 3)) 
      rate = 0.035; 
     else if ((year < 3) & (year >= 2)) 
      rate = 0.025; 
     else if ((year < 2) & (year >= 1)) 
      rate = 0.02; 
     else 
      rate = 0.015; 

     if (deposit < 0 || year < 0 || numCompound < 0) 
     { 
      cout << fullName << " You have entered a negative number" << endl; 
      fout << fullName << " You have entered a negative number" << endl; 

     } 

     else if (deposit > 0 || year > 0 || numCompound > 0) 
     { 
      numname++; 

      // finding the value for amount of money aquired after n years, including interest. 
      moneyAquired = deposit * pow((1 + rate/numCompound), numCompound*year); 

      // finding earned interest 

      earnedInterest = moneyAquired - deposit; 

      // For the Total Deposit entered 

      totaldeposit += deposit; 

      // For total earned interest 

      totalinterest += earnedInterest; 

      cout << fixed << setprecision(2) << showpoint << setw(20) << left << fullName << setw(15) << year << setw(14) << rate * 100 << "$" << setw(15) << deposit << "$" << setw(15) << earnedInterest << "$" << setw(20) << moneyAquired << endl; 

      fout << fixed << setprecision(2) << showpoint << setw(20) << left << fullName << setw(15) << year << setw(14) << rate * 100 << "$" << setw(15) << deposit << "$" << setw(15) << earnedInterest << "$" << setw(20) << moneyAquired << endl; 

     } 

    } while (fin >> firstName >> lastName >> deposit >> year >> numCompound && !fin.eof()); 

    //end of do while loop 
    fout.close(); 
    fin.close(); 
+0

http://ericlippert.com/2014/03/05/how-to-debugを削除-small-programs/ – Biffen

+0

はい、実際の質問以外は、あなたが投稿すると考えることができるすべてです。 – StoryTeller

答えて

0

代わりの先頭に移動

while (fin >> firstName >> lastName >> deposit >> year >> numCompound && !fin.eof()) 

を行うと、

fin >> firstName; 
getline(fin, lastName); 
fin >> deposit >> year >> numCompound; 
+0

ええ、私はあなたの返信を見ていない限り、実際にそれをしました。しかし、別の問題があります。 Idkは、ファイルが空であることをプログラムに認識させる方法を教えてくれますか?指導教授は、空のファイルを読むときに終了するべきではなく、 "ファイルが空だった"のようなメッセージを出すべきだと言っています。 – Sieghart

+0

よくカウンターを追加し、増加しない場合は印刷**ファイルが空です**。 また、コードを複製しないでください:do {...} while(...);を単に 'while {...}'に置き換える正当な理由 – Djee

関連する問題