Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Aug 3rd, 2012  |  syntax: C++  |  size: 2.73 KB  |  hits: 15  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. /*
  2. Четвертым параметром шаблона задать функтор, выполняющий одну из следующих операций с элементом массива и значением k:
  3. Экспонента разности k и элемента массива.*/
  4.  
  5. #include <conio.h>
  6. #include <iostream.h>
  7. #include <vector>
  8. #include <windows.h>
  9. #include <math.h>
  10.  
  11. char bufRus[256];
  12. char* Rus(const char* text)
  13. {
  14.         CharToOem(text,bufRus);
  15.         return bufRus;
  16. }
  17.  
  18. template <class T,int size_of_massiv,int k>
  19. class Function
  20. {
  21.                 public:
  22.         static T MyArray(T massiv[])
  23.         {
  24.                 vector<float>v;
  25.                 float sum=0,sred_arifm=0,negative_number=0;
  26.                 int flag=0;
  27.  
  28.                 cout<<Rus("Перед вставкой: ");
  29.                 for(int i=0;i<size_of_massiv;i++)
  30.                 {
  31.                         v.push_back(massiv[i]);
  32.                         cout<<v[i]<<" ";
  33.                 }
  34.                 cout<<endl<<Rus("Размер = ")<<v.size()<<endl;
  35.                 for (int i=0;i<size_of_massiv;i++)
  36.                 {
  37.                         sum+=massiv[i];
  38.                 }
  39.  
  40.                 cout<<endl<<Rus("Сумма элементов: ")<<sum;
  41.                 sred_arifm=fabs(sum/size_of_massiv);
  42.                 cout<<endl<<Rus("Среднее арифметическое по абсолютной величине: ")<<sred_arifm<<endl;
  43.  
  44.                 cout<<endl<<Rus("После вставки:  ");
  45.                 v.push_back(sum);
  46.                 v.push_back(sred_arifm);
  47.                 for(int i=0;i<size_of_massiv+2;i++)
  48.                 {
  49.                         cout<<v[i]<<" ";
  50.                 }
  51.                 cout<<endl<<Rus("Размер = ")<<v.size()<<endl;
  52.  
  53.                 for(int i=v.size();i>=0; i--)
  54.                 {
  55.                         if (v[i]<0)
  56.                         {
  57.                                 negative_number=i;
  58.                                 flag=1;
  59.                                 break;
  60.                         }
  61.                 }
  62.                 if (flag)
  63.                 {
  64.                         cout<<endl<<Rus("Последний отрицательный элемент: ")<<v[negative_number];
  65.                         cout<<endl<<Rus("Половина последнего отрицательного элемента: ")<<v[negative_number]/2.0<<endl;
  66.                 }
  67.                 else
  68.                 {
  69.                         cout<<endl<<Rus("Отрицательных чисел в массиве нет.");
  70.                         return 0;
  71.                 }
  72.  
  73.                 cout<<endl<<Rus("Итоговый массив: ");
  74.                 for (int i=0;i<size_of_massiv+2;i++)
  75.                 {
  76.                         cout<<v[i]+v[negative_number]/2.0<<" ";
  77.                 }
  78.                 cout<<endl<<Rus("Размер = ")<<v.size()<<endl;
  79.  
  80.  
  81.                 cout<<endl<<Rus("Значение k = ")<<k;
  82.                 cout<<endl<<Rus("Итоговый массив + k: ");
  83.                 for (int i=0;i<size_of_massiv+2;i++)
  84.                 {
  85.                         cout<<v[i]+v[negative_number]/2.0+k<<" ";
  86.                 }
  87.                 cout<<endl<<Rus("Размер = ")<<v.size()<<endl;
  88.                 return true;
  89.         }
  90. };
  91.  
  92. class Add
  93. {
  94.                 public:
  95.         void operator()(int massiv[],int n)
  96.         {
  97.                 int size;
  98.                 for (int i=0; i<size; i++)
  99.                 {
  100.                         massiv[i]=exp(massiv[i])*exp(n);
  101.                 }
  102.         }
  103. };
  104.  
  105.  
  106.  
  107. int main()
  108. {
  109.         int const a=4,k=10000;
  110.         int mas[a];
  111.  
  112.         randomize();
  113.         for (int i=0;i<a;i++)
  114.         {
  115.                 mas[i]=rand()%101-50;
  116.         }
  117.  
  118.  
  119.         Function<int,a,k>::MyArray(mas);
  120.         getch();
  121.         return 0;
  122. }