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 باید آخر قرار بگیره ! ولی اینطور نمیشه !
توی برنامه زیر از تابع 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 باید آخر قرار بگیره ! ولی اینطور نمیشه !