Другие языки программирования и технологии

помогите в c++

1 Найдите самый маленький натуральный делитель числа x, отличный от 1 (2 <= x <= 30000).

2 Дан одномерный массив, состоящий из N вещественных элементов. Найти произведение элементов массива, расположенных между максимальным по модулю и минимальным по модулю элементами.
Формат входных данных
В первой строке входного файла содержится число N (1\le N\le 100). Во второй строке даны N вещественных чисел через пробел. Гарантируется, что среди них только одно максимальное по модулю и одно минимальное по модулю.
Формат выходных данных
Выведите в выходной файл искомое произведение с 3 знаками после десятичной точки или 0, если между максимальным и минимальным по модулю элементом нет других элементов.

буду очень благодарен
1.
#include iostream
using namespace std;

int main(){

int num, del(0);

cout << "Enter number: ";
cin >> num;

for(int i (2); i <= num; i++)
if(num % i == 0) { del = i; break; }

cout << del << endl;
system("pause > nul");
return 0;
}

2.
#include iostream
#include fstream

using namespace std;

int main(){

double *ar;
int n;
int begin(0), end(0);
double min, max, mult(1);

fstream a("input.txt");
fstream b("output.txt",ios::out);

a >> n;

ar = new double[n];

for(int i(0); i < n; i++){
a >> ar[i];
//cout << ar[i] << ' ';
if(i == 0) {
min = abs(ar[i]);
max = abs(ar[i]);
begin = 0;
end = 0;
}
if(min > abs(ar[i])) { min = abs(ar[i]); begin = i;}
if(max < abs(ar[i])) { max = abs(ar[i]); end = i; }
}
cout << endl;

if((begin < end) && (begin+1 != end)){
for(int i(begin+1); i < end; i++){
//cout << ar[i] << ' ';
mult *= ar[i];
}
b << mult;
}
else if((begin > end) && (begin-1 != end)){
for(int i(end+1); i < begin; i++){
//cout << ar[i] << ' ';
mult *= ar[i];
}
b << mult;
}
else b << 0;

a.close();
b.close();

system("pause > nul");
return 0;
}
РВ
Руслан Валиев
5 430
Лучший ответ