Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.01.2014, 23:59   #1
lialia
Форумчанин
 
Регистрация: 08.12.2012
Сообщений: 116
По умолчанию Программа вылетает при запуске С++

Подскажите пожалуйста,почему программа вылетает при запуске,вроде систем паус везде есть(
Код:
int main(int argc, char**argv)
{
	setlocale(0,"rus");
	list<node> *n=new list<node>;
	readListNode(n);
	list<node>::iterator active=n->begin();
	while(true)
	{
		system("cls");
		
		if(active!=n->end())
		{
			cout<<"Активный список: "<<active->name<<"\n";
		}
		else cout<<"Активный список не выбран\n";
		cout<<"Главное меню: \n 1: Вывод всех записей\n 2: Добавить запись\n 3: Поиск записи\n 4: Выбор активного списка\n 5: Добавить список\n 6: Удалить список\n 7: Удалить запись\n 8: Очистить таблицу\n 9: Выход\n";
		char choise=getch();
		cin.sync();
		switch(choise)
		{
		case '1':
			if(active!=n->end())
			{
				int x=0;
				for(list<record>::iterator i=active->l->begin();i!=active->l->end();i++)
				{
					cout<<"Запись "<<++x<<":\n";
					i->write();
				}
				system("pause");
				break;
			}
			else cout<<"Активный список не выбран\n"; system("pause");
			break;
		case '2':
			if(active!=n->end())
			{
				record buf;
				buf.read();
				active->l->push_back(buf);
				cout<<"Запись добавленна!\n";
				system("pause");
				break;
			}
			else cout<<"Активный список не выбран\n"; system("pause");
			break;
		case '3':
			if(active!=n->end())
			{
				cout<<"По какому параметру искать?\n 1:Вид \n 2:Род\n 3:Семейство\n 4:Ареал обитания\n 5:Численность\n";
				char choise=getch();
				char buf[maxc];
lialia вне форума Ответить с цитированием
Старый 05.01.2014, 23:59   #2
lialia
Форумчанин
 
Регистрация: 08.12.2012
Сообщений: 116
По умолчанию

продолжение
Код:
				switch (choise)
				{
				case '1':
					cout<<"Введите Вид: ";
					cin.getline(buf,maxc);
					for(list<record>::iterator i=active->l->begin();i!=active->l->end();i++)
					{
						if(strcmp(buf,(*i).type)==0)
						{
							(*i).write();
						}
					}
					break;
				case '2':
					cout<<"Введите Род: ";
					cin.getline(buf,maxc);
					for(list<record>::iterator i=active->l->begin();i!=active->l->end();i++)
					{
						if(strcmp(buf,(*i).kind)==0)
						{
							(*i).write();
						}
					}
					break;
				case '3':
					cout<<"Введите Семейство: ";
					cin.getline(buf,maxc);
					for(list<record>::iterator i=active->l->begin();i!=active->l->end();i++)
					{
						if(strcmp(buf,(*i).family)==0)
						{
							(*i).write();
						}
					}
					break;
				case '4':
					cout<<"Введите Ареал обитания: ";
					cin.getline(buf,maxc);
					for(list<record>::iterator i=active->l->begin();i!=active->l->end();i++)
					{
						if(strcmp(buf,(*i).habitat)==0)
						{
							(*i).write();
						}
					}
					break;
				case '5':
					cout<<"Введите численность: ";
					int x;
					x=readInt();
					for(list<record>::iterator i=active->l->begin();i!=active->l->end();i++)
					{
						if(x==(*i).number)
						{
							(*i).write();
						}
					}
					break;
				}
				system("pause");
				break;
			}
			else cout<<"Активный список не выбран\n"; system("pause");
			break;
		case '4':
			{
				list<node>::iterator i=n->begin();
				int x,y;
				x=0;
				if(i!=n->end())
				{
					cout<<"Введите номер выбираемого списка: \n";
					while(i!=n->end())
					{
						x++;
						cout<<x<<": "<<i->name<<endl;
						i++;
						
					}
					cin>>y;
					if(y>=1&&y<=x)
					{
						i=n->begin();
						for(int j=1;j<y;j++)
						{
							i++;
						}
						active=i;
						cout<<"Список выбран\n";
					}
					else cout<<"Список с таким номером не существует!\n";
				}
				else cout<<"Списки отсутствуют!\n";
			}
			system("pause");
			break;	
		case '5':
			{
				cout<<"Введите имя списка: ";
				node buf;
				cin.getline(buf.name,maxc);
				buf.l=new list<record>;
				n->push_back(buf);
				cout<<"Список добавлен\n";
				system("pause");
			}
			break;
		case '6':
			{
				list<node>::iterator i=n->begin();
				int x,y;
				x=0;
				if(i!=n->end())
				{
					cout<<"Введите номер удаляемого списка: \n";
					while(i!=n->end())
					{
						x++;
						cout<<x<<": "<<i->name<<endl;
						i++;
						
					}
					cin>>y;
					if(y>=1&&y<=x)
					{
						i=n->begin();
						for(int j=1;j<y;j++)
						{
							i++;
						}
						if(active==i)
						{
							n->erase(i);
							active=n->begin();
						}
						else n->erase(i);
						cout<<"Список удалён\n";
					}
					else cout<<"Список с таким номером не существует!\n";
				}
				else cout<<"Списки отсутствуют!\n";
			}
			system("pause");
			break;	
		case '7':
			if(active!=n->end())
			{
				cout<<"Введите номер удаляемой записи: ";
				int k,j=0;
				cin>>k;
				if(k<1)
				{
					cout<<"Вы ввели несуществующий номер\n";
					break;
				}
				list<record>::iterator i=active->l->begin();
				for(j=1;j<k&&i!=active->l->end();j++)
				{
					i++;
				}
				if(i==active->l->end())
				{
					cout<<"Вы ввели несуществующий номер\n";
					break;
				}
				else
				{
					active->l->erase(i);
					cout<<"Запись удалена!\n";
				}
			}
			else cout<<"Активный список не выбран\n"; system("pause");
			break;
		case '8':
			if(active!=n->end())
			{
				active->l->clear();
				break;
			}
			else cout<<"Активный список не выбран\n"; system("pause");
			break;
		case '9':
			{
				writeListNode(n);
				return 0;
			}
		}
	}
}
lialia вне форума Ответить с цитированием
Старый 06.01.2014, 05:12   #3
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
Лампочка

Судя по всему, просто отсутствует задержка экрана консоли.
В помощь: Задержка экрана консоли на C++
Streletz вне форума Ответить с цитированием
Старый 06.01.2014, 12:09   #4
lialia
Форумчанин
 
Регистрация: 08.12.2012
Сообщений: 116
По умолчанию

system("pause"); вроде бы везде стоит
lialia вне форума Ответить с цитированием
Старый 08.01.2014, 02:47   #5
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Цитата:
Сообщение от lialia Посмотреть сообщение
system("pause"); вроде бы везде стоит
Вы в этом уверены?
Посмотрите внимательно Ваш код.
После выполнения какой ветви кода происходит вылет программы?
К стати, помимо
Код:
system("pause");
есть ещё
Код:
getch();
Streletz вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Двоичный поиск в массиве.Вылетает ошибка при запуске. Че Гевара Общие вопросы C/C++ 5 06.01.2013 20:13
Вылетает при запуске slim>>> Общие вопросы C/C++ 6 10.12.2012 19:06
вылетает программа при использовании dll radiohobbyt Win Api 2 25.04.2011 11:39
Visual Studio 2010, при запуске на debug или rebuild вылетает ошибка Evgeniy1989 Общие вопросы .NET 1 20.08.2010 08:34
При запуске игры вылетает ошибка DarknEz Софт 28 14.12.2009 14:09