Hi!
I'm writing a program in C++ where the user is asked to enter a list of ten names and cities of residence in the format <firstname> <Surname> <city>.
I then have to sort the list by city and then in each city group alphabetically by name, using Bubblesort.
I'm able to extract each of the three components from the strings, but now I'm really lost on how to implement the Bubblesort correctly. All of the notes I have seen are for sorting numbers, not letters. Can anyone help me or offer suggestions as to how to sort the names?
This is my code:
#include <iostream>
#include <stdio.h>
#include <cstring>
using namespace std;
int main()
{
char name[10][80];
char buffer1 [80];
char buffer2 [80];
char buffer3 [80];
int i,j,k,q,word_size,start_pos,end_pos,name_size,city_start,city_end,city_length;
cout<<"Enter 10 names and cities of residence: "<<"\n";
gets( name[0]);
gets( name[1]);
gets( name[2]);
gets( name[3]);
gets( name[4]);
gets( name[5]);
gets( name[6]);
gets( name[7]);
gets( name[8]);
gets( name[9]);
cout<<"***Initialise check***"<<"\n";
cout<<"\n";
cout<<"\n";
cout<< name[0]<< "\n";
cout<< name[1]<< "\n";
cout<< name[2]<< "\n";
cout<< name[3]<< "\n";
cout<< name[4]<< "\n";
cout<< name[5]<< "\n";
cout<< name[6]<< "\n";
cout<< name[7]<< "\n";
cout<< name[8]<< "\n";
cout<< name[9]<< "\n"<<"\n";
cout<< "***Check Complete***"<<"\n";
for (i=0; i<=9; i++)
{ j=0;
while (isspace (name[i][j]) )
{j=j+1;
}
k=j;
while(!isspace(name[i][k])) k=k+1; //advances through the first name
name_size = k-j;
for (q=0; q<=name_size; q++)
{
// this generates the name
buffer1[q] = name[i][j];
j++;
}
buffer1[j]='\0';//this is the null char to terminate first name name
cout<<"Name "<<i+1<<": "<<buffer1<<"\n";
if (j<80){
while(isspace(name[i][k])) k=k+1; // advances through the next block of spaces
start_pos=k;
while(!isspace(name[i][k])) k=k+1;// advances through the surname
end_pos=k;
word_size = end_pos - start_pos;
}
// check word size of first char
for (q=0; q<=word_size; q++)
{
// this generates the surname
buffer2[q] = name[i][start_pos];
start_pos++;
}
//this is the null char to terminate surname name
buffer2[start_pos]='\0';
cout << "Surname "<<i+1<<": "<<buffer2 << "\n";
while(isspace(name[i][k])) k++;
city_start=k;
while(!isspace(name[i][k])) k++;
city_end=k;
city_length=city_end-city_start;
for (q=0; q<=city_length; q++)
{
// this generates the city
buffer3[q] = name[i][city_start];
city_start++;
}
//this is the null char to terminate surname name
buffer3[city_start]='\0';
cout<< "City " << i+1 <<": "<< buffer3 <<"\n";
cout<< "\n" << "\n";
}
return 0;
}