در مورد ارایه ها در ++ c

oranoos_mta

New Member
میخوام برنامه ای بنویسم که n عدد double را از ورودی بگیرد و پس از مرتب کردن مجموع m عدد میانی را بدست بیاورد
m را نیز از ورودی میگیرد
من اینو نوشتم ولی مشکل داره میشه کمکم کنید
کد:
#include <stdio.h>
#include <math.h>
#include <iostream.h>
void out(double m[],int n)
{
 int i;
 for(i=0;i<n;i++)
 cout<<" "<<m[i];
}
void sort(double *y,int n)
{
 int i,temp;
 for(i=n-1;i>0;i--)
 {
  for (int j=0; j<i; j++)
  if(y[j+1]<y[j])
  {
	temp=y[j];
	y[j]=y[j+1];
	y[j+1]=temp;
  }
 }
}
void main()
{
 int n,k;
 cout<<"enter n : ";
 cin>>n;
 double *m;
 m=new double[n];
 for (int i=0; i<n; i++)
 {
  cout<<"enter m["<<(i+1)<<"] : ";
  cout.flush();
  cin>>m[i];
 }
 sort(m,n);
 out(m,n);
 cout<<endl;
 cout<<"enter a number as low as "<<n<<" ---> ";
 cin>>k;
 if (k>=n)
 cout<<"invalid your number"<<endl;
 int t=1; int p=0; int sum=0;
 while(p<k)
 {
  if (k<=2)
  {
	sum=sum+m[(n/2)+t];
	break;
  }
  sum=sum+m[(n/2)+t];
  t*=-1;
  sum=sum+m[(n/2)+t];
  t++; p+=3; 
 }
 sum=sum+m[n/2];
 cout<<"plus center digits of your array--->"<<sum;
 delete []m;
}
 

saalek110

Well-Known Member
بسته به زوج یا فرد بودن n & k حالات مختلفی پیش می آید که نمی شود میانه را پیدا کرد. پس چون صورت مسئله گنگ است من جوابی ساده بدون بحث این زوج و فرد بودن ها نوشتم:
کد:
// 1 -> n double begirad
// 2 -> moratab konad
// 3 -> majmoe m adade miani ra chap konad.(m ham hz vorodi.)

#include <stdio.h>
#include <math.h>
#include <iostream.h>
//#include <conio.h>   // for getch()
void my_out(double m[],int n)
{
 int i;
 for(i=0;i<n;i++)
 cout<<" "<<m[i];
}
void my_sort(double *y,int n)
{
 int i,temp;
 for(i=n-1;i>0;i--)
 {
  for (int j=0; j<i; j++)
  if(y[j+1]<y[j])
  {
	temp=y[j];
	y[j]=y[j+1];
	y[j+1]=temp;
  }
 }
}
// -----------------------------
void main()
{
   int n,k;
   cout<<"enter n : ";
   cin>>n;
    double *m;
    m=new double[n];
          for (int i=0; i<n; i++)
            {
              cout<<"enter m["<<(i+1)<<"] : ";
              cout.flush();
              cin>>m[i];
            }
 my_sort(m,n); 
 my_out(m,n);
     cout<<endl;
     cout<<"enter a number as low as "<<n<<" ---> ";
     cin>>k;
     if (k>=n)     cout<<"invalid your number"<<endl;
 
              int sum=0;//int t=1; int p=0;
            //---------------------------------------
            // while(p<k)
              // {
               //     if (k<=2)
                //    {
	          //    sum=sum+m[(n/2)+t];
	          //    break;
                //    }
             // sum=sum+m[(n/2)+t];
             // t*=-1;
             // sum=sum+m[(n/2)+t];
             // t++; p+=3; 
            //  }
 //sum=sum+m[n/2];
 // ----------------------------------------
 int difference=n-k; // bebinim sar va tahe araye cheghadr baghi mimanad
 int ebteda=int(difference/2); // sahme avale araye che ghadr ast
 
 for(int i2=ebteda;i2<ebteda+k;i2++) //  be tedade k jame mizanim
 {
 sum=sum+m[i2];
 }

 
 cout<<"plus center digits of your array--->"<<sum;
 delete []m;
// getch(); // for turbo c 3.0
} // end of main
 

جدیدترین ارسال ها

بالا