|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Нужна помощь по исправлении программы в Visual Studio |
|
C/C++ - Нужна помощь по исправлении программы в Visual Studio
|
Новый участник Сообщения: 2 |
Профиль | Отправить PM | Цитировать Программа вроде бы и работает, но вылетает.
//заголовочный файл main.h для класса Book #include "stdafx.h" #include <string> #include <vector> using namespace std; class Book { public: Book(); Book(int head, std::vector<int> V); ~Book(); string getName_book(); int getNumber_book(); int getCount_head(); string get_title(); vector<int> getMyVector(); void setMyVector(int count); vector<int> selectCountHead(int count); void toStringg(); //вывод на экран всего списка static void showList(Book mas[]); //вывод на экран одного экземпляра static void showOneObject(Book mas[], int n); //Вывод на экран всех экземпляров с количеством страниц больше выбранного static void showList(Book mas[], int pages); //Logger log; static int number_object; private: int number_book; string name_book; int count_head; int count_paeges_for_head; int count_pages_book; vector<int> myVector; int calculateCountPagesInBook(vector<int> V); }; 23:18:29 // BookCpp.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" #include "main.h" #include <iostream> #include <cstdlib> #include <time.h> #include <stdio.h> #include <vector> #include <string> #include <fstream> #include <iomanip> #include <cstdlib> #include <assert.h> using namespace std; int Book::number_object = 0; Book::Book(int head, vector<int> V) { srand(time(NULL)); number_object++; //Статический счётчик количества экземпляров number_book += number_object; //Номер по порядку name_book = get_title(); //Название книги count_head = head; //Количество глав myVector = selectCountHead(head); //вектор count_pages_book = calculateCountPagesInBook(V); //Количество страниц в книге //Logger::getLogger(); } void Book::toStringg() { cout « "Количества экземпляров = " + number_object « endl; cout « "Номер по порядку = " + number_book « endl; cout « "Название книги = " + name_book « endl; cout « "Количество глав = " + count_head « endl; cout « "Количество страниц в книге = " +count_pages_book « endl; } Book::Book() { } Book::~Book() { number_object--; } int Book::getNumber_book() { return number_book; } string Book::get_title() { string xstr = ""; ifstream xfile("myfile.txt", ios::binary); vector<string> tokens; //узнаем размер файла, и выделяем память в строке xfile.seekg(0, ios_base::end); xstr.resize(xfile.tellg()); xfile.seekg(0, ios_base::beg); //копируем данные xfile.read((char*)xstr.data(), xstr.size()); string::size_type lastPos = xstr.find_first_not_of(" ", 0); string::size_type pos = xstr.find_first_of(" ", lastPos); while (string::npos != pos || string::npos != lastPos) { tokens.push_back(xstr.substr(lastPos, pos - lastPos)); lastPos = xstr.find_first_not_of(" ", pos); pos = xstr.find_first_of(" ", lastPos); } xstr = ""; srand(time(NULL)); for (int i = 0; i < 3; i++) { xstr += tokens[rand() % tokens.size()] + " "; } srand(time(NULL)); return xstr; } string Book::getName_book() { return name_book; } int Book::getCount_head() { return count_head; } int Book::calculateCountPagesInBook(vector<int> V) { int result = 0; for (int i = 0; i < V.size(); i++) result += V[i]; return result; } vector<int> Book::selectCountHead(int count) { for (int i = 0; i < myVector.size(); i++) myVector[i] = 50 + rand() % 51; return myVector; } vector<int> Book::getMyVector() { return myVector; } void Book::setMyVector(int count) { } //вывод всего списка void Book::showList(Book mas[]) { for (int i = 0; i < 20; i++) { cout « mas[i].number_object « endl; cout « mas[i].number_book « endl; cout « mas[i].name_book « endl; cout « mas[i].count_head « endl; cout « mas[i].count_pages_book « endl; } } //вывод на экран одного экземпляра void Book::showOneObject(Book mas[], int n) { mas[n].toStringg(); } //Вывод на экран всех экземпляров с количеством страниц больше выбранного void Book::showList(Book mas[], int pages) { for (int i = 0; i < 20; i++) { if (mas[i].count_pages_book > pages) { //cout « mas[i].number_object « endl; cout « mas[i].number_book « endl; cout « mas[i].name_book « endl; cout « mas[i].count_head « endl; cout « mas[i].count_pages_book « endl; } } } void method() { Book mas[20]; for (int i = 0; i < 20; i++) { } } int _tmain(int argc, _TCHAR* argv[]) { int n = 0; setlocale(LC_ALL, "rus"); Book b; Book c; string s = b.get_title(); srand(time(NULL)); string sss = c.get_title(); cout « s « endl; cout « sss « endl; std::vector<int> myV(20); Book mas[20]; string ss = ""; int temp; for (int i = 0; i < 20; i++) { srand(time(NULL)); for (int j = 0; j < myV.size(); j++) { srand(time(NULL)); myV[i] = 50 + rand() % 51; } temp = 5 + rand() % 6; mas[i] = Book(temp, myV); srand(time(NULL)); } int op; //Программа for (; { n = 0; cout « "1 - вывод на экран всего списка" « endl; cout « "2 - вывод на экран одного экземпляра" « endl; cout « "3 - вывод на экран всех экземпляров" « endl; cout « "4 - выйти из программы" « endl; cin » op; switch (op) { case 1: { Book::showList(mas); }; break; case 2: { if (n < 20 && n > -1) { cout « "Введите номер экземпляра" « endl; cin » n; } else { cout « "Вы ввели недопустимое значение" « endl; continue; } Book::showOneObject(mas, n); }; break; case 3: { if(n < 100 && n > -1) { cout « "Введите количество страниц " « endl; cin » n; } else { cout « "Вы ввели недопустимое значение" « endl; continue; } Book::showList(mas, n); } ; break; case 4: return 0; break; default: cout « "Повторите ввод операции" « endl; break; } } system("pause"); return 0; } //заголовочный файл logger.h логер программы #include "stdafx.h" #include <string> #include <vector> #include <iostream> using namespace std; class Logger{ public: Logger(); static Logger getLogger(); void logging(int number); void logging(int number, string input_data, string output_data); void logging(int number, string input_data, string output_data, string method_name); void logging(int number, string input_data, string output_data, string method_name, bool is_true); }; //logger.cpp реализация класса Loger #include "stdafx.h" #include "main.h" #include "logger.h" #include <iostream> #include <cstdlib> #include <time.h> #include <stdio.h> #include <vector> #include <string> #include <fstream> #include <iomanip> #include <cstdlib> #include <assert.h> #include <time.h> using namespace std; //Logger::Logger() { // //} //Logger Logger::getLogger() { // Logger log; // return log; //} void Logger::logging(int number) { string s = ""; time_t some; struct tm * timeinfo; time(&some); // timeinfo = localtime(&some); // string my_time = asctime_s(timeinfo); ofstream my_log_file("log.txt", ios::app); //s += "Время события " + my_time + " "; s += "Номер обьекта " + number; my_log_file « s; } void Logger::logging(int number, string input_data, string output_data) { string s = ""; Logger::logging(number); ofstream my_log_file("log.txt", ios::app); s += "Входные данные " + input_data + " "; s += "Выходные данные " + output_data + " "; } void Logger::logging(int number, string input_data, string output_data, string method_name) { string s; Logger::logging(number, input_data, output_data); ofstream my_log_file("log.txt", ios::app); s += "Имя метода " + method_name; } void Logger::logging(int number, string input_data, string output_data, string method_name, bool is_true) { string s = ""; Logger::logging(number, input_data, output_data, method_name); if (is_true) { s += "Успешное событие"; } else { s += "Неуспешное событие"; } } |
|
Отправлено: 15:29, 02-06-2015 |
Ленивый кусок мяса Сообщения: 1986
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Alena95Wais:
1. Заключайте ваш код при написании сообщения в тег CODE (символ # на панели в области ответа) 2. Думаю, было бы лучше, если бы вы предоставили ваш проект, который не работает, т.к. копировать отсюда текст по кускам, создавать нужные файлы по вашим комментариям и создавать проект с непонятно какими настройкам, чтобы угадать ваши и ещё затем нужно попытаться воспроизвести проблему - не очень увлекательное занятие 3. Есть такая кнопочка в Visual Studio с текстом "Локальный отладчик Windows", может помочь выяснить, на каком участке кода программа крашится |
|
------- Отправлено: 16:07, 02-06-2015 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Забанен Сообщения: 793
|
K.A.V., какбэ... а что ежели человек собирает проект с помощью консольного компилятора и VS не пользуется по каким-то определенным соображениям?
|
Отправлено: 18:11, 02-06-2015 | #3 |
Ленивый кусок мяса Сообщения: 1986
|
Профиль | Сайт | Отправить PM | Цитировать Цитата greg zakharov:
Я, например, немного пишу в VS и, глядя на такой "запрос помощи" у меня не возникает желания копировать с сообщения части когда (причем не форматированного), выискивая строки с указанием, где какой файл заканчивается, чтобы вручную это всё записать себе на диск для теста. Я уже не говорю о том, что проблема может крыться повсюду и сборка одного и того же кода может по-разному отработать в зависимости от настроек проекта... |
|
------- Отправлено: 18:50, 02-06-2015 | #4 |
Забанен Сообщения: 793
|
Цитата K.A.V.:
|
||
Отправлено: 19:01, 02-06-2015 | #5 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать greg zakharov, Вы всерьёз, «какбэ», полагаете, что человек, не пользующийся для оформления кода тэгом BBCode, пользует консольный компилятор? Я бы не рискнул такое предполагать .
|
Отправлено: 02:03, 03-06-2015 | #6 |
Забанен Сообщения: 793
|
Iska, вполне. Такие люди уже попадались. Хотя лет эдак пять назад я бы сам не поверил в такое.
|
Отправлено: 18:23, 03-06-2015 | #7 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать greg zakharov, только вот тогда навряд ли его имя будет выглядеть как «Alena», и возрастом он будет скорее пред/послепенсионным.
|
Отправлено: 05:32, 04-06-2015 | #8 |
Забанен Сообщения: 793
|
Iska, блажен тот, кто свято верует, что под ником "Alena" действительно скрывается особа женского пола, ибо социальная инженерия чудеса творит, - и ведь ведутся порой на сие. И потом, на каждый Ваш аргумент найдутся два а то и более. Как говаривал Прутков - зрите в корень.
|
Отправлено: 18:20, 04-06-2015 | #9 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать greg zakharov, я свято верую в то, что дядькам пенсионного возраста ни к чему заниматься выклянчиванием лабораторок на форумах.
|
Отправлено: 19:12, 04-06-2015 | #10 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Графика - Synfig Studio 2D Анимация (Нужна помощь) | ilja.dvoretzkij | Программное обеспечение Windows | 0 | 19-12-2014 20:03 | |
MSFT SQL Server - крах программы отладчик Microsoft Visual Studio 2005 | Maza11 | Программирование и базы данных | 9 | 01-02-2012 13:41 | |
C/C++ - Вопросы по C++ и Visual Studio... | _DeadBoy_ | Программирование и базы данных | 4 | 10-03-2011 17:29 | |
.NET - [решено] TextBox в Visual Basic 2010 - нужна помощь | SharkyUA | Программирование и базы данных | 2 | 02-02-2011 01:06 | |
Save Visual Studio 2005 - Open Visual Studio 2003 | XCodeR | Программирование и базы данных | 3 | 07-07-2008 22:47 |
|