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;}