školský projekt

Programovacie jazyky, rady, poradňa...
justsmiley
Novice
Novice
Príspevky: 1
Registrovaný: 21 dec 2014, 16:50

školský projekt

Príspevok od používateľa justsmiley »

dravím, chcel by som poprosiť o pomoc, s projektom, vačšina kódu je hotová, len neviem akým spôsobom, by som mohol do kódu zakomponovať vyhľadávanie, mám na vstupe 2 súbory z ktorých čítam informácie o filmoch a hercoch a potreboval by som tam pridať niečo ako vyhľadávanie, napr podľa mena herca,priezviska , žánru, ID ktoré som si priradil v tom ktorom súbore, rokov, filmu, atď, kto v akom filme hrá, sú to csv súbory, napr v súbore :
s filmami : ID;Matthew;McConaughey;4.11.1969;USA
s hercami : ID;Interstellar;2014;sci-fi, thriller;USA;148;6 8 4 (čísla na konci sú ID hercov ktorí v tom filme hrali)

/visual studio 2013/



Kód: Vybrať všetko

#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <sstream>
using namespace std;

#define SUBOR_HERCI "herci.csv"
#define SUBOR_FILMY "filmy.csv"

struct Herec {
   int id_;
   string meno_;
   string priezvisko_;
   string datum_narodenia_;
   string miesto_narodenia_;
};

struct Film {
   int id_;
   string nazov_;
   int rok_;
   string zaner_;
   string povod_;
   int trvanie_;
   vector<Herec *>obsadenie_;

   void detail_filmu()
   {
      cout << id_ << ": " << nazov_ << " (" << zaner_ << ")" << endl;
      cout << endl;
      cout << "Natoceny ........: " << rok_ << endl;
      cout << "Zem povodu ....: " << povod_ << endl;
      cout << "Dlzka filmu ....: " << trvanie_ << " minut" << endl;
      cout << endl;
      cout << "Ucinkuju: "; vypis_hercov();
      cout << endl;
      cout << endl;
   }

   void vypis_hercov()
   {
      for (unsigned int i = 0; i < obsadenie_.size(); i++)
         cout << obsadenie_[i]->meno_ << " " << obsadenie_[i]->priezvisko_ << ", ";
   }
};

void nacitaj_hercov();
void nacitaj_filmy();


bool je_subor_prazdny(ifstream &);
vector<Herec>zoznam_vsetkych_hercov;
vector<Film>zoznam_vsetkych_filmov;

int main()
{
   nacitaj_hercov();
   nacitaj_filmy();

   system("PAUSE");

   return 0;
}

void nacitaj_hercov()
{
   ifstream herci_file;
   herci_file.open(SUBOR_HERCI);

   if (herci_file.fail())
   {
      cerr << "Subor " << SUBOR_HERCI << " sa nepodarilo otvorit.\nPravdepodobne neexistuje." << endl;
   }
   else if (je_subor_prazdny(herci_file))
   {
      cout << "Subor s hercami je prazdny." << endl;
   }
   else
   {
      while (herci_file)
      {
         string line;

         while (getline(herci_file, line))
         {
            Herec temp;
            stringstream ss(line);
            string hs;

            getline(ss, hs, ';');
            int id = stoi(hs);
            temp.id_ = id;


            getline(ss, hs, ';');
            temp.meno_ = hs;


            getline(ss, hs, ';');
            temp.priezvisko_ = hs;

            getline(ss, hs, ';');
            temp.datum_narodenia_ = hs;

            getline(ss, hs, ';');
            temp.miesto_narodenia_ = hs;

            zoznam_vsetkych_hercov.push_back(temp);
         }

      }
   }
}

void nacitaj_filmy()
{
   ifstream filmy_file;
   filmy_file.open(SUBOR_FILMY);

   if (filmy_file.fail())
   {
      cerr << "Subor " << SUBOR_FILMY << " sa nepodarilo otvorit.\nPravdepodobne neexistuje." << endl;
   }
   else if (je_subor_prazdny(filmy_file))
   {
      cout << "Subor s filmami je prazdny." << endl;
   }
   else
   {
      while (filmy_file)
      {
         string line;

         while (getline(filmy_file, line))
         {
            stringstream ss(line);
            string hs;

            getline(ss, hs, ';');
            int id = stoi(hs);
            temp.id_ = id;

            getline(ss, hs, ';');
            temp.nazov_ = hs;

            getline(ss, hs, ';');
            int rok = stoi(hs);
            temp.rok_ = rok;

            getline(ss, hs, ';');
            temp.zaner_ = hs;

            getline(ss, hs, ';');
            temp.povod_ = hs;

            getline(ss, hs, ';');
            int delka = stoi(hs); 
               temp.trvani_ = delka;

            while (ss)
            {
               ss >> hs;

               for (int i = 0; i < zoznam_vsetkych_hercov.size(); i++)
               {
                  if (zoznam_vsetkych_hercov[i].id_ == stoi(hs))
                     temp.obsadenie_.push_back(&zoznam_vsetkych_hercov[i]);
               }
            }

            zoznam_vsetkych_filmov.push_back(temp);
         }

      }
   }
}

bool je_subor_prazdny(ifstream & subor)
{
   return subor.peek() == ifstream::traits_type::eof();
}
Napísať odpoveď