All pastes #928513 Raw Edit

kantis

public cpp v1 · immutable
·published 2008-03-05 03:02 UTC
rendered paste body
#include <fstream>#include <iostream>#include <string>using namespace std;class person{public:  string areanumber;  string number;  string familyname;  string name;  person* next;  //bool operator>(const person & P) const;};bool larger(person* P1, person* P2){  return ((P1->areanumber > P2->areanumber) or	  	  ((P1->areanumber == P2->areanumber) and	   (P1->number < P2->number)) or	  	  ((P1->areanumber == P2->areanumber) and	   (P1->number == P2->number) and	   (P1->familyname > P2->familyname)) or	  	  ((P1->areanumber == P2->areanumber) and	   (P1->number == P2->number) and	   (P1->familyname == P2->familyname) and	   (P1->name > P2->name)));}void put(person* item){  cout << item->name << " " << item->familyname << " : " << item->areanumber << "-" << item->number << endl;}int clist_length(person* clist){  int len = 0;  if (clist != 0){    person* first = clist;    person* iter = first->next;    len++;    while (iter != first){      iter = iter->next;      len++;    }  }  return len;}void clist_swap(person* clist) //swaps the following 2 elements in a circular list{  person* element_to_swap = clist->next;  person* temp = element_to_swap->next;  clist->next = temp;  element_to_swap->next = temp->next;  temp->next = element_to_swap;}void clist_print(person* clist){  person* iter = clist->next;  put(clist);  while(iter != clist){    put(iter);    iter = iter->next;  }}void clist_sort(person* clist){  bool swapped = true;  int len = clist_length(clist);  int swap_pos;  cout << "q?";  person* person_array[len-1];  person* iter = clist;  person* temp;  cout << "bleh";  for(int i = 0; i < len-2; i++){    person_array[i] = iter;    iter = iter->next;  }  cout << "hej";  for(int i = len-2; (i>0) && swapped; i--){    for(int j = 0; j<i; j++){      cout << j;      if (larger(person_array[j],person_array[j+1])){	swap_pos = j-1;	if (swap_pos < 0){	  swap_pos += 32;	}	temp = person_array[j+1];	person_array[j+1] = person_array[j];	person_array[j] = temp;	clist_swap(person_array[swap_pos]);	swapped = true;      }    }  }  cout << "tjo";  clist = person_array[0];  //person_array[clist_length-1]->next = clist;}void readfile(person* ptr){  ifstream input;  input.open("telefonnr.txt");  int position[4];  string temp;  person* iter = ptr;  while (! input.eof()){    getline(input,temp);    position[0] = temp.find(',');    position[1] = temp.find(':');    position[2] = temp.find('-');    position[3] = temp.find(' ', position[3]);    iter->familyname.assign(temp,0,position[0]);    iter->name.assign(temp,position[0]+2,position[1]-position[0]-2);    iter->areanumber.assign(temp,position[1]+1,position[2]-position[1]-1);    iter->number.assign(temp,position[2]+1,position[3]-position[2]-1);     if (input.eof()){      iter->next = ptr;      break;    }    else{      iter->next = new person;      iter = iter->next;    }  }}  int main(){  person* CL;  person* iter;    int CL_length;  CL = new person;  readfile(CL);  CL_length = clist_length(CL);  iter = CL;  clist_print(CL); /*segmentation fault här   utskrift här ger en utskrift,   utskrift på första raden i clist_sort skrivs ej ut*/  clist_sort(CL);  cout << "===SORTED===" << endl;    clist_print(CL);      return 0;}