bool sal_sk (int sal) возвращает true, если sal даже false, если это не так, потому что вы всегда возвращаетесь на первой итерации цикла, как упомянул @ FrancoisAndrieux.
bool sal_sk(int sal) // If sal is a composite figure, then true, if its not then false.
{
for (int i = 2; i <= sal; i++) {
if (sal%i == 0)
return true;
else
return false;
}
}
Чтобы вернуть true в составномвнесите следующие изменения.
bool sal_sk(int sal) // If sal is a composite figure, then true, if its not then false.
{
for (int i = 2; i < sal; i++) {
if (sal%i == 0)
return true; // Has some factor other than 1 and itself
}
return false; // Does not have a factor other than 1 and itself
}
Еще одна ошибка здесь:
for (int i = 1; i < n; i++) {
if (sal_sk(a[i] == true))
rez = lkd(rez, a[i]);
}
Этот код передает true
или false
в sal_sk()
в зависимости от того, a[i] !=0
Вместо этого вы хотите:
for (int i = 1; i < n; i++) {
if (sal_sk(a[i]))
rez = lkd(rez, a[i]);
}
Это также ошибка:
cout << "Enter the array elements" << endl;
for (int i = 0; i < n; i++) {
std::cin >> *a; // This puts the value in a[0] always!
}
Код должен быть:
cout << "Enter the array elements" << endl;
for (int i = 0; i < n; i++) {
std::cin >> a[i]; // Put the value in the array at index i
}