Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Нахождение Prime number, ошибка при компиляции 
:(
    Опции темы
Zucler
Дата 16.3.2008, 11:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 16.3.2008
Где: Sydney, Australia

Репутация: нет
Всего: нет



Всем привет, я вот только начал учить C++ в универе, и первой работой стало нахождение логических и синтаксических ошибок, в данном коде. 

Вообщем первоначальный код выглядит так:

Код

#include <iostream>
#include <math.h>

#define TRUE 1;
#define FALSE 0;

int main()
{
   int number;

   getNumber(*number);

   if (isPrine(number)) 
      cout << "\n" << number << is a prime number\n";
   else 
      cout << "\n" << number << is not a prime number\n";

   return 0;
}

void getNumber(int &number)
{
   cout << "Please enter a positive number ";
   cin >> number;
   if (!cin.good())
   {
      printf("Invalid number entered\n");
      exit(1);
   }
}

int isPrime(int number)
{
   int count, s;

   /* Every even number is not prime */
   if (number % 2 == 0) return TRUE;

   /* check every odd number up to the square root of the number */
   s = sqrt(number);
   for (count=3; count<=s; count+=2);
   {
      if (number % count == 0) return TRUE;
   }
   return FALSE;
}


Код после моих небольших добавок:


Код

#include <iostream>
#include <math.h>
using namespace std;

#define TRUE 1;
#define FALSE 0;
void getNumber(int);
int isPrime(int);

int main()
{
   int number;

   getNumber(*number);

   if (isPrine(number)) 
      cout << "\n" << number << "is a prime number\n";
   else 
      cout << "\n" << number << "is not a prime number\n";

   return 0;
}

void getNumber(int &number)
{
   cout << "Please enter a positive number ";
   cin >> number;
   if (!cin.good())
   {
      printf("Invalid number entered\n");
      exit(1);
   }
}
int isPrime(int number)
{
   int count;
   double s;

   /* Every even number is not prime */
   if (number % 2 == 0) return TRUE;

   /* check every odd number up to the square root of the number */
   s = sqrt(number);
   for (count=3; count<=s; count+=2);
   {
      if (number % count == 0) return TRUE;
   }
   return FALSE;
}         


prime.cpp: In function 'int main()':
prime.cpp:15: error: invalid type argument of 'unary *'

следующая ошибка появляется при компиляции, насколько я понимаю, это всё из-за поинтеров. Мне советовали изменить getNumber(*number) и void getNumber(&number) на getNumber(int &number) и void getNumber(int *number) соответственно, но количество ошибок к сожалению только возрастает. 

P.S. Структуру программы менять, к сожалению нельзя  smile Не подскажете, как сделать, чтобы заработало  smile 
P.P.S. Вспомнил ещё, что там должны быть логические ошибки, поэтому подскажите тоже, если найдёте  smile 

PM MAIL ICQ Skype YIM MSN   Вверх
JackYF
Дата 16.3.2008, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 6
Всего: 162



Цитата(Zucler @  16.3.2008,  10:17 Найти цитируемый пост)
getNumber(*number);

getNumber(&number);


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
bsa
Дата 16.3.2008, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Во-первых, getNumber(number) - при передаче по ссылке никакие звездочки и эмперсанды не нужны.
Во-вторых, в функции isPrime надо поменять все FALSE на TRUE, а TRUE на FALSE.
PM   Вверх
inside_pointer
Дата 16.3.2008, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 9.3.2008

Репутация: -1
Всего: 12



Если не будет работать

Код

void getNumber(int &number)


заменить на

Код

void getNumber(int * number)


начальное объявление тоже тип такой же сообщить



Это сообщение отредактировал(а) inside_pointer - 16.3.2008, 15:36
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0933 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.