Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Недостаток данного варианта программы заключается в том, что он не учитывает разрядность чисел и объёмы памяти, которые эти числа занимают. То есть ели не накладывать ограничений на генератор случайных чисел, числа получаются слишком большими получившееся произведение не может быть корректно обработано.
- #include <iostream>
- #include <cstdlib>
- #include <ctime>
- using namespace std;
- int main()
- {
- unsigned short m[100]; //Создаём массив длинной 100
- srand (time (NULL)); //Генератор случайных чисел
- int i, imax, jmax, kmax, k, j, pm; //100500переменных, но так надо
- i=0;
- while (i<100) //заполняем массив
- {
- m[i]=rand();
- i++;
- }
- imax=0; //Номера ячеек, значения в которых будут перемножаться для сравнения
- jmax=1;
- kmax=2;
- pm=m[0]*m[1]*m[2];
- i=0;
- while (i<100) //Проверка чисел в массиве на ненулёвость
- {
- if (m[i]==0)
- m[i]=rand();
- i++;
- }
- i=0;
- while (i<98) //Сложная конструкция, позволяющая перемножать три числа и сравнивать произведения. Число само на себя при этом мне умножается, но перебираются все возможные тройки чисел. Перемножаются, например, первое, второе и третье, потом первое, второе и четвёртое (...) после перемножения первого на второе на сотое начинают перемножаться первое, третье, четвёртое, первое, третье, пятое и т.д. тройками до конца, пока не дойдёт до указанных в циклах положений.
- {
- j=i+1;
- while (j<99)
- {
- k=j+1;
- while (k<100)
- {
- if (m[i]*m[j]*m[k]>pm)
- {
- pm=m[i]*m[j]*m[k];
- imax=i;
- jmax=j;
- kmax=k;
- }
- k++;
- }
- j++;
- }
- i++;
- }
- cout<<"Max proizv = "<<pm<< endl; //Выводим максимальное произведение
- cout<<"i = "<<m[imax]<< endl; //Далее - выводим содержимое ячеек, номера которых программа запомнила как номера ячеек, содержащих числа, давшие максимальное произведение
- cout<<"j = "<<m[jmax]<< endl;
- cout<<"k = "<<m[kmax]<< endl;
- cin.sync();
- cin.get();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement