Премини към съдържанието

Иван Милкович

Потребител
  • Публикации

    7
  • Регистрация

  • Последно онлайн

Всичко за Иван Милкович

  • Рожден ден 31 октомври

Информация

  • Пол
    Мъж
  • Град
    Варна

Последни посетители

462 прегледа на профила

Постижения на Иван Милкович

Новобранец

Новобранец (2/21)

  • Първа публикация
  • Първа седмица
  • Месец по-късно
  • Една година във форума
  • Две години във форума

Нови значки

0

Репутация

  1. Благодаря ти. Успях да ги подкарам, като промених на някои места кода. Извежда ми файлове с верните разпространители вътре. Сега остана само да направя обратното. Трябва във файловете да са имената на продуцентите, а имената на файловете да са с тези на разпространителите.
  2. Здрасти, благодаря за отговорите. Всичко вече ми върви, освен горе споменатата функция. А именно: - 2. да се изведат в отделни файлове всички разпространители, които разпространяват филми на едни и същи продуценти Опитах някак, но единственият резултат, който получавам е отделни файлове на всички продуценти, а в тях имената на разпространителите, но като че ли произволно подбрани. void FileOutput(vector<CRazprostranitel> m_vObject) { ofstream File; list<string> lstList; vector<CFilms> m_vFilms; for (int i = 0; i < (signed)m_vObject.size(); i++) { m_vFilms = m_vObject.at(i).GetMovies(); for (int j = 0; j < (signed)m_vFilms.size(); j++) { lstList.push_back(m_vFilms.at(j).GetProducer()); } m_vFilms.clear(); } lstList.unique(); list<string> razps; CreateDirectory(L"Razprostraniteli", NULL); for (auto it = lstList.begin(); it != lstList.end(); it++) { for (int i = 0; i < (signed)m_vObject.size(); i++) { m_vFilms = m_vObject.at(i).GetMovies(); for (int j = 0; j < (signed)m_vFilms.size(); j++) { if (*it == m_vFilms.at(j).GetProducer()) razps.push_back(m_vObject.at(i).GetName()); } m_vFilms.clear(); } razps.unique(); File.open("Razprostraniteli\\" + *it + ".txt", ios::out); for (auto iter = razps.begin(); iter != razps.end(); iter++) { File << *iter << endl; } File.close(); } }
  3. Здравейте! Имам следните затруднения с курсов проект по ООП. Само една от функциите в условието не съм направил, тази, която не е с '+'. При стартиране на програмата в конзолата не зарежда абсолютно нищо, нито меню, нито файл. Само черен екран с мигащ курсор. #include <iostream> #include <string> #include <vector> #include <list> #include <iterator> #include <fstream> using namespace std; string Genres[9] = {"Драма", "Екшън", "Фантастика", "Ужаси", "Трилър", "Мистерия", "Комедия", "Криминален", "Документален"}; class CFilms { private: string m_strTitle, m_strProducer, m_strGenre; int m_iEdition, m_iYear; public: //подразбиращ CFilms() { m_strTitle = "Unknown", m_strProducer = "Unknown", m_strGenre = "Unknown", m_iYear = 0, m_iEdition = 0; } //експлицитен CFilms(const string Title, const string Producer, const string Genre, const int Year, const int Edition) { m_strTitle = Title; m_strProducer = Producer; m_strGenre = Genre; m_iEdition = Edition; m_iYear = Year; } //копиращ CFilms(const CFilms& ToCopy) { m_strTitle = ToCopy.GetTitle(); m_strProducer = ToCopy.GetProducer(); m_strGenre = ToCopy.GetGenre(); m_iEdition = ToCopy.GetEdition(); m_iYear = ToCopy.GetYear(); } //установяване на член-променливите void SetTitle(string Title) { m_strTitle = Title; } void SetProducer(string Producer) { m_strProducer = Producer; } void SetGenre(string Genre) { m_strGenre = Genre; } void SetEdition(int Edition) { m_iEdition = Edition; } void SetYear(int Year) { m_iYear = Year; } const string GetTitle() const { return m_strTitle; } const string GetProducer() const { return m_strProducer; } const string GetGenre() const { return m_strGenre; } const int GetEdition() const { return m_iEdition; } const int GetYear() const { return m_iYear; } //извеждане на екран friend ostream& operator<<(ostream& toStream, CFilms& object) { return toStream << "Movie title is: " << object.GetTitle() << ", Year: " << object.GetYear() << ", Genre: " << object.GetGenre() << ", Produced by: " << object.GetProducer() << endl; } //извеждане във файл ostream& Output(const string& Filename) { ofstream File(Filename); if (File) { File << "Movie title is: " << m_strTitle << ", Year: " << m_iYear << ", Genre: " << m_strGenre << ", Produced by: " << m_strProducer << "Editions: " << m_iEdition << endl; } else throw "File not found!"; } //валидация на жанра bool GenreValidation(string Genre) { for (int i = 0; i < 9; i++) { if (Genres[i] == Genre) return true; else return false; } } //изчисляване на възрастта на филма int MoviesAge() { int iResult; iResult = 2017 - m_iYear; return iResult; } //извеждане на данните за филма на принтер void PrinterOutput() { CFilms array[10]; ofstream PrinterFile("Print_movie"); for (int i = 0; i < 10;i++) { PrinterFile << array[i]; PrinterFile << endl; } PrinterFile.close(); } //оператор = const CFilms operator=(const CFilms& object) { CFilms m_Temp(object); return m_Temp; } //логически оператор bool MovieYearCheck(int Year) { if (m_iYear == Year) return true; else return false; } //оператор > bool operator >(const CFilms& object) { return m_iEdition > object.m_iEdition; } //оператор за съвпадение bool operator ==(const CFilms& object) { return m_strProducer == object.m_strProducer; } }; class CRazprostranitel : CFilms { private: vector<CFilms> m_vMovies; string m_strName; int m_iMovies, m_iRevenue; public: CRazprostranitel() { m_strName = "Unknown", m_iMovies = 0, m_iRevenue = 0; } //експлицитен CRazprostranitel(vector<CFilms> Objects, const string Name, const int Movies, const int Revenue) { m_vMovies = Objects; m_strName = Name; m_iMovies = Movies; m_iRevenue = Revenue; } //обект чрез друг обект CRazprostranitel(const CRazprostranitel& object) { m_vMovies = object.m_vMovies; m_strName = object.m_strName; m_iMovies = object.m_iMovies; m_iRevenue = object.m_iRevenue; } //установяване на променливите vector<CFilms> GetMovies() const { return m_vMovies; } const string GetName() const { return m_strName; } const int GetNumberMovies() const { return m_iMovies; } const int GetRevenue() const { return m_iRevenue; } //провека за повече от веднъж bool ContentMovies(CFilms object) { int iCount = 0; for each (CFilms var in m_vMovies) { if (var == object) { iCount++; } } if (iCount > 1) return true; else return false; } }; //функция за вектор от обекти vector<CRazprostranitel> AddVector(string Filename, int Size) { vector<CRazprostranitel> m_vObject; vector<CFilms> m_vFilms; string strName; int iCount_Movies, iCount_Revenue, Year, Edition, iCount = 0; string strTitle, strProducer, strGenre; ifstream File(Filename); if (!File) { throw "Файлът не е намерен!"; } while (!File.eof() && iCount < Size) { getline(File, strName); File >> iCount_Movies >> iCount_Revenue; for (int i = 0;i < iCount_Movies;i++) { getline(File, strTitle); getline(File, strProducer); File >> Year; getline(File, strGenre); File >> Edition; m_vFilms.push_back(CFilms(strTitle, strProducer, strGenre, Year, Edition)); } m_vObject.push_back(CRazprostranitel(m_vFilms, strName, iCount_Movies, iCount_Revenue)); m_vFilms.clear(); } return m_vObject; } //функция за извеждане на списък от филми list<string> ListEdition(vector<CRazprostranitel> m_vObject) { list<string> lstList; vector<CFilms> m_vFilms; bool flag = true; for each(CRazprostranitel var in m_vObject) { m_vFilms = var.GetMovies(); for each(CFilms film in m_vFilms) { if (film.GetEdition() > 50000 && film.GetGenre() == "Комедия") { lstList.push_back(film.GetTitle()); flag = false; } } m_vFilms.clear(); } if (flag) throw "Няма филми с тираж по-голям от 50000 копия.\n"; else lstList.unique(); return lstList; } //над 20 филма за продуцент void ProducerMovies(vector<CRazprostranitel> m_vObject, string Name) { list<string> lstList; vector<CFilms> m_vFilms; for each (CRazprostranitel var in m_vObject) { m_vFilms = var.GetMovies(); for (int i = 0;(unsigned)i < m_vFilms.size();i++) { if (m_vFilms[i].GetProducer() == Name) { lstList.push_back(m_vFilms[i].GetTitle()); } } } if (lstList.size() > 20) { while (!lstList.empty()) { cout << *lstList.begin() << endl; lstList.erase(lstList.begin()); } } else throw "Продуцентът няма повече от 20 филма или не съществува!\n"; } //функция за приходи void Revenues(vector<CRazprostranitel> m_vObject, string Filename) { bool flag = true; int iRevenue; ifstream File(Filename); if (!File) { throw "Файлът не е намерен"; } while (!File.eof()) { File >> iRevenue; cout << "Приходи: " << iRevenue << "\t"; for each(CRazprostranitel var in m_vObject) { if (var.GetRevenue() == iRevenue) { flag = false; cout << "\nИме на разпространител: " << var.GetName() << "\t" << var.GetNumberMovies() << endl; } } if (flag) { cout << "Няма разпространител с такива приходи\n"; } } } //функция по година void MoviesByYear(vector<CRazprostranitel> m_vObject, int Year) { vector<CFilms> m_vFilms; bool flag = true; for each(CRazprostranitel var in m_vObject) { m_vFilms = var.GetMovies(); for each(CFilms film in m_vFilms) { if (film.GetYear() == Year && (film.GetGenre() == "Екшън" || film.GetGenre() == "Драма")) { cout << var.GetName() << endl; flag = false; break; } } m_vFilms.clear(); } if (flag) { cout << "Няма разпространители на филми от " << Year << " г.\n"; } } int main() { setlocale(LC_ALL, "BGR"); //кирилица list<string> lstFilms; int iChoice; try { vector<CRazprostranitel> m_vPropagator(10); m_vPropagator = AddVector("movies.txt", 10); do { system("cls"); cout << "-------------Главно меню--------------" << endl; cout << "1. Извеждане на филми с тираж над 50000 копия от жанр комедия" << endl; cout << "2. Извеждане в отделни файлове на всички разпространители, " << "които разпространяват филми на едни и същи продуценти" << endl; cout << "3. Извеждане на заглавията на филмите, които са над 20 за даден продуцент" << endl; cout << "4. Извеждане на всички данни за разпространителите с брой приходи, " << "получени като параметър от входен файл" << endl; cout << "5. Извеждане на разпространителите на филми от жанр екшън или драма" << endl; cout << "6. Изход" << endl; cout << "Моля, изберете число между 1-6: "; cin >> iChoice; switch (iChoice) { case 1: { lstFilms = ListEdition(m_vPropagator); system("pause"); break; } case 2: { //second fn(m_vPropagator); system("pause"); break; } case 3: { string strName; cout << "\nВъведете име на продуцент: "; cin >> strName; ProducerMovies(m_vPropagator, strName); system("pause"); break; } case 4: { string Filename; cout << "\nВъведете име на файл: "; cin >> Filename; Revenues(m_vPropagator, Filename); system("pause"); break; } case 5: { int iYear; cout << "\nВъведете година: "; cin >> iYear; MoviesByYear(m_vPropagator, iYear); system("pause"); break; } default: cout << "\nИзход от програмата.\n"; exit(1); } } while (iChoice != 6); } catch (char* error) { throw "Error!\n"; } return 0; }
  4. Смених оператора, сложих я double и функцията си върви чудесно, благодаря Сега ми останаха DisplayScores(), MakeStudent() и main(), също така имам съмнения за тази AddScores(), отново с този for Edit: Стигнах донякъде, но отново имам нужда от помощ при условието. Все още не съм сигурен за този мейн, защото по условие имам създаване на обект от втори клас. #include <iostream> #include <string> #include <list> #include <iterator> #include <map> using namespace std; class CStudent //1st class { protected: string m_strName; list<int> m_iScores; string m_strFn; public: CStudent() //default { m_strName = "unknown"; m_strFn = "unknown"; } CStudent(string Name, string Fn) //exp { m_strName = Name; m_strFn = Fn; } const string GetName() { return m_strName; } //accessor name const double GetGrade() //accessor grade { int iSum = 0; double dAverage = 0.0; for (list<int>::iterator iter = m_iScores.begin(); iter != m_iScores.end(); ++iter) iSum += *iter; dAverage = iSum / double(m_iScores.size()); return dAverage; } void AddScore() //add score { int iMark; cout << "Insert grade: "; cin >> iMark; m_iScores.push_back(iMark); } friend ostream& operator <<(ostream& toStream, CStudent& obj) //output { toStream << "Student's name is " << obj.GetName() << ", with Faculty " << obj.m_strFn << endl; return toStream; } //friend istream& operator >>(istream& fromStream, CStudent& obj) //input //{ // fromStream >> obj.m_strName >> obj.m_strFn << endl; // return fromStream; //} }; class CCourse : public CStudent //2nd class { private: list<CStudent> m_strStudent_list; string m_strCourseName; public: CCourse() { m_strCourseName = "unknown"; } //default CCourse(string CourseName) { m_strCourseName = CourseName; } //exp const string GetCourseName() { return m_strCourseName; } //accessor course name friend ostream& operator <<(ostream& toStream, CCourse& obj) //output { toStream << "Course is "<<obj.GetCourseName() << ", Student's name is " << obj.GetName() << ", with Faculty " << obj.m_strFn << endl; return toStream; } void AddScore(const string Fn, int Grade) //100% { cout << "Faculty № " << Fn; cout << "\n Grade: "; cin >> Grade; } void AddScores(const string Fn, list<int> Grade_list, int Grade) //add a group of marks to a student 100% { int iMark; unsigned short has_2 = 0; cout << "Faculty: " << Fn << endl; //cout << "Insert "<<Grade<<" grades: "; //cin >> iNum; if (Grade_list.empty()) Grade_list.clear(); for (int i = 0; i < Grade; i++) { do { cout << "Insert grade: "; cin >> iMark; } while ((iMark < 2) || (iMark > 6)); if (iMark == 2) ++has_2; m_iScores.push_back(iMark); } } void DisplayScores() //90% { cout << "Student's name is "; cin >> m_strName; cout << GetName(); //ostream_iterator<int> out(cout, ""); cout << ", Grades: "; copy(m_iScores.begin(), m_iScores.end(),/* out);*/ ostream_iterator<int>(cout, " ")); cout << endl; double Average = GetGrade(); cout << "Average Grade: " << Average << endl; } void MakeStudent(string &Name, string &Fn) //add student { cout << "Insert course's name: "; cin >> m_strCourseName; cout << "Student's name is: "; cin >> Name; cout << "Faculty: "; cin >> Fn; cout << "Add grade: "; } }; int main(int argc, char ** argv) { list<CStudent> student_list; list<int> grade_list; string Fn = "61460114", Fn_new; string Name = "Ivan", Name_new; int iMark = 0; CStudent student(Name, Fn); CCourse asd("KST"); int iChoice; do { cout << "1. Test student from 1st class;\n"; cout << "2. Insert grade for the first student;\n"; cout << "3. Insert a group of grades for the first student;\n"; cout << "4. Display student;\n"; cout << "5. Create new student;\n"; cout << "6. EXIT.\n"; do { cout << "Your choice: "; cin >> iChoice; } while (iChoice < 1 || iChoice > 6); switch (iChoice) { case 1: { cout << "Creating a list of students...\n"; if (!student_list.empty()) student_list.clear(); cout << "The first one...\n"; cout << student; student_list.push_back(student); } break; case 2: { cout << "Insert one grade for student with "; asd.AddScore(Fn, iMark); } break; case 3: { unsigned short sGrade = 0; cout << "Number of grades: "; cin >> sGrade; cout << "Insert a group of " << sGrade << " grades for student with "; asd.AddScores(Fn, grade_list, sGrade); } break; case 4: asd.DisplayScores(); break; case 5: { cout << "Create new student...\n"; unsigned short sStud = 0; cout << "Number of students: "; cin >> sStud; for (int i = 0; i < sStud;i++) { asd.MakeStudent(Name_new, Fn_new); asd.AddScore(Fn_new, iMark); cout << asd; student_list.push_back(asd); } } break; default: cout << "End of tests.\n"; break; } } while (iChoice != 6); /*student_list.push_back(asd); asd.AddScores(Fn_new, grade_list, sGrade); asd.DisplayScores(); cout << asd;*/ cout << "\nStudents: "; for (list<CStudent>::iterator iter = student_list.begin(); iter != student_list.end(); ++iter) cout << *iter; cout << endl; return 0; }
  5. Т.е. операторът ми трябва да е такъв? for (list<int>::iterator iter = m_iScores.begin(); iter != m_iScores.end(); ++iter) iSum++;
  6. Да, с тази цел е, да връща средна оценка, но както казах не съм на 100% сигурен, затова помолих за помощ
  7. Здравейте, Нужна ми е помощ за курсов проект по ООП на С++ Не съм сигурен за кода, който до момента реализирах, тъй като не прави всичко по условието. Имам затруднения с main() функцията, както и с някой мембър на втория клас. Ще се радвам ако ми помогнете Ето и заданието: До момента съм стигнал дотук: #include <iostream> #include <string> #include <list> #include <iterator> using namespace std; class CStudent //1st class { protected: string m_strName; list<int> m_iScores; string m_strFn; public: CStudent() //default { m_strName = "unknown"; m_strFn = "unknown"; } CStudent(string Name, string Fn) //exp { m_strName = Name; m_strFn = Fn; } const string GetName() { return m_strName; } //accessor name const int GetGrade() //accessor grade { int iSum = 0; double dAverage = 0.0; for (int i = 0; i < (signed)m_iScores.size(); i++) iSum++; dAverage = iSum / double(m_iScores.size()); return dAverage; } void AddScore() //add score { int iMark, iNum; cout << "Number of grades: "; cin >> iNum; for (int i = 0; i < iNum; i++) { cout << "Insert grade: "; cin >> iMark; m_iScores.push_back(iMark); } } friend ostream& operator <<(ostream& toStream, CStudent& obj) //output { toStream << "Student's name is " << obj.m_strName << ", with Faculty № " << obj.m_strFn << endl; return toStream; } //friend istream& operator >>(istream& fromStream, CStudent& obj) //input //{ // fromStream >> obj.m_strName >> obj.m_strFn << endl; // return fromStream; //} }; class CCourse : CStudent //2nd class { private: list<string> m_strStudent_list; string m_strCourseName; public: CCourse() { m_strCourseName = "unknown"; } //default CCourse(string CourseName) { m_strCourseName = CourseName; } //exp const string GetCourseName() { return m_strCourseName; } //accessor course name void AddScore(const string Fn, int Grade) { cout << "Faculty № " << Fn; cout << "\n Grade: "; cin >> Grade; } void AddScores(const string Fn, list<int> Grade_list, int Grade) //add a group of marks to a student { cout << "Faculty № " << Fn; int iNum; cout << "Number of grades: "; cin >> iNum; cout << "\n Grade: "; for (int i = 0;i < iNum;i++) { cin >> Grade; Grade_list.push_back(Grade); } } void DisplayScores() { cout << "Student's name is "; cin >> m_strName; ostream_iterator<int> out(cout, ""); cout << "Grades: "; copy(m_iScores.begin(), m_iScores.end(), out); } void MakeStudent(string Fn, list<int> Grade_list, string Name, int Grade) //add student { cout << "Student's name is: "; cin >> Name; /*cout << "Faculty № "; cin >> Fn;*/ AddScores(Fn, Grade_list, Grade); } }; int main() { CStudent student("Ivan", "61460114"); cout << student; student.GetName(); student.AddScore(); cout << "Grades: " << student.GetGrade(); return 0; }
  • Разглеждащи това в момента   0 потребители

    • Няма регистрирани потребители разглеждащи тази страница.
×
×
  • Добави ново...

Информация

Поставихме бисквитки на устройството ви за най-добро потребителско изживяване. Можете да промените настройките си за бисквитки, или в противен случай приемаме, че сте съгласни с нашите Условия за ползване