Witam, problem polega na tym, ze NIE sortuje:) Kompiluje sie, odpala sie, ale albo: gdy casem (kejsem) z menu wybiore sortowanie to wywala blad windowsa ze program nie dziala i ulegnie zamknieciu, albo nie wywala ten blad ale efektu w postaci przesortowania nie ma. Pokaze tutaj struktury i wskazniki z ktorych korzystam w programie oraz cala funkcje sortowania. Nie wkleje calego programu poniewaz ma ponad 700 linijek. Czekam na wszelka pomoc. Z gory dziekuje za odzew.
#include
#include // np. do porownania napisow
#include
#include
char nastepny; // zmienna odpowiadajaca za pytanie czy wpisac kolejnego klienta
char usuwanie;//zmienna pytania czy usunac liste
char menuodpowiedz;//powrot do menu
int menu,kolejny; //obsluga menu
int edycjaopcja;//do wyboru podmenu do edytowania przy wyborze numeru klienta
int nowynr;
fpos_t dlugosc;//dlugosc pliku; przy sprawdzaniu czy baza danych jest pusta
struct dane
{
char nazwisko [20];
char imie [10];
int numer [4];
int poprzedni [4]; //poprzedni stan licznika
int aktualny [4]; //aktualny stan licznika
int zuzycie [4]; //=poplicz-aktlicz
float oplatapierwsza [6]; //oplata za pierwsze 500 l; litr za 3 gr
float oplatadodatkowa [6]; //oplata za przekroczenie 500 l; litr za 2 gr
float suma [6]; //=oplpierw+opldod
struct dane *next, *prev; //wskazniki
};
struct dane *glowa;
struct dane *ogon;
struct dane *skoczek;
[…]
void sortowanie(struct dane **start, struct dane **end)
{
struct dane *pom;
struct dane *pom1;
struct dane *pop;
struct dane *nast;
struct dane *skoczek2;
skoczek2 = glowa;
if (skoczek2!=NULL)
pom=skoczek2->next;
while(pom!=NULL)
{
pom1=pom;
while (pom1->prev!=NULL)
{
if(pom1->numer > pom1->prev->numer)
{
nast=pom1->next;
pop=pom1->prev;
pom1->prev=pop->prev;
if ((pop->prev) !=NULL)
{
pop->prev->next=pom1;
pom1->prev = pop->prev;
}
else
glowa = pom1;
pop->next=nast;
if (nast != NULL)
nast->prev=pop;
else
{
ogon = pop;
}
pop->prev=pom1;
pom1->next=pop;
pom1=pop;
}
pom1=pom1->prev;
}
pom=pom->next;
}
}