Функции, которые проверяют наибольший общий делитель составных фигур в массиве - PullRequest
0 голосов
/ 20 ноября 2018
#include <iostream>
using namespace std;

int 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;}
    return false;


}
int lkd(int a,int b){ // Checks the gcd
    int c;
    while(b > 0) {
        c = b;
        b = a % b;
        a = c;
    }
    return a;

}

int main(){
int ok;

do{
    int n;//Number of elements 
    int*a; //
    int sal;


    cout<<"Put in the number of elements"<<endl;
  std::cin >> n;
    cout<<"Input"<<n<<"elements"<<endl;
  std::cin >> *a;



int *array = new int[*a];



int rez = a[0];

for(int i=1; i<n; i++) {
if(sal_sk(a[i]==true))
    rez = lkd(rez, a[i]);
delete [] array;
}

Итак, у меня есть этот код, и я не вижу проблемы, почему он не работает, кто-то может мне помочь?Функции должны работать, так что это должна быть их вина, я думаю, что я не очень хорошо понимаю массивы, поэтому я думаю, что есть проблема.Комментарии помогут вам понять код спасибо!

1 Ответ

0 голосов
/ 20 ноября 2018

Мне даже не нужно было читать все до части массива, чтобы увидеть, что эта программа никогда не будет работать.

Я дам вам подсказку: sal_sk ВСЕГДА вернет true.Кроме того, true и false не являются int.

Что касается остальной части программы, она в значительной степени непригодна для использования.У вас есть открытый оператор do, который ни к чему не приводит, main неполон, переменные ok и sal не используются (???).Вы пытаетесь cin данных в неинициализированный указатель.Этот оператор new использует неправильную переменную, и, кроме того, он не там, где он должен быть.Цикл for начинает индексирование с 1, что неверно, должно быть 0, а if содержит круглые скобки в неправильном месте.Тело самого цикла уничтожает массив.

Я предлагаю полностью удалить функцию main и начать все с нуля.Помимо чтения книги по C ++, лучшее, что я могу вам предложить, - построчно читать ваш код и объяснять себе, что он делает.Если вы не можете, вернитесь к книге.

Несколько подсказок: вам не нужно никакого оператора do...while, вы хотите инициализировать массив, прежде чем запрашивать ввод, и вы хотите спроситьдля ввода n раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...