Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Нужна помощь по исправлении программы в Visual Studio

Ответить
Настройки темы
C/C++ - Нужна помощь по исправлении программы в Visual Studio

Новый участник


Сообщения: 2
Благодарности: 0

Профиль | Отправить 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

 

Аватара для K.A.V.

Ленивый кусок мяса


Contributor


Сообщения: 1986
Благодарности: 723

Профиль | Сайт | Отправить PM | Цитировать


Цитата Alena95Wais:
int op;
//Программа
for (;
{
n = 0;
cout « "1 - вывод на экран всего списка" « endl;
cout « "2 -
вывод на экран одного экземпляра" « endl;
cout « "3 - вывод на экран всех экземпляров" « endl;
cout « "4 - выйти из программы" « endl;
cin » op; »
Я, конечно, не спец с++, но мне кажется, что-то в описании цикла for у вас явно не так...

1. Заключайте ваш код при написании сообщения в тег CODE (символ # на панели в области ответа)
2. Думаю, было бы лучше, если бы вы предоставили ваш проект, который не работает, т.к. копировать отсюда текст по кускам, создавать нужные файлы по вашим комментариям и создавать проект с непонятно какими настройкам, чтобы угадать ваши и ещё затем нужно попытаться воспроизвести проблему - не очень увлекательное занятие
3. Есть такая кнопочка в Visual Studio с текстом "Локальный отладчик Windows", может помочь выяснить, на каком участке кода программа крашится

-------
[Справочник по командам Windows] -- [Справочник по NSIS] -- [SFX Creator - для создания SFX архивов]

Это сообщение посчитали полезным следующие участники:

Отправлено: 16:07, 02-06-2015 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Забанен


Сообщения: 793
Благодарности: 260

Профиль | Цитировать


K.A.V., какбэ... а что ежели человек собирает проект с помощью консольного компилятора и VS не пользуется по каким-то определенным соображениям?

Отправлено: 18:11, 02-06-2015 | #3


Аватара для K.A.V.

Ленивый кусок мяса


Contributor


Сообщения: 1986
Благодарности: 723

Профиль | Сайт | Отправить PM | Цитировать


Цитата greg zakharov:
K.A.V., какбэ... а что ежели человек собирает проект с помощью консольного компилятора и VS не пользуется по каким-то определенным соображениям? »
Если честно, не совсем понимаю смысл вашего вопроса конкретно в данной ситуации, когда человек явно пишет, что пользуется VS, если бы речи о VS не было - я бы и слова не сказал про готовый проект и отладчик.
Я, например, немного пишу в VS и, глядя на такой "запрос помощи" у меня не возникает желания копировать с сообщения части когда (причем не форматированного), выискивая строки с указанием, где какой файл заканчивается, чтобы вручную это всё записать себе на диск для теста. Я уже не говорю о том, что проблема может крыться повсюду и сборка одного и того же кода может по-разному отработать в зависимости от настроек проекта...

-------
[Справочник по командам Windows] -- [Справочник по NSIS] -- [SFX Creator - для создания SFX архивов]


Отправлено: 18:50, 02-06-2015 | #4


Забанен


Сообщения: 793
Благодарности: 260

Профиль | Цитировать


Цитата K.A.V.:
Если честно, не совсем понимаю смысл вашего вопроса конкретно в данной ситуации...
Поясняю. Не раз и не два попадались те, у которых VS установлен, но сибирают проекты они из консоли, говоря при этом, что используют VS. Так что суть вопроса из разряда "о наболевшем из повседневной практики". Что до кода, согласен, в неотформатированном виде даже читать не хочется.

Отправлено: 19:01, 02-06-2015 | #5


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


greg zakharov, Вы всерьёз, «какбэ», полагаете, что человек, не пользующийся для оформления кода тэгом BBCode, пользует консольный компилятор? Я бы не рискнул такое предполагать .
Это сообщение посчитали полезным следующие участники:

Отправлено: 02:03, 03-06-2015 | #6


Забанен


Сообщения: 793
Благодарности: 260

Профиль | Цитировать


Iska, вполне. Такие люди уже попадались. Хотя лет эдак пять назад я бы сам не поверил в такое.

Отправлено: 18:23, 03-06-2015 | #7


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


greg zakharov, только вот тогда навряд ли его имя будет выглядеть как «Alena», и возрастом он будет скорее пред/послепенсионным.

Отправлено: 05:32, 04-06-2015 | #8


Забанен


Сообщения: 793
Благодарности: 260

Профиль | Цитировать


Iska, блажен тот, кто свято верует, что под ником "Alena" действительно скрывается особа женского пола, ибо социальная инженерия чудеса творит, - и ведь ведутся порой на сие. И потом, на каждый Ваш аргумент найдутся два а то и более. Как говаривал Прутков - зрите в корень.

Отправлено: 18:20, 04-06-2015 | #9


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


greg zakharov, я свято верую в то, что дядькам пенсионного возраста ни к чему заниматься выклянчиванием лабораторок на форумах.

Отправлено: 19:12, 04-06-2015 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Нужна помощь по исправлении программы в Visual Studio

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Графика - 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




 
Переход