PDA

View Full Version : سوال: مرتب سازی اسامی



morika
یک شنبه 19 اردیبهشت 1389, 15:42 عصر
سلام

چجوری میشه چندتا اسم رو به برنامه بدیم و برامون مرتب کنه. یعنی از بزرگ به کوچیک چاپ کنه؟
یعنی اگه سه تا اسم مثل ali , reza, , zahra داشیتم خروجی برنامه به شکل زیر باشه:
ali , reza , zahra

خیلی ممنون

tdkhakpur
یک شنبه 19 اردیبهشت 1389, 16:18 عصر
بهترین راه استفاده از ایندکسهاست


#define MAXNAMES 3
void main(void)
{
char *Names[MAXNAMES] = {"ali", "reza" , "zahra"};
int index[MAXNAMES], tmp;

for(int i=0; i<MAXNAMES; i++) index[i] = i;

for(int i=0; i<MAXNAMES; i++)
for(int j=i; j<MAXNAMES; j++)
if( strcmp(Names[index[i]], Names[index[j]])>0 ) {
tmp = index[i];
index[i] = index[j];
index[j] = tmp;
}
for(int i=0; i<MAXNAMES; i++)
cout<<Names[index[i]]<<"\n";
getch();
}

دستی کد شد - ولی برای مرتب سازی الگوریتمهای سریعتری هم هست که بالایی ساده ترین آنهاست.

saber187518
دوشنبه 20 اردیبهشت 1389, 12:36 عصر
با سلام
نظر جناب tdkhakpur (http://barnamenevis.org/forum/member.php?u=99732) کاملا درسته ولی شما بگو این اسامی رو که میخوای مرتب کنی کجا هستن؟
اگه توی فایل ذخیره شده باشن خیلی فرق داره.
نکته بعدی هم اینه که حدود تعداد واقعی رو هم بگو مثلا میخوای اسامی 100 نفر رو در کل مرتب کنی با 100000 نفر که اینا با هم خیلی فرق دارن.
نکته بعد هم اینه که شما میخوای بر اساس نام یا نام خانوادگی مرتب کنی؟ که این هم فرق داره.
---------------------------------------------------------------------
اللهم العن قاتلی فاطمه الزهرا

Salar Ashgi
دوشنبه 20 اردیبهشت 1389, 13:09 عصر
یه روش کاملا اصولی واسه مرتب کردن با استفاده از STL :



#include <iostream>
#include <conio>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int main(){
vector<string> v;
v.push_back("salar");
v.push_back("ali");
v.push_back("reza");
v.push_back("hossain");
sort(v.begin(),v.end());
for(int i=0;i<v.size();i++)
cout<<v[i]<<endl;
getch();
}


موفق باشید .