2016-04-18 2 views
-1

По завершении этой программы выведут все простые числа до 1000, это довольно простая программа, и хотя я много раз читал и перечитывал синтаксис, не работаетНебольшая программа для вычисления простых чисел не работает

Код был отредактирован с оригинального сообщения, теперь он работает с 0 ошибками, однако он не отображает правильный результат, вместо этого он отображает 008D1389 снова и снова.

это код в полном объеме:

#include <iostream> 
using namespace std; 
//funtion prototypes 
int output_number, number = 1, value = 1, i; 
bool is_this_number_prime(int number_in_question); 
bool does_it_have_factors(int numerator, int denominator); 
int prime_number_sender(); 
int prime_number_output(); 

//function definitions 
int prime_number_output() 
{ 
    int value; 
    value = prime_number_sender(); 
    return value; 
} 
int prime_number_sender() 
{ 
    int value = number; 
    if (is_this_number_prime(number) == true) 
     return value; 
    else 
     return 0; 

} 



bool is_this_number_prime(int number_in_question) 
{ 
    bool answer = true; 
    int i; 
    for (i = 2; i <= number; i++) 
    { 
     if (does_it_have_factors(number, i) == true) 
      answer = false; 
    } 
    return answer; 
} 

bool does_it_have_factors(int numerator, int denominator) 
{ 
     bool result = false; 

if (numerator % denominator == 0){ 
    bool result = true; 
} 
return result; 

} 
int main() { 

bool is_this_number_prime(int number_in_question); 
bool does_it_have_factors(int numerator, int denominator); 
int prime_number_sender(int number_in_question); 
int prime_number_output(); 
int output_number = prime_number_output(); 
int i; 
for (i = 2; i <= 1000; i++) 
{ 
    cout << prime_number_output << endl; 
    number++; 
} 
    return 0; 


} 

Если кто-то может пролить свет на то, почему код не работает, я буду очень благодарен. Спасибо.

+1

Вы объявляете/определить 'Int prime_output (INT значение);', но и использовать его как 'prime_output();'. Значение должно быть локальной переменной, а не аргументом. – Jarod42

+0

Исправьте свой отступ, и вы увидите, что 'void user_selection()' не имеет закрывающего '}'. – Jarod42

+0

отключить тему: выполнить поиск в Интернете «Сито из Eratosthenes» – user4581301

ответ

0

Ваш код генерирует немало ошибок для меня.

main.cpp|48|error: too few arguments to function 'int prime_output(int)'|

Вы prime_output объявлены int prime_output(int value), но вы быстро теневые параметр value с локальной переменной value. Вы также можете отказаться от параметра, это не принесет вам пользы.

main.cpp|52|error: too few arguments to function 'int perfect_output(int)'|

Такая же проблема, как указано выше. Похоже, вы пытаетесь напрямую изменить параметр, но это не так, как вы это делаете. Попытайтесь использовать ссылку:

int perfect_output(int& value) 

Функция сама по себе странная, как черт возьми. Вы ничего не выводите и не выполняете никаких вычислений. Я чувствую, что ты, возможно, еще не закончил писать.

main.cpp||In function 'void user_selection()':|
main.cpp|59|error: a function-definition is not allowed here before '{' token|

Это, вероятно, где вы получаете ошибку, о которой упоминает ваш вопрос. Ваше форматирование затрудняет это прямое наблюдение; К счастью, Code :: Blocks сообщает мне, где проблема.

void user_selection() 
{ 

Вы никогда не закрываете это. (Более точно, ваша закрывающая скобка все пути в конце файла, где он вызывает другую ошибку рассогласования.)

main.cpp|87|error: expected declaration before '}' token|

См выше. Это закрывающая скобка, которая как-то отделилась от user_selection. Постарайтесь быть более осторожными с форматированием кода; тем легче вы можете его прочитать, тем легче вы сможете увидеть такие вещи, как это делает компилятор.

main.cpp|63|error: expected primary-expression before '<' token|

Оператор if форматируется нечетно. Изменение = < к <=, как это:

for (i = 2; i <= 1000; i++)//if numbers are 1 off, make i = 1. 
+0

Спасибо за вашу помощь. Я разработал программу, используя методы, описанные выше, вопрос был изменен, чтобы содержать новый код. ошибок нет, что обнадеживает, но программа все еще работает неправильно. Я не признаю ошибочный вывод, поэтому не знаю, с чего начать диагностику. Вы можете видеть, где этот код терпит неудачу? –

+0

Если ваш код такой же, как и выше, я вижу пол-десятка мест, где он нуждается в исправлении. Однако я бы предложил задать новый вопрос, так как ваши ошибки компиляции, предмет этого вопроса, были решены. – computerfreaker

Смежные вопросы