PDA

View Full Version : کمک برای اصلاح برنامه



oloom1386
شنبه 21 آذر 1388, 20:59 عصر
سلام بچه ها دیگه واقعا نمی دونم چیکارش کنم خواهشا یکی به دادم برسه.
چه بلایی سر حلقه whileبیارم تا اینارو درست باهم مقایسه کنه,
تو این برنامه می خوام ببینم عددی که از ورودی دریافت میشه ارقامش صعودی اند یا نزولی یا هیچکدوم و پیغام مناسب چاپ کنه.
با تقسیم کردن عدد بر10 ارقام رو بدست آوردم و ارقام از آخر به اول چاپ میشن اگه رقم اول از رقم دوم و سوم و...بزرگتر شد و رقم دوم از رقم سوم و.....پس عدد اصلی صعودی است
میشه تو حلقه while کمکم کنین؟؟؟؟؟اونجایی که ستاره گذاشتم. واقعا ممنون میشم ازتون

#include<stdio.h>
#include<conio.h>
main()
{
int x,r,i=0,c=1;
int a[10],n,max;
clrscr();
printf(" << nozooli & so,oudi >>\n\n");
printf("enter a number=");
scanf("%d",&x);
n=x;
while(n!=0)
{
r=n%10;
a[i]=r;
printf("%3d ",r);
i++;
C++‎;
n/=10;
}
max=a[0];
************ while (max>a[i])
{
****************** i++;
//
// else printf("\nnozooli Akid.");
}
printf("\nis so_oudi.");
/* printf("%3d",a[i]);
if (a[i]>a[i+1])
printf("\nnozooli Akid.");
else if (a[i]<a[i+1])
printf("\nso,oudi Akid.");
else
printf("\nnot so,oudi AND not nozooli.");*/
getch();
return 0;
}
به نظرتون الگوریتم قابل تحملیه؟یا آدمو عصبی میکنه

tdkhakpur
شنبه 21 آذر 1388, 23:48 عصر
با while کارها کمی طولانی میشه.


#include<stdio.h>
#include<conio.h>
int main(void)
{
int x,r,i=0,c=0;
int a[10],n,tmp;
BYTE action;// 0 is seoodi, 1 is nzoli and and 2 is nothing
clrscr();
printf(" << nozooli & so,oudi >>\n\n");
printf("enter a number=");
scanf("%d",&x);
n=x;
while(n!=0)
{
r=n%10;
a[i]=r;
// printf("%3d ",r);
i++;
C++‎‎‎;
n/=10;
}
tmp = a[0];
action = 0; // اگر عدد صعودیست
for( int i=1; i<c && action==0; i++){
if( tmp>a[i] ) action = 3;
tmp = a[i];
}
if(action==3){ // اگر صعودی نشد
action = 1;// عدد نزولیست
for( int i=1; i<c && action==1; i++){
if( tmp<a[i] ) action = 3;
tmp = a[i];
}
if(action==3)// اگر نزولی هم نشد
action = 2; // عدد معمولیست
}
// در ارایه چون معکوس ذخیره شده لذا چاپ پیغام برای نزولی و صعودی جابجا میشود
switch(action)
{
case 1: printf("\nis so_oudi."); break;
case 0: printf("\nnozooli Akid."); break;
case 2: printf("\nnot so,oudi AND not nozooli."); break;
}
getch();
return 0;
}

oloom1386
یک شنبه 22 آذر 1388, 14:30 عصر
سلام tdkhakpur از اینکه جوابمو دادی خیلی ازت ممنونم ولی یه اشکالی هست
من هرچی عدد میزنم چه صعودی چه نزولی همه رو می نویسه نه صعودیه نه نزولی.
بازم ممنون موفق باشی

tdkhakpur
یک شنبه 22 آذر 1388, 14:57 عصر
من هرچی عدد میزنم چه صعودی چه نزولی همه رو می نویسه نه صعودیه نه نزولی.

مطمئنی اشتباه نکردی؟