Hi guy, I need to create a program that sorts 3 words entered into order from shortest to longest. So far I have the following done but when I run it, it only displays the first two words in order of length and doesnt show the 3rd word. Can anyone tell me what is wrong with it?


using namespace std;
int main()
    int num1,num2,num3,ntemp, count = 0;
    string name1,name2,name3,stemp;
    cout << "enter 3 words.\n";
    cin >> name1 >> name2 >> name3;
    num1 = name1.length();
    num2 = name2.length();
    num3 = name3.length();
    while (count <= 1)
    if (num1 > num2)
             num1 = ntemp;
             num1 = num2;
             num2 = ntemp;
             name1 = stemp;
             name1 = name2;
             name2 = stemp;
    if ( num2 > num3 )
             num2 = ntemp;
             num2 = num3;
             num3 = ntemp;
             name2 = stemp;
             name2 = name3;
             name3 = stemp;
    cout << name1 << " " << name2 << " " << name3 << " ";
    return 0;

Recommended Answers

All 4 Replies

Here's a hint

g++ -W -Wall -ansi -pedantic -O2 foo.cpp
foo.cpp: In function ‘int main()’:
foo.cpp:20: warning: ‘ntemp’ is used uninitialized in this function

Fix the order of assignments to actually swap two variables.

try this solution:

bool SortBylength(const string& a, const string& b)
	if (b.length() > a.length())
		return true;

	return false;

int _tmain(int argc, _TCHAR* argv[])
	vector<string> v;

	for (int i = 0; i < 3; i++)
		cout << "enter word " << i + 1 << ": ";
		string word;
		getline(cin, word);
	sort(v.begin(), v.end(), SortBylength);

	cout << "sorted words by length: ";
	copy(v.begin(), v.end(), ostream_iterator<string>(cout, " "));
	cout << endl;

	return 0;

According to your code what will happen in foll condition
if the first word entered is second largest second is largest and third one is smallest.....

//find the smallest of the three
if second less than first
  swap first and second
if third less than first
  swap first and third

//find the smallest of the remaining two
if third less than second
  swap second and third

//first is now smallest, with third largest and second in between
Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, learning, and sharing knowledge.