Hello,
I have posted the same kind of program in C but it doesn't seem to work. So I decided to write it again from scratch, this time in C++, and it is working but is buggy.
This code is supposed to take five names as input and then arrange them in alphabetical order.
Earlier I was making it for 5 inputs but then restricted myself for just two,to make it less complicated, but on the same lines as I would for five.
Sorry for the use of "non standard" things (like goto,C style strings) and bad indention (if any) I have used in there. I really don't know what are vectors, so please don't tell me to use them.
Maybe there's an easy way to do the same but I want to stick with this method.
Code:
#include "stdafx.h" //MS Visual C++ 2008 Express
#include<iostream>
using namespace std;
void swap(char*,char*);
int main()
{
char word[2][20],temp[20];
int x,y;
for(x=0;x<2;x++)
{
cout<<"\nEnter a word: ";
cin>>temp;
for(y=0;temp[y]!='\0';y++)
word[x][y]=temp[y];
word[x][y]='\0';
}
for(y=0;word[0][y]!='\0'&& word[1][y]!='\0';y++)
{
cout<<endl<<"Comparing "<<word[0][y]<<" and "<<word[1][y];
cout<<endl<<(int)word[0][y]<<"and"<<(int)word[1][y];
if((int)word[0][y]!=(int)word[1][y])
{
if((int)word[0][y]>(int)word[1][y])
{
cout<<endl<<"Control is here";
swap(&word[0][0],&word[1][0]);
break;
}
else
goto display; //sorry for using goto.
}
}
display:
for(x=0;x<2;x++)
{
cout<<endl;
for(y=0;word[x][y]!='\0'&& word[x][y]!='\n';y++)
cout<<word[x][y];
}
cout<<endl;
return 0;
}
void swap(char*str1,char*str2)
{
char temp;
int a=0,b=0;
while(a!=1 || b!=1)
{
temp=*str1;
*str1=*str2;
*str2=temp;
if(a!=1)
{
str1++;
if(*str1=='\0')
a=1;
}
else
str1++;
if(b!=1)
{
str2++;
if(*str2=='\0')
b=1;
}
else
str2++;
}
}
It is taking the inputs, and giving the result output, but sometimes it gives a lot of extra special characters following it.
Please suggest changes, and reasons for the problem I mentioned above.
Thanks!