0

デバッグのさらに別のツアーを終了しましたが、今また途方に暮れています。

問題は、プログラムを開いて任意のボタンを押すと、2 番目のメニューにあるにもかかわらず、常にムービー データベース全体が表示されることです。

ばかげた宿題の質問でお手数をおかけして申し訳ありません。さらにもう 1 つあります。ファイルから最初の 5 つの動画 (5 行) をプログラムに表示する方法) 最初の 5 行 (txt からの最初の 5 行は失敗) を印刷し、前の 5 行を再度印刷するには?

私のかなり哀れな試みを以下に示します。例: 最初にメメント、ゴッドファーザーがあります。次の 5 つの Godfather II 、Shawshank Redemption、Leon、A Bittersweet Life、Se7en.Now 前の 5:Memento、Godfather、Godfather II、Shawshank Redemption、Leon を印刷します。

#include <iostream> 
#include <string> 
#include <fstream> 

using namespace std; 

void sisend(); /*input*/
string valik(); /*choice*/
void kogukuvand(); /* the whole display of the database */
void valjumine();    /* program quit*/ 
void sisendvoivaljumine(); /*quiting with output to file or not*/
void viisjuurde(); /* input further 5 lines from the file */
void viismaha();    /* input previous 5 lines from the file*/





int main() 
{ 




         system ("title Filmide andmebaas"); /*Movie database*/
         system ("cls"); 
        char valik; 
         cout << "Vajuta klahv 'j',kui tahad naha jargmist 5 kirjet."<< endl; /* j to get extra 5*/
         cout << "Vajuta klahv 'e',kui tahad naha eelmist 5 kirjet."<< endl;  /* e for previous 5 lines */
         cout << "Vajuta klahv 'v',kui tahad lopetada programmi taitumist."<< endl; /* v for the output */
     cin >> valik; 



          if(valik=='j')
                 {
                  viisjuurde(); 

                 } 

          else  if(valik=='e')
                 {
                  viisjuurde(); 

                 } 
          else  if(valik=='v')

                 sisendvoivaljumine(); 


}
void viisjuurde() 
{ 
      ifstream filmike("andmebaas.txt"); 
      int n,  
      sum = 5; 
      string film; 
      string vaadatud; 
     int aasta; 
     long int hinne; 
      system ("CLS"); 
      cout << "Kogu filmide andmebaas"<<endl; 
     cout << "Film" << "  " << "Aasta" << "  " <<"Hinne"<< "  " << "Vaadatud" << endl; 
        cout << "------------------------------" << endl; 
         while (filmike>> film >> aasta >> hinne >> vaadatud)  
  {  
  sum += n;
        cout << film << "  " << aasta << "  " << hinne << "  " << vaadatud << endl;  
  } {
      system ("pause");  
      cin.get(); 
      main(); 

}  
}
  void viismaha() 
{ 
      ifstream filmike("andmebaas.txt"); 
      int n, sum = -5;
  while (filmike >> n) {
      sum += n;
  }
      string film; 
      string vaadatud; 
     int aasta; 
     long int hinne; 
      system ("CLS"); 
      cout << "Kogu filmide andmebaas"<<endl; 
     cout << "Film" << "  " << "Aasta" << "  " <<"Hinne"<< "  " << "Vaadatud" << endl; 
        cout << "------------------------------" << endl; 
         while (filmike>> film >> aasta >> hinne >> vaadatud)  
  { 
        cout << film << "  " << aasta << "  " << hinne << "  " << vaadatud << endl;  
  } 
      system ("pause");  
      cin.get(); 
      main(); 

  } 
void sisend() /* user input */
{ 
     string nimi; 
     int aasta; 
     long int hinne; 
     string vaadatud; 
     ofstream lisafilm("andmebaas.txt", ios::app); 
     cout <<"Sisestage filmi nimi." << endl;  /*Enter film's name */
     cin >> nimi; 
     string film;

     cout << "Sisestage filmi ilmumisaasta." << endl;  /* Enter film's year */
     cin >> aasta;     

     cout << "Sisestage filmi hinne." << endl;  /* Enter film's rating */
     cin >> hinne; 

     cout << "Kas olete filmi juba vaadanud?" << endl;  /* Has the user seen the movie already*/
     cout << "Vastake 'Jah' voi 'Ei'" << endl; 
     cin >> vaadatud; 
cout << film << "  " << aasta << "  " << hinne << "  " << vaadatud << endl;  

lisafilm<< nimi << "  " << aasta << "  " << hinne<< "  " << vaadatud << endl;  
lisafilm.close();  
main();

 cout << "Aitah kasutamast andmebaasi." << endl; 
 system("pause"); 
 cin.get (); 
} 



 void valjumine() /*quiting without output */
{  
 system("CLS"); 
 cout << "Aitah kasutamast andmebaasi." << endl; 
 system("pause"); 
 cin.get (); 
  } 
void kogukuvand()  /* the whole movie database*/
{ 
      ifstream filmike("andmebaas.txt"); 
      string film; 
      string vaadatud; 
     int aasta; 
     long int hinne; 
      system ("CLS"); 
      cout << "Kogu filmide andmebaas"<<endl; 
     cout << "Film" << "  " << "Aasta" << "  " <<"Hinne"<< "  " << "Vaadatud" << endl; 
        cout << "------------------------------" << endl; 
         while (filmike>> film >> aasta >> hinne >> vaadatud)  
  { 
        cout << film << "  " << aasta << "  " << hinne << "  " << vaadatud << endl;  
  } 
      system ("pause");  
      cin.get(); 
      main(); 

  } 
void sisendvoivaljumine() 
{ 
     char valik2; 
     system ("CLS"); 
     cout << "Vajuta klahv 'j',kui tahad salvestada kirje ja v2ljuda programmist." << endl;   /* output new movie to file and quit*/
     cout << "Vajuta klahv 'e',kui ei taha salvestada kirje ja v2ljuda programmist." << endl;  /*just quit, without any output to file*/
     cout << "Vajuta klahv 'k',kui tahad naha kogu filmide andmebaasi." << endl;  /* display the whole movie database*/
     cin >> valik2;


     if(valik2=='j')
                 {
                  sisend(); 

                 } 

          else  if(valik2=='e')
                 {
                  valjumine(); 

                 } 
          else  if(valik2=='k')

                 kogukuvand(); 




}
4

1 に答える 1

2

私はあなたの言語を読まないのでトリッキーですが、これは間違っています

valik2である必要がありますchar

if(valik='j')である必要がありますif(valik=='j')if(valik2='j')である必要がありますif(valik2=='j')。これはよくある間違いです。他のすべての人も同じです。

void sisendvoivaljumine() 
{ 
     char valik2; 
     system ("CLS"); 
     cout << "Vajuta klahv 'j',kui tahad salvestada kirje ja v2ljuda programmist." << endl;   /* output new movie to file and quit*/
     cout << "Vajuta klahv 'e',kui ei taha salvestada kirje ja v2ljuda programmist." << endl;  /*just quit, without any output to file*/
     cout << "Vajuta klahv 'k',kui tahad naha kogu filmide andmebaasi." << endl;  /* display the whole movie database*/
     cin >> valik2;
     if(valik2=='j')
             {
              sisend(); 

             } 

      else  if(valik2=='e')
             {
              valjumine(); 

             } 
      else  if(valik2=='k')

             kogukuvand(); 
于 2013-03-18T08:30:11.160 に答える