Hi,
I'm writing a program in C++ to ask the user for a list of ten names and cities of residence in the format <firstname> <Surname> <city>.
The amount of spaces between each doesn't matter as I will be using isspace.
then i have to sort the list by city and then in each city group alphabetically by name.
I'm able to extract each of the three components from the strings, but now I'm not sure on how to incorporate sorting into this, we have to use bubble sort.
This is what I have so far
#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;
}