PDA

View Full Version : مبتدی: در مورد تابع compare



smemamian
شنبه 21 بهمن 1391, 23:54 عصر
سلام دوستان

توی برنامه زیر از تابع compare استفاده شده :

#include <iostream>
#include <cstring>

using namespace std;

int main()
{
const int SZ = 10 ;
string new_name ;
string arr[SZ+1] = {"Adam" , "Bob" , "Clair" , "Doug" ,
"Emily","Frank","Gail","Harry","Ian","Joe"};
cout << "Enter a Name : \n" ;
cin >>new_name;
int j = 0 ;
while(j<SZ+1)
{
int lex_com = new_name.compare(arr[j]);
if(lex_com > 0)
j++;
else
{
for (int k = SZ-1 ; k>=j; k--)
arr[k+1] = arr[k];
arr[j]= new_name ;
break ;

}
}

if(j == SZ+1)
arr[10] = new_name ;
for(int j=0 ; j<SZ+1 ; j++)
cout << arr[j] << endl ;
return 0;
}

وقتی برنامه رو اجرا و نام Dilbert تایپ می کنم چون این نام
بزگترین طول رو داره باید همیشه lex_com مقدار 1 بگیره و طبق برنامه
Dilbert باید آخر قرار بگیره ! ولی اینطور نمیشه !

مهرداد صفا
یک شنبه 22 بهمن 1391, 08:44 صبح
سلام
متود compare ابتدا بر اساس حروف الفبا مقایسه میکند، یعنی "a" < "b" و در مرحله بعد و در صورت یک سان بودن کاراکتر ها تعداد طول رشته را در نظر میگیرد، یعنی "aaa">"aa"