Advertisement
Domerk

Фигня с массивом, заработавшая.

Oct 15th, 2011
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.97 KB | None | 0 0
  1. //Недостаток данного варианта программы заключается в том, что он не учитывает разрядность чисел и объёмы памяти, которые эти числа занимают. То есть ели не накладывать ограничений на генератор случайных чисел, числа получаются слишком большими получившееся произведение не может быть корректно обработано.
  2.  
  3. #include <iostream>
  4. #include <cstdlib>
  5. #include <ctime>
  6.  
  7. using namespace std;
  8.  
  9. int main()
  10. {
  11.     unsigned short m[100]; //Создаём массив длинной 100
  12.     srand (time (NULL)); //Генератор случайных чисел
  13.     int i, imax, jmax, kmax, k, j, pm; //100500переменных, но так надо
  14.     i=0;
  15.         while (i<100) //заполняем массив
  16.         {
  17.             m[i]=rand();
  18.                         i++;
  19.         }
  20.  
  21.         imax=0; //Номера ячеек, значения в которых будут перемножаться для сравнения
  22.         jmax=1;
  23.         kmax=2;
  24.         pm=m[0]*m[1]*m[2];
  25.         i=0;
  26.  
  27.         while (i<100) //Проверка чисел в массиве на ненулёвость
  28.         {
  29.             if (m[i]==0)
  30.                 m[i]=rand();
  31.             i++;
  32.         }
  33.  
  34.                 i=0;
  35.         while (i<98) //Сложная конструкция, позволяющая перемножать три числа и сравнивать произведения. Число само на себя при этом мне умножается, но перебираются все возможные тройки чисел. Перемножаются, например, первое, второе и третье, потом первое, второе и четвёртое (...) после перемножения первого на второе на сотое начинают перемножаться первое, третье, четвёртое, первое, третье, пятое и т.д. тройками до конца, пока не дойдёт до указанных в циклах положений.
  36.         {
  37.             j=i+1;
  38.  
  39.             while (j<99)
  40.             {
  41.                 k=j+1;
  42.  
  43.                 while (k<100)
  44.                 {
  45.                     if (m[i]*m[j]*m[k]>pm)
  46.                     {
  47.                                         pm=m[i]*m[j]*m[k];
  48.                     imax=i;
  49.                     jmax=j;
  50.                     kmax=k;
  51.                     }
  52.                     k++;
  53.                 }
  54.                 j++;
  55.             }
  56.             i++;
  57.         }
  58.         cout<<"Max proizv = "<<pm<< endl; //Выводим максимальное произведение
  59.                 cout<<"i = "<<m[imax]<< endl; //Далее - выводим содержимое ячеек, номера которых программа запомнила как номера ячеек, содержащих числа, давшие максимальное произведение
  60.                 cout<<"j = "<<m[jmax]<< endl;
  61.                 cout<<"k = "<<m[kmax]<< endl;
  62.         cin.sync();
  63.         cin.get();
  64.         return 0;
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement