elahe software
جمعه 09 تیر 1391, 10:18 صبح
سلام من این کد رو نوشتم اما نمیدونم چرا جواب رو درست چاپ نمی کنه!!!!
کد رو براتون میذارم اگه کمکم کنید ممنون میشم!!! :افسرده:
#include<iostream.h>
#include<conio.h>
void merge(int p,int m,int A[],int B[],int s[])
{
int i,j,k;
i=j=k=1;
while(i<=p && j<=m){
if(A[i]<B[j])
{s[k]=A[i];
i++;}
else
{s[k]=B[j];
j++;}
k++;
}
if(i>p)
while(j<=m)
{s[k]=B[i];
k++;
j++;}
else if (j>m)
while (i<=p)
{s[k]=A[i];
k++;
i++;}
}
void mergesort(int n,int s[])
{
int p=n/2,m=n-p;
int A[2],B[3];
if(n>1){
for(int i=0;i<p;i++)
A[i]=s[i];
for(int j=0;j<m;j++)
B[j]=s[p+j];
mergesort(p,A);
mergesort(m,B);
merge(p,m,A,B,s);
}
}
int main()
{
const int n=5;
int array[n];
for(int i=0;i<n;i++)
{
cout<<"Enter number"<<(i+1)<<":";
cin >> array[i];
}
mergesort(n,array);
getch();
return 0;
}
کد رو براتون میذارم اگه کمکم کنید ممنون میشم!!! :افسرده:
#include<iostream.h>
#include<conio.h>
void merge(int p,int m,int A[],int B[],int s[])
{
int i,j,k;
i=j=k=1;
while(i<=p && j<=m){
if(A[i]<B[j])
{s[k]=A[i];
i++;}
else
{s[k]=B[j];
j++;}
k++;
}
if(i>p)
while(j<=m)
{s[k]=B[i];
k++;
j++;}
else if (j>m)
while (i<=p)
{s[k]=A[i];
k++;
i++;}
}
void mergesort(int n,int s[])
{
int p=n/2,m=n-p;
int A[2],B[3];
if(n>1){
for(int i=0;i<p;i++)
A[i]=s[i];
for(int j=0;j<m;j++)
B[j]=s[p+j];
mergesort(p,A);
mergesort(m,B);
merge(p,m,A,B,s);
}
}
int main()
{
const int n=5;
int array[n];
for(int i=0;i<n;i++)
{
cout<<"Enter number"<<(i+1)<<":";
cin >> array[i];
}
mergesort(n,array);
getch();
return 0;
}