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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.01.2013, 00:17   #1
Pein95
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 881
По умолчанию Удалить елемент из списка

Есть односвязный список
Код:
struct student
{
	char last_name[10];
	char name[10];
	char date[10];
	int exams[5];
	double rate;
};

struct Item
{
	student element;
	Item *next;
};

int main()
{

	ifstream file1("student.txt");
	char str[200];
	double sum=0;
	int index_exam;

	Item *list = new Item;
	Item *list_el = new Item;
	list->next = NULL;
	list_el = list;
        //формирование списка
	while (!file1.eof())
	{
		student comp;
		sum = 0.0;
		file1.getline(str,sizeof(str));
		char *pw;
		pw = strtok(str, " ");
		strcpy(comp.last_name,pw);

		pw = strtok(NULL," ");
		strcpy(comp.name,pw);

		pw = strtok(NULL," ");
		strcpy(comp.date,pw);

		for (index_exam = 0; index_exam<5; index_exam++)
		{
			pw = strtok(NULL," ");

			char mark[1];
			strcpy(mark,pw);
			comp.exams[index_exam] = atoi(mark);
			sum+=comp.exams[index_exam];
		}
		comp.rate = sum/5.0;

		list_el->next = new Item;
		list_el = list_el->next;
		list_el->element = comp;
		list_el->next = NULL;

	}
когда список сформирован мне нужно удалить из него те елементы у которых есть две двойки за екзамены, вот функция удаления:
Код:
void del_el(Item *list)
{
	Item *p = new Item;
	int dva = 0;
	p = list;
	while (1)
	{
		Item *pps = new Item;
		pps = p;
		
		if (!p) break;
		for (int i=0; i<5; i++)
			if (p->element.exams[i] == 2)
				dva++;
				
		if (dva == 2)
		{
			if (!p->next)
			{
				pps->next = NULL;
				break;
			}
			pps->next = p->next;
			delete p;
			p = pps;
		}
		p = p->next;
		dva = 0;
	}
но тут программа почему то вылетает никак не пойму почему. Отладчиком пользовался, но не смог найти свою ошибку.
Буду благодарен за помощь)
Pein95 вне форума Ответить с цитированием
Старый 31.01.2013, 03:08   #2
Pein95
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 881
По умолчанию

Если тут ещо есть ктото) помогите пожалуйста) завтра надо здать ето(
Pein95 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ServerSocket, удалить запись из списка Shouldercannon Работа с сетью в Delphi 9 27.01.2013 20:17
Удалить повторы из списка mazzahaker Общие вопросы C/C++ 0 21.04.2012 22:34
Как заблокировать елемент списка metiska Microsoft Office Access 6 04.09.2010 14:28
не могу удалить запись из списка asd-uk Помощь студентам 0 26.04.2010 20:35