PDA

View Full Version : سوال: این برنامه با یونیون ها درست نوشتم ؟؟



fati63
جمعه 10 آذر 1391, 12:21 عصر
برنامه ای که معدل یا شماره دانشجویی یا شماره شناسنامه 20 دانشجو رو بگیره و مرتب کند؟از یونیون باید استفاده بشه میخام بدونم درست نوشتم اگه درست بود زیربرنامه ای مینویسم !#include<iostream.h>
#include<conio.h>
union student {
int id;
int ids;
float avg;
};
void main()
{ int x,i,j;
union student st[20],temp;

cout<<"1-moadel"<<"\n";
cout<<"2-shomare shenasname"<<"\n";
cout<<"3-shomare daneshjoe"<<"\n";
cin>>x;
while(x>=1&& x<=3)
{
if(x==1)
{
for(i=0;i<20;i++)
cin>>st[i].avg;

for(i=20;i>0;i--)
for(j=0;j<i;j++)
if (st[j].avg<st[j+1].avg)
{
temp=st[j];
st[j]=st[j+1];
st[j+1]=temp;
}
for(i=0;i<20;i++)
cout <<st[i].avg<< " ";
}
else
if (x==2)
{
for(i=0;i<20;i++)
cin>>st[i].id;

for(i=20;i>0;i--)
for(j=0;j<i;j++)
if (st[j].id<st[j+1].id)
{
temp=st[j];
st[j]=st[j+1];
st[j+1]=temp;
}
for(i=0;i<20;i++)
cout <<st[i].id<< " ";
}
else
if (x==3)
{
for(i=0;i<20;i++)
cin>>st[i].ids;

for(i=20;i>0;i--)
for(j=0;j<i;j++)
if (st[j].ids<st[j+1].ids)
{
temp=st[j];
st[j]=st[j+1];
st[j+1]=temp;
}
for(i=0;i<20;i++)
cout <<st[i].ids<< " ";
}
getch();
} }

omidshaman
جمعه 10 آذر 1391, 12:35 عصر
اولا شما میتونی از swtch استفاده کنی و برای هر کدوم از این 3 تا کار یک فانکشن بسازی
دوما به جای این که 10 بار بزاری 20 اول برنامه بزار مثلا
#define size 20 هر جا خواستی size بزار که فایدش اینه اگر مثلا یک بار بخوای به جا 20 تا اسم 40 تا بگیری راحت اون define رو عوض می کنه دیگه لازم نیست بگردی هرچی 20 پیدا کردی بزاری 40 و البته کدت خواناتر هم میشه
void main هم بهتره استفاده نکنی کمپایلر های جدیدتر همچین اجازه ای نمیدن
و این که وقتی میشه cin.get() استفاده کرد چرا getch غیر استاندارد رو استفاده می کنی؟
کدتو مرتب کن یک بار دیگه بزار...

fati63
جمعه 10 آذر 1391, 19:34 عصر
اولا شما میتونی از swtch استفاده کنی و برای هر کدوم از این 3 تا کار یک فانکشن بسازی
دوما به جای این که 10 بار بزاری 20 اول برنامه بزار مثلا
#define size 20 هر جا خواستی size بزار که فایدش اینه اگر مثلا یک بار بخوای به جا 20 تا اسم 40 تا بگیری راحت اون define رو عوض می کنه دیگه لازم نیست بگردی هرچی 20 پیدا کردی بزاری 40 و البته کدت خواناتر هم میشه
void main هم بهتره استفاده نکنی کمپایلر های جدیدتر همچین اجازه ای نمیدن
و این که وقتی میشه cin.get() استفاده کرد چرا getch غیر استاندارد رو استفاده می کنی؟
کدتو مرتب کن یک بار دیگه بزار...
بله نکاتی که گفتید درسته و اصلاح میکنم مشکل من این با توجه به تعریف یونیون و صورت برنامه الگوریتم برنامه رو درست پیدا کرده ام یا نه؟
با توجه به تعریف یونیون که یکی از متغییر ها میتونن از فضای یونیون استفاده کنند درسته که از if یا switch استفاده کنم آیا ترفند دیگه ای هم هست؟