PDA

View Full Version : سوال در مورد ساختمان و آرایه



bobo_021
پنج شنبه 10 بهمن 1387, 18:29 عصر
سلام
من می خوام یک برنامه بنویسم به این صورت:

برنامه ای بنویسید که که مشخصات 50 دانشجو را ازقبیل (شماره دانشجویی و نام ونام خاتنوادگی ومعدل و آدرس و شماره شناسنامه )را از ورودی بخواند . .کمترین معدل و بیشترین معدل را محاسبه کند .فردی را از آرایه حذف کنذ .فردی را به آرایه اضافه کند .دانشجویان را بر اساس کمترین و بیشترین معدل مرتب کند .دانشجویان را بر اساس نام و شماره انشجویی جستجو کند 6. قابلیت جشتجوی باینری را داشته باشدبر اساس شماره دانشجویی


من این ها رو توی ک ساختمان struct تعریف می کنم
اما وقتی می خوام برنامه رو بنویسم
به چند تا مشکل بر می خورم که خواهش می کنم منو کمک کنید .
1. من چه حوری این همه برنامه رو توی یک برنامه جا بدم ؟
2. من قطعه کد اضافه و حذف کردن رو می خوام
3.. چه جوری دانشجویان رو بر اساس بیشنرین و کمترین معدل مرتب کنم و جستجوی باینری چیه ؟

azarakhshl
جمعه 11 بهمن 1387, 09:51 صبح
از توابع استفاده کن، برنامه خیلی ساده می شه، به خصوص یه تابع برای جستجو بنویس، بهتره آرایه را سراسری تعریف کنی.
در صورتی که از آرایه ای از ساختارها استفاده می کنی، با تابع جستجو دانشجو رو پیدا کن و بعد شماره دانشجویی اون رو به یه مقدار پیش فرض مثلا صفر تغییر بده، این نشونه حذف شدنش می شه، برای درج هم اول محلی از آرایه رو پیدا کن که شماره دانشجویی اون صفر باشه و بعد اطلاعات را وارد کن.
برای مرتب سازی هم از تابع sort معمولی استفاده کن.





For(i=0;i<n-1;i++)


For(j=i+1;j<n;j++)


If (s[i]>s[j]) {


Temp=s[i];


S[i]=s[j];


S[j]=temp;
}


این کد جستجوی دودویی:





Int location(int low,int high,int x)


{


Int mid;


If (low>high) return 0;


Else{


Mid = (low+high)/2;


If(x==S[mid]) return mid;


Else if (x<S[mid]) return location(low,mid-1);


Else return location(mid+1,high);


}


}


این تابع بازگشتیه و x را در آرایه s جستجو می کنه. High و low هم اندیس اول و آخر آرایه است. اگر آرایه صفر برگرداند یعنی مقدار مورد نظر در آرایه وجود ندارد.