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

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

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

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

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

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

Unhandled exception at 0x770c15ee in Zad35.exe: 0xC0000005: Access violation reading location 0xcdcdce05.
Вот такая ошибка возникает в сортировке
Код:
int main()
{
ifstream file1("student.txt");
	char str[200];
	double sum=0;
	int index_exam;

	student *comp;
	Item *sp = new Item();
	Item *pn = new Item();
	Item *pp = new Item();

	sp->next = NULL;
	//читаем файл и заносим данные в список.
	while(!file1.eof())
	{
		//comp - структура компонент списка.
		comp = new student;
		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;
	//	cout << "comp_name = " << comp->name << endl;

		pn->p = comp;
		if (sp->next == NULL)
		{
			sp->next = pn;
			sp->p = pn->p;
		}

		Item *pp = new Item;
		pn->next = pp;
		pn = pp;





		
	}
	pn->next = NULL;
	pn= sp->next;
	//Выводим на экран
	while (pn->next!= NULL)
	{
		cout << pn->p->last_name << "\t" << pn->p->name << "\t" << pn->p->date  << "\t" << pn->p->rate << "\t";
		for (int j=0; j<5; j++)
			cout << pn->p->exams[j] << " ";
		cout << endl;
		pn = pn->next;
	}

    pn = sp;
	pp = sp;
	//сортировка списка.
	for( pn = sp; pn != NULL; pn = pn->next )
        for( pp = sp; pp != NULL; pp = pp->next )
			if(pn->p->rate > pp->p->rate)
			{

                student *tmp = pn->p;
                pn->p = pp->p;
                pp->p = tmp;
            }
}
Может кто нибудь видел в сети интересные статьи по списках. Если не жалко поделитесь ссылками)

Последний раз редактировалось Pein95; 27.01.2013 в 04:01.
Pein95 вне форума Ответить с цитированием
Старый 27.01.2013, 13:01   #2
Perchik71
С++, Delphi
Форумчанин
 
Аватар для Perchik71
 
Регистрация: 24.11.2012
Сообщений: 495
По умолчанию



[B]пишите говорящие имена переменным.[/B]

советую прочесть полностью вот это.

______________

списки и деревья

А вобще я бы всё это разбил и переделал... ща поищу свой пост.. где то писал уже про списки.. или напишу новый.

____

мой пост

функция внесения элемента я бы реализовал так

Код:
SparseObject<AType> *pointer = new SparseObject<AType>;
if(pointer)
{
  pointer->value = /*ваше значение*/;
  if(!start) end = start = pointer; //первый элемент списка
  else
  {  // Вносим в конец
     pointer->prior = end;
     end->next = pointer;
     end = pointer;
  }
}
Это двухсвязной список... есть ещё и односвязной.
отличие простое....
элемент знает и о предыдущем и след. элементе...
естественно там речь о указателях.
в классе элемента SparseObject.
есть два указателя
next и prior.
сам список класс списка... имеет теже два указателя но start и end.
Если помог, тут весы есть , Вам не сложно, а мне приятно.

Последний раз редактировалось Perchik71; 27.01.2013 в 13:24.
Perchik71 вне форума Ответить с цитированием
Старый 27.01.2013, 13:19   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А вот интересно, автор отладчиком по программе проход делал?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.01.2013, 16:24   #4
Pein95
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 881
По умолчанию

да, пользовался отладчиком. Но не пойму почему там ошибка.Ругается на указатели на спсисок Bad <ptr>
Pein95 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка списка. Rocknrolla38 Общие вопросы C/C++ 0 23.05.2012 11:59
Сортировка списка 4ika Общие вопросы C/C++ 3 27.11.2009 20:38
Сортировка списка DOJ Общие вопросы C/C++ 3 23.08.2009 19:36
Сортировка списка [MI_nor] Общие вопросы C/C++ 10 05.05.2009 23:52
Сортировка списка Александр из Перми Microsoft Office Excel 3 27.01.2007 22:46