PDA

View Full Version : سوال: مشکل با الگریتم جستجو و مرتب سازی



mohsen_bu
یک شنبه 08 بهمن 1391, 13:26 عصر
با سلام.
اینجانب تازه زبان برنامه نوسی C و C++ را شموع کرده ام.
الگریتم جستجو و مرتب سازی را برای تمرین پیاده سازی کرده ام ولی نمی دانم چرا جواب دست در نمی آید.
لطفا راهنمایی کنید.


#include <iostream>
using namespace std;

int main( int argc, char ** argv ) {
cout << "Hello, World!\n";
int a[]={13,45,49,32,83};
int n=5;
int i, j, temp;

for (i = (n - 1); i > 0; i--)
{
for (j = 1; j <= i; j++)
{
if (a[j-1] > a[j])
{
temp = a[j-1];
a[j-1] = a[j];
a[j] = temp;


}
}
}
for (int k=1; k<=n; k++)
cout << a[k] << endl;
//return 0;
}


خروجی عبارت زیر می شد:
Hello, World!
32
45
49
83
0

پس عدد 13 کجا رفت ...؟:متعجب::متفکر:

Behnam.B
یک شنبه 08 بهمن 1391, 14:12 عصر
برنامه شما کاملا درسته!!!
تنها اشکالش حلقه چاپ خروجیشه که مقداردهی اولیه اش باید k=0 و شرطش باید k<n باشه(چون اندیس آرایه ها از 0 شروع میشه و ...)

Abbas Naghdi
یک شنبه 08 بهمن 1391, 14:24 عصر
با اینکه Behnam جان مشکل شما رو گفتن و لی از این کد هم میتونی استفاده کنی (کد خود شما هست فقط تغییرش دادم)(البته داخل محیط VS2012

#include "stdafx.h"
#include <iostream>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
int a[]={10,5,11,18,7,35,11,89,6,47,23};
int n=11;
int i, j, temp;
for (i = (n - 1); i > 0; i--)
{
for (j = 1; j <= i; j++)
{
if (a[j-1] > a[j])
{
temp = a[j-1];
a[j-1] = a[j];
a[j] = temp;
}
}
}
for (int k=0; k<n; k++)
{
cout << a[k] << endl;
}
system ("Pause");
system ("Cls");
return _tmain(0,0);
}