PDA

View Full Version : گفتگو: پیشنهاد برای الگوریتمی کارامد



...StacK...
پنج شنبه 08 اسفند 1387, 14:05 عصر
سلام.

برنامه ای بنویسید که شماره دانشجویی و معدل تعدادی دانشجو را بخونه

و دومین معدل رو از نظر بزرگی پیدا کنه....

من این برنامه رو نوشتم و به درستی کار میکنه :


#include "stdafx.h"//program compiled with vc++25 to +
#include <iostream>
#include <conio.h>
using namespace std;
void clrscr();
int main(){
int te;
unsigned long int sh,sh2,sh1=0;
float flag=0,mo,mo2=0;
cout<<"enter count of students:";
cin >>te;
clrscr();
system("color a");
cout<<"*************************************\n";
for(int i=1;i<=te;i++)
{
cout<<"please enter the ("<<i<<") Number Avg And Stno:";
cin>>mo>>sh;
if(mo > flag)
{

mo2=flag;
flag=mo;
sh2=sh1;
sh1=sh;
}
}
cout<<"\n*************************************\n";
cout<<"two number of larging is stno:"<<sh2<<" and avg:"<<mo2;
getch();
/*this program coded by mr.a*/
i hope that you enjoy from it*/
return 0;
}
//start clrscr function
void clrscr()
{
system("cls");
}

حالا به قسمتی که قرار هست شماره دانشجویی و معدل نفر دوم رو ذخیره کنه

نگاه کنید...به دنبال یه الگوریتم کارامد تر هستم که نیاز به متغییر های اضافی نظیر

flag -sh1-sh2 رو از بین ببره و از کارایی برنامه نکاهه....

شما چه الگوریتمی پیشنهاد میکنید؟؟؟؟

obscure
پنج شنبه 08 اسفند 1387, 17:28 عصر
به نظرم این جور برنامه هارو با استفاده از struct یا class ها بنویسی هم راحت تره هم اینکه دیگه اینقدر متغیر و اینها نمی خواد...

SamaPic
پنج شنبه 08 اسفند 1387, 18:53 عصر
با سلام خدمت دوست عزيز.
من بطور كامل برنامه ي شما را مطالعه نكردم و فقط بخش هايي رو نگاه كردم.
اما پاسخ شما.شما مي توانيد تمامي داده ها را در يك آرايه (ابعاد مورد نياز) قرار دهيد و سپس آرايه را مرتب كنيد .پس از انجام چنين كاري آرايه ي دوم را به عنوان خروجي در نظر بگيريد.
شما اين كار (بهينه كردن برنامه منظورم است) را چند ترم بعد ياد خواهيد گرفت.چند ترم بعد شما راه هاي بهينه سازي برنامه را پيدا خواهيد كرد.ولي خيلي لازم نيست. دراين گونه برنامه هاي سبك نيازي نمي بينم.اگر برنامه سنگين باشد بسيار لازم است. به عنوان مثال من برنامه ي مين ياب را كه پروژه ي درس مباني من بود را در 1300 خط نوشتم.متاسفانه من در موقع نوشتن برنامه توجهي به سنگيني حجم كار نداشتم و در پايان برنامه وقتي برنامه را شاد و شنگول به استاد محترم نشان دادم انتظار نمره ي بالايي را داشتم ولي ايشان با تذكر در اين مورد به بنده فرمودند اگر قرار باشد همه ي برنامه هاي شما اينگونه باشد كلا از برنامه نويسي كنار بكشيد .اين برنامه بقدري سنگين بود كه در موقع اجرا با زدن هر دكمه (بطور تقريبي ) 0/25 ثانيه براي كشيدن مجدد صفحه زمان مي برد.و من متوجه شده بودم كه اشتباه بزرگي مرتكب شده ام.

خدانگهدار.