školský projekt

Sekcia o programovaní, programovacích jazykoch...
justsmiley
Nový používateľ
Nový používateľ
Príspevky: 38
Dátum registrácie: So 20. Dec, 2014, 10:17
Bydlisko: Žilina

školský projekt

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

Zdraví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();
}
Naposledy upravil/-a justsmiley v Ne 21. Dec, 2014, 16:09, upravené celkom 2 krát.
BieX
Nový používateľ
Nový používateľ
Príspevky: 39
Dátum registrácie: Ut 11. Jún, 2013, 14:19
Bydlisko: Praha

Re: školský projekt

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

A v čom je problém? Nevieš vyhľadávať v súbore? Urob to jednoducho (napr) cez getline - čítaj súbor riadok po riadku a podľa toho, čo vyhľadávaš, to proste raz nájdeš.
Ak máš všetky súbory načítané v pamäti, tak je to ešte jednoduchšie.
justsmiley
Nový používateľ
Nový používateľ
Príspevky: 38
Dátum registrácie: So 20. Dec, 2014, 10:17
Bydlisko: Žilina

Re: školský projekt

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

jop práve som nevedel ako to vyhľadávať, a hej v pamäati to už mám, skúsim sa pohrať s tým getline-om, díky zatiaľ
BieX
Nový používateľ
Nový používateľ
Príspevky: 39
Dátum registrácie: Ut 11. Jún, 2013, 14:19
Bydlisko: Praha

Re: školský projekt

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

Ak už to máš všetko v pamäti, tak to zbytočne nečítaj zo súboru znovu. Prejdi v cykle ten vektor, čo tam máš, a hotovo.
justsmiley
Nový používateľ
Nový používateľ
Príspevky: 38
Dátum registrácie: So 20. Dec, 2014, 10:17
Bydlisko: Žilina

Re: školský projekt

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

áno práveže som to nechcel zbytočne robiť ešte raz preto mi to nešlo do hlavy :D aaa hej len neviem ako tam mám vyhľadávať tie kľúčové slová, ktorá mám v tých súboroch a používateľ len zadá, napríklad krimi, a vyhodí mu to všetky krimi filmy
BieX
Nový používateľ
Nový používateľ
Príspevky: 39
Dátum registrácie: Ut 11. Jún, 2013, 14:19
Bydlisko: Praha

Re: školský projekt

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

No to záleží na tom, ako to máš v tej pamäti uložené. Vidím tam v kóde nejaké vektory, ale sa mi ho veľmi nechce študovať.
Popíš zjednodušene, ako a kam to načítavaš.
justsmiley
Nový používateľ
Nový používateľ
Príspevky: 38
Dátum registrácie: So 20. Dec, 2014, 10:17
Bydlisko: Žilina

Re: školský projekt

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

cez getline a stoi, mám vytvoreného dočasného herca a film, do ktorých to ukladám
BieX
Nový používateľ
Nový používateľ
Príspevky: 39
Dátum registrácie: Ut 11. Jún, 2013, 14:19
Bydlisko: Praha

Re: školský projekt

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

Veď sa zamysli trochu. Máš vektor zoznam_vsetkych_filmov. V ňom máš teda všetky filmy. Takže ak chce niekto vyhľadať herca, tak ti stačí prejsť cyklom vektor so všetkými fimami a v ňom prejsť cyklom všetkých hercov v obsadení a nájsť toho hľadaného.
Nejak mi nie je jasné, čo presne ti nie je jasné.
justsmiley
Nový používateľ
Nový používateľ
Príspevky: 38
Dátum registrácie: So 20. Dec, 2014, 10:17
Bydlisko: Žilina

Re: školský projekt

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

chcel som to pôvodne vyhľadávať pomocou find, ale nejak sa mi to nedarí asi neviem správny postup :D
BieX
Nový používateľ
Nový používateľ
Príspevky: 39
Dátum registrácie: Ut 11. Jún, 2013, 14:19
Bydlisko: Praha

Re: školský projekt

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

No to nie, vo vektore máš štruktúry a chceš hľadať podľa viacerých vlastností. Takže to skutočne prejdi v cykle (to zvládneš) a v ňom pár podmienok.

Návrat na "Programovanie"