Saturday, December 7, 2013

Арифметик прогресс үүсгэх дэд дараалал

Өгөгдсөн N элементтэй дарааллын арифметик прогресс үүсгэх хамгийн урт дэд дарааллыг ол.

#include <iostream>
#include <math.h>
using namespace std;


int main()
{
    double a[100], d;
    int n, i, begI, maxCount, curCount;
    cout<<"n = ";
    cin>>n;
    for(int i=0; i<n; i++)
    {
   cout<<"  -> a["<<i<<"] = ";
   cin>>a[i];
 }
 maxCount = 1;
 begI = 0;
 for(int i=0; i<n-1; i++)
 {
  curCount = 1;
  d = 0;
  for(int j=i+1; j<n; j++)
  {
   if(j == i+1)
   {
    d = a[j] - a[i]; 
    curCount++;
   }
   else
   {
    if(d == a[j] - a[j-1])
    {
     curCount++;
    }
    else
    {  
     break;
    }
   }
  }
  if(maxCount < curCount)
  {
   begI = i;
   maxCount = curCount;
  }
  i += curCount-2;
 }
 cout<<"\n\nKhariu:\n ";
 for(int i=begI; i<begI+maxCount; i++)
 {
  if(i > begI)
   cout<<", ";
  cout<<a[i];
 }
 
    cout<<"\n\n";
    return 0;
}


1 comment: