PDA

View Full Version : مشکل با کد مرتب سازی



MINA B
شنبه 01 آذر 1393, 00:26 صبح
سلام دوستان من یه کد مرتب سازی نوشتم اما چون دارم نیمی از آرایه ی مرتب شده رو به خود آرایه انتقال میدم و بعد به یک آرایه جدا کد درست عمل نمی کنه .میشه خواهش کنم بگید چطوری نیمه ای از آرایه رو که مرتب کردم مستقیما (یعنی توی کد sort) به آرایه half1 انتقال بدم؟ممنون.
#include <cstdlib>

#include <stdio.h>






using namespace std;
//int n; /*size of array*/
#define n 5
int arrayA[n]={6,4,7,2,1};


int half1[n];
void sort1(int a,int b);
int main()
{
int start=0;
int end=(n/2)-1;
sort1(start,end);
for(int i=0;i<n;i++)
{cout<<half1[i];}
}
void sort1(int a,int b)
{



int s = a;
int e = b;
int temp;
for(int i=e-1;i>1;i--)
{
for(int j=s;j<i;j++)
{
if(arrayA[j]>arrayA[j+1])
{
temp = arrayA[j];
arrayA[j] = arrayA[j+1];
arrayA[j+1] = temp;
}
}
}
for(int t=s;t<e;t++)


{


half1[t]=arrayA[t];


}
}
این راهم امتحان کردم
#include <iostream>





#include <cstdlib>


#include <stdio.h>






using namespace std;
//int n; /*size of array*/
#define n 10
int arrayA[n]={6,4,7,2,1,3,9,8,5,0};


int half1[n];
void sort1(int a,int b);
int main()
{
int start=0;
int end=(n/2)-1;
sort1(start,end);
for(int i=0;i<n;i++)
{cout<<half1[i];}
}
void sort1(int a,int b)
{



int s = a;
int e = b;
int temp;
for(int t=s;t<e;t++)


{


half1[t]=arrayA[t];


}
for(int i=e-1;i>1;i--)
{
for(int j=s;j<i;j++)
{
if(half1[j]>half1[j+1])
{
temp = half1[j];
half1[j] = half1[j+1];
half1[j+1] = temp;
}
}
}


}
اما جواب نداد.لطفا کمک.

MINA B
یک شنبه 02 آذر 1393, 21:42 عصر
دوستان لطفا کمک.خیلی مهمه.

MINA B
یک شنبه 02 آذر 1393, 21:50 عصر
خروجی که میده اینه
4267000000

iut.ali
دوشنبه 03 آذر 1393, 17:33 عصر
اگه سوالتون رو درست متوجه شده باشم یه همچین کدی میشه جوابش
#include <iostream>

using namespace std;


void swap(int& a, int& b)
{
int temp;
temp = a;
a = b;
b = temp;
}


int main()
{
int *arr;
int *halfarr;
int size = 0;
cout<<"Enter Size: "<<endl;
cin>>size;
int halfsize = size/2;
halfarr = new int[halfsize];
arr = new int[size];
for(size_t i = 0; i < size; i++)
{
cout<<"Enter number: "<<endl;
cin>>arr[i];
}
for(size_t i = 0; i< size; i++)
{
for(size_t j = i+1; j < size; j++)
{
if(arr[i] > arr[j])
{
swap(arr[i], arr[j]);
}
}
if(i == halfsize)
{
for(size_t k = 0; k < halfsize; k++)
{
halfarr[k] = arr[k];
}
}
}
for(size_t i = 0; i < halfsize; i++)
{
cout<<halfarr[i]<<endl;
}
return 0;
}

MINA B
دوشنبه 03 آذر 1393, 20:34 عصر
اگه سوالتون رو درست متوجه شده باشم یه همچین کدی میشه جوابش
#include <iostream>

using namespace std;


void swap(int& a, int& b)
{
int temp;
temp = a;
a = b;
b = temp;
}


int main()
{
int *arr;
int *halfarr;
int size = 0;
cout<<"Enter Size: "<<endl;
cin>>size;
int halfsize = size/2;
halfarr = new int[halfsize];
arr = new int[size];
for(size_t i = 0; i < size; i++)
{
cout<<"Enter number: "<<endl;
cin>>arr[i];
}
for(size_t i = 0; i< size; i++)
{
for(size_t j = i+1; j < size; j++)
{
if(arr[i] > arr[j])
{
swap(arr[i], arr[j]);
}
}
if(i == halfsize)
{
for(size_t k = 0; k < halfsize; k++)
{
halfarr[k] = arr[k];
}
}
}
for(size_t i = 0; i < halfsize; i++)
{
cout<<halfarr[i]<<endl;
}
return 0;
}



ممنون دوست عزیز اما این کدم کار نکرد

iut.ali
دوشنبه 03 آذر 1393, 22:44 عصر
ممنون دوست عزیز اما این کدم کار نکرد
یه خروجی از برنامه ای که میخوای بذار من با این اعداد
۲۲و ۱۴و ۱و ۷۱و ۱۵و ۴۲
یه همچین خروجی ای بدست آوردم
۱و ۱۴و ۱۵
که اگه که من اگه سوالتو درست فهمیده باشم درسته
اینم خروجی واسه آرایه ای که خودت دادی
0
1
2
3
4

MINA B
سه شنبه 04 آذر 1393, 20:39 عصر
یه خروجی از برنامه ای که میخوای بذار من با این اعداد
۲۲و ۱۴و ۱و ۷۱و ۱۵و ۴۲
یه همچین خروجی ای بدست آوردم
۱و ۱۴و ۱۵
که اگه که من اگه سوالتو درست فهمیده باشم درسته
اینم خروجی واسه آرایه ای که خودت دادی
0
1
2
3
4
نه فک می کنم سوالمو بد پرسیدم اول آرایه رو می گیره برنامه بعد آرایه به دو نیم تقسیم میشه هر نیمه که مرتب میشه توی یه آرایه دیگه ریخته میشه

shahmohammadi
سه شنبه 04 آذر 1393, 20:55 عصر
سلام.
می خواستم کد رو بررسی کنم به یه مشکل زیر برخورد کردم شاید از اون باشه:
کد زیر:

int end=(n/2)-1;


خوب 5/2 میشه 2. چون 5 اینت هست. 2 هم اینت هست. پس جواب که 2.5 هست به 2 تبدیل میشه. بعد که منهای یک میشه جوابش میشه 1. این خودش به تنتهایی مشکل ایجاد میکنه. نمی دونم با حلاین مشکل درست میشه یا نه. لطفا امتحان کنید.