PDA

View Full Version : ایراد این کد چیست...؟



ateryad
دوشنبه 21 آذر 1390, 11:43 صبح
سلام دوستان عزیز
برنامه ای نوشتم که یک آرایه رو با استفاده از شماره اندیس یا شماره مکان آن مرتب می کند.
یعنی اگر ارایه ی با 4 عضو با مقادیر 9 و 8 و 6 و 7 داشته باشیم در به صورت 0و 1 و 3و 2 نشان بدهد ولی کد من فقط یعدد بزرگ را نشان می دهد را نشان می دهد.


#include<stdio.h>
#include<conio.h>
int main()
{
int i,j,z,m,max=0,place;
printf("Please Enter Number Of input: ");
scanf("%d",&i);
int x[i];
printf("PLease Enter %d Number: ",i);
for(j=0;j<i;j++)
scanf("%d",&x[j]);
max=x[0];
for(j=1;j<i;j++)
{
if(x[j]>max)
{
max=x[j];
printf("%d ",j+1);
place=j;
}
}
x[place]=0;
getch();
return 0;
}

shahmohammadi
دوشنبه 21 آذر 1390, 15:20 عصر
سلام.
آرایه رو باید به این صورت تعریف کنیم.


#include <alloc.h>
#include <stdio.h>

void main()
{
int a;
int *m;
scanf("%d",&a);
m= (int*) malloc(sizeof(int));
...
free(m);
}

ateryad
دوشنبه 21 آذر 1390, 20:29 عصر
دوست عزیز میشه کمی بیشتر توضیح بدی من متوجه منظورت نشدم...:متعجب:

shahmohammadi
دوشنبه 21 آذر 1390, 20:41 عصر
وقتی طول آرایه رو قراره از ورودی بگیریم، نمی تونیم به روش قبلی آرایه رو تعریف کنیم.
دستور int x[i]; اشتباهه.
وقتی که طول آرایه رو نمی دونیم باید تخصیص حافظه کنیم (همون حافظه پویا).
توی سی پلاس پلاس از new و delete استفاده میشه و توی سی از malloc.
در آخر برنامه هم باید حافظه گرفته شده رو برگردونیم. با دستور free
در مثال بالا که من زدم. در جایی که با ... مشخص کردم میتونید از آرایه استفاده کنید مثلا بنویسید x[2]=1;

ateryad
دوشنبه 21 آذر 1390, 22:38 عصر
این دفعه متوجه شدم ولی برنامه اجرا میشه اما فقط مکان بزرگترین عدد رو رو نشون میده.
می خواستم ببینم چی باید اضافه کنم که کاملا جواب بده.

اگه لطف کنی و یک دستی تو کد برنامه ببری و درستش کنی ممنون میشم.:خجالت:

shahmohammadi
سه شنبه 22 آذر 1390, 10:30 صبح
منظورتون رو از "آرایه رو با استفاده از شماره اندیس یا شماره مکان آن مرتب" نمی فهمم.

ولی با توجه به مثالی که زدین، الگوریتمشو به این صورت بنویسید که ابندا بزرگترین عدد توی آرایه رو پیدا کنه و بعد از اولین عنصر شزوع کنه بره تا آخر و در هر گام مقدار عبارت زیر رو چاپ کنه:
max-x[i]
در این صورت خروجی ای که گفتید چاپ میشه.