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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.05.2010, 17:40   #1
olegnoscov
 
Регистрация: 29.12.2009
Сообщений: 8
По умолчанию Сортировка...

не пойму что не так... нужно отсортировать небольшую базу данных на основе двунаправленного списка. на си.
вот функция....
Код:
struct basa 
{
	int shifr;
	char country[15];
	char name[20];
	int god;
	char zhanr[10];
	int nal;
};
struct NODE
{
struct NODE *ptrn1;
struct basa inform;
struct NODE *ptrn2;
};

struct NODE *first;
struct NODE *p, *p1,*r, *q;
struct basa x,y;
struct NODE **a;
void SortName()
  {//1
 struct  basa zp;
   int i,n,k,j=1;
p=first;
n=0;
   while(p!=NULL)
 {n++;
	 p=p->ptrn2;
   }

   while(j)
     {//5
      j=0;
      for(i=1;i<n;i++)
	{//2
		if ((strcmp((a[i]->inform.name),(a[i-1]->inform.name)))<0)
			{//3
	     zp=(a[i]->inform);
	     a[i]->inform=a[i-1]->inform;
	     a[i-1]->inform=zp;
	     j=1;
		}//3
	  }//2
   }//5
}//1
вижуал ошибок не выжаёт, но когда запускаешь прогу и обращаешься к функции выскакиевает ошибка на сразвнении строк.
if ((strcmp((a[i]->inform.name),(a[i-1]->inform.name)))<0) вот тут.
помогите пожалуйста))

Последний раз редактировалось Sazary; 11.05.2010 в 19:18.
olegnoscov вне форума Ответить с цитированием
Старый 11.05.2010, 19:42   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

У вас объявлены только указатели, а память не под что не выделена. new, malloc и иже с ними спасут бедного студента.
p51x вне форума Ответить с цитированием
Старый 11.05.2010, 19:48   #3
olegnoscov
 
Регистрация: 29.12.2009
Сообщений: 8
По умолчанию

эээ.....так ведь память под все эти дела выделяется в других функциях...когда сама база формируется....во время запуска этой функции база уже готова и хранится в памяти) требуется отсортировать её....

в first лежит адрес первого элемента.

какой-то косяк в обращении к элементу через масив...
a[i]->inform.name к любому полю обращаюсь на нём ошибка выскакивает...

Последний раз редактировалось Sazary; 11.05.2010 в 20:11.
olegnoscov вне форума Ответить с цитированием
Старый 11.05.2010, 20:07   #4
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

a - это у вас массив списков?
И, возможно, стоит посмотреть выделение памяти и инициализацию для него.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 11.05.2010, 20:40   #5
olegnoscov
 
Регистрация: 29.12.2009
Сообщений: 8
По умолчанию

Всё!)) вкурил!)))) Функцию написал, сё работает)) Спасибо что наставили на путь истинный)))
olegnoscov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка Шелла и Шейкер-сортировка AleksandrMakarov Паскаль, Turbo Pascal, PascalABC.NET 11 11.03.2012 12:18
паскаль,одномерный массив,сортировка вставка,сортировка убывания,от максимального до конца немозг Помощь студентам 11 06.02.2010 21:57
Сортировка методом линейного выбора и "быстрая" сортировка Карол Помощь студентам 4 27.09.2009 19:52
Сортировка файлов в Explorer vs сортировка в Delphi mutabor Общие вопросы Delphi 11 04.09.2009 14:32