Не могу инициализировать массив C ++

0

Я пытаюсь, какие элементы в массиве (также числа Фибоначчи) являются простым или составным числом.

Мне задан массив [1... N] целых чисел. Я должен написать algoritm, который возвращает информацию, что если в массиве: -All элементы, индекс которых является одним из чисел Фибоначчи, являются составными числами. -At наименьшее число индекса покоя - простое число. Я получаю сообщение об ошибке в int main(): не могу преобразовать '' в 'int' при назначении и: слишком много значений инициализации. Мой код выглядит следующим образом:

#include <iostream>
#include <cstdlib>
using namespace std;
const int N = 5;
void function1(int tab[]);
bool function2(int tab[], int);
int main() {

    int tab[N], i;
    tab[N] = { 4, 8, 12, 16, 13 };
    function1(tab);
    system("pause");
    return 0;
}

void function1(int tab[]) {
    int a, b, x, i;
    bool g = 1;
    for ( i = 0; i < N, g == 1; i++) {
        a = 0;
        b = 1;
        while (i < a && i < b) {
            a = a + b;
            b = a + b;
        }
        if (i == b || i == a) {
            x = function2(tab, i);
        }
        if (!x) {
            cout << "NO";
            g = 0;
        }
    }
    int licz_pier = 0;
    i = 0;
    if (g) {
        while (i < N && licz_pier == 0) {
            if (tab[i] != 0) {
                if (function2(tab, i)) {
                    i++;
                }
                else {
                    licz_pier = 1;
                    cout << "yes" << endl;
                }
            }
        }
    }

}

bool function2(int tab[], int i) {
    int k = 2;
    bool x = 1;
    while (k < sqrt(tab[i]) && x == 1) {
        if (tab[i] % k == 0) {
            x = 0;
            tab[i] = 0;
                return 1;
        }
        k = k + 1;
    }

    if (x) {
        return 0;
    }
    return 0;
}

пс. Я начинаю, это мой первый пост, извините за мой английский.

  • 1
    А в чем твоя проблема с твоим кодом? Каков ожидаемый и фактический результат от некоторого ввода? Возможно, вы захотите прочитать контрольный список вопросов переполнения стека .
  • 0
    попробуйте поместить инициализацию массива tab в соответствие с объявлением.
Показать ещё 3 комментария
Теги:
arrays
algorithm
indexing

1 ответ

3
Лучший ответ

Заявление

tab[N] = { 4, 8, 12, 16, 13 };

не является юридическим. Вы должны поместить инициализацию в определение:

int tab[N] = { 4, 8, 12, 16, 13 };

Или вручную инициализируйте массив после объявления, один за другим:

tab[0] = 4;
tab[1] = 8;
tab[2] = 12;
tab[3] = 16;
tab[4] = 13;
  • 0
    Хорошо спасибо! Но все еще не работает, может быть, из-за неправильных аргументов function1 и function2? Или алгоритм, но я проверю еще раз.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню