Размеры всех прямоугольников - C (СИ)
Формулировка задачи:
Найти размеры всех прямоугольников, площадь которых задано натуральным числом s и стороны которых выражены натуральными числами. При этом решения, которые получаются перестановкой размеров сторон считать совпадающими.
Решение задачи: «Размеры всех прямоугольников»
textual
Листинг программы
#include <iostream>
using namespace std;
int main(){
int s;
int *M;// Множители без перевертышей
int count = 0;// Число множителей с дубликатами
cout << "s = ";
cin >> s;
if(s<=0)
{
cout << "Error s <= 0 \n";
return 1;
}
// Вычисляем кол-во всех множителей с дубликатами
for (int i = 1; i <= s; ++i)
if (s%i == 0)
count++;
M = new int [count];// Выделяем память
int count1 = count;// Дополнительный счетчик
int k = 0;
for (int i = 1; count1 > count/2; ++i)
if (s%i == 0)
{
M[k] = i;
M[k+1] = s/i;
k = k + 2;
count1--;
}
for(int i = 0; i < count; i = i + 2)
cout << M[i] << " " << M[i+1] << endl;
delete [] M;
return 0;
}
Объяснение кода листинга программы
- В начале программы подключается стандартная библиотека ввода-вывода.
- В главной функции программы объявляются следующие переменные: s — для хранения числа прямоугольников; M — для хранения множеств множителей без перевертышей; count — для хранения количества множителей с дубликатами.
- Выводится запрос на ввод числа прямоугольников.
- Если число прямоугольников меньше или равно нулю, то выводится сообщение об ошибке и программа завершается.
- Считается общее количество множителей с дубликатами.
- Выделяется память под массив множителей с дубликатами.
- Дополнительный счётчик count1 отслеживает количество ещё не использованных множителей.
- Заполняются массивы множеств множителей и их периодов на основе найденных множителей числа s.
- Выводятся на экран массивы множеств множителей и их периодов.
- Освобождается память, выделенная под массив множителей с дубликатами.
- Программа завершается с кодом 0, то есть успешно.