Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > C++

Ответ
 
Опции темы
Старый 17.06.2011, 16:53   #1
Hagrael
Нуждающийся
 
Регистрация: 11.06.2011
Сообщений: 57
Написано 6 полезных сообщений
(для 7 пользователей)
Сообщение Простое ли число?

Вот еще одна нерабочая программка от моего издания:
#include <iostream>
#include <math.h>

using namespace std;

int main() {
    int n;
	bool is_prime=true;

	cout << "Input n: ";
	cin >> n;

    for (int i=0; i<=9; i++) {
    	if (!(n%i)) {
    		// here
    	}
    }

    if (is_prime) {
    	cout << "Yes! Your number is prime!";
    } else {
    	cout << "Lol, can't you see difference between a prime number and not a prime one?";
    }

    return 0;
}
Консоль запускается, но после введения пользователем числа, высвечивается окошко с сообщением:
"Исключение unknown software exception 0xc000094 в приложении по адресу 0x0040146f.
'OK' -- завершение приложения"
'Отмена' -- отладка приложения".
При чем, это сообщение открывается только тогда, когда я вставляю какую-нибудь инструкцию в место, помеченное меткой "here". Что не так, помогите, пожалуйста, разобраться.
(Offline)
 
Ответить с цитированием
Старый 17.06.2011, 16:57   #2
IGR
Blitz's Shame !!
 
Регистрация: 31.03.2007
Сообщений: 3,639
Написано 832 полезных сообщений
(для 2,013 пользователей)
Ответ: Простое ли число?

когда я вставляю какую-нибудь инструкцию в место, помеченное меткой "here".
например ??
(Offline)
 
Ответить с цитированием
Старый 17.06.2011, 17:09   #3
YellowAfterlife
ПроЭктировщик
 
Аватар для YellowAfterlife
 
Регистрация: 19.02.2011
Сообщений: 134
Написано 81 полезных сообщений
(для 219 пользователей)
Ответ: Простое ли число?

for (int i=0; i<=9; i++) {
    	if (!(n%i))
Я вижу вы любите делить на 0? А на ноль делить нельзя*. Тем более искать остаток от деления на 0.
Стоит заменить i=0 на i=1 и программа будет работать.
*Если вы не работаете с языком D.

Хорошего дня.
__________________

Мой сайт-блог. Игры, обновления, примеры для Haxe, JavaScript(+HTML5), GameMaker, Love2d...
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Hagrael (18.06.2011)
Старый 18.06.2011, 00:12   #4
Igor
Мастер
 
Аватар для Igor
 
Регистрация: 03.05.2010
Адрес: Подмосковье
Сообщений: 1,218
Написано 438 полезных сообщений
(для 790 пользователей)
Ответ: Простое ли число?

Стоит заменить i=0 на i=1 и программа будет работать.
все числа прекрасно делятся на 1, меняй стразу на i=2.
советы по оптимизации: проверить не является ли число двойкой, (сразу простое), потом проверить на чётность, потом проверять на делимость на нечётные числа до тех пор пока i>sqrt(n), а поскольку считать в цикле помногу раз корень плохо, посчитать его один раз, сохранить в переменную и сравнивать с ней
if ((n>2) & !(n%2)) //возможно тут надо писать не & а что-то иное
{int sq=sqrt(n);
for (int i=3; i<=sq; i+=2)
{ if (!(n%i)) {...
}}}
P.S. В С++ я не мастер))
__________________
О¯О ¡¡¡ʁɔvʎнdǝʚǝdǝu dиW
(Offline)
 
Ответить с цитированием
Старый 18.06.2011, 00:48   #5
L-ee-X
Разработчик
 
Аватар для L-ee-X
 
Регистрация: 06.06.2011
Адрес: Ирк. обл.
Сообщений: 541
Написано 133 полезных сообщений
(для 220 пользователей)
Ответ: Простое ли число?

Сообщение от YellowAfterlife Посмотреть сообщение
*Если вы не работаете с языком D.
На счет языка D Кто нибудь пробовал на нем работать?? И на сколько он лучше С++ или хуже?
(Offline)
 
Ответить с цитированием
Старый 18.06.2011, 12:31   #6
Hagrael
Нуждающийся
 
Регистрация: 11.06.2011
Сообщений: 57
Написано 6 полезных сообщений
(для 7 пользователей)
Ответ: Простое ли число?

Ох, что-то я ступил. Спасибо!
Но почему же тогда пустой блок if работал? Может, компилятор сам стирает пустые условия?
(Offline)
 
Ответить с цитированием
Старый 18.06.2011, 13:46   #7
den
Дэвелопер
 
Аватар для den
 
Регистрация: 13.02.2010
Сообщений: 1,645
Написано 620 полезных сообщений
(для 2,419 пользователей)
Ответ: Простое ли число?

в яве и шарпе тоже можно на ноль делить!
получится + или - infinity
(Offline)
 
Ответить с цитированием
Старый 18.06.2011, 15:28   #8
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Простое ли число?

в яве и шарпе тоже можно на ноль делить!
получится + или - infinity
целые числа??? float в плюсах тоже можно делать на ноль.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
den (18.06.2011)
Старый 18.06.2011, 16:11   #9
Hagrael
Нуждающийся
 
Регистрация: 11.06.2011
Сообщений: 57
Написано 6 полезных сообщений
(для 7 пользователей)
Ответ: Простое ли число?

А вот теперь такая странность возникла. Почему-то вот такой код:
double n=1000000009;
cout << n << endl;
n=static_cast<int>(n);
cout << n;
выдает 2 одинаковых ответа. Почему?
(Offline)
 
Ответить с цитированием
Старый 18.06.2011, 16:14   #10
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Простое ли число?

потомучто n - double

как была так и осталась
вот если бы ето было 1С то и тип у n был бы новый, а в плюсах статическая типизация. привыкай
(Offline)
 
Ответить с цитированием
Старый 18.06.2011, 18:46   #11
mr.DIMAS
Дэвелопер
 
Аватар для mr.DIMAS
 
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений
(для 1,540 пользователей)
Ответ: Простое ли число?



if ((n>2) & !(n%2)) //возможно тут надо писать не & а что-то
иное
{int sq=sqrt(n);
for (int i=3; i<=sq; i+=2)
{ if
(!(n%i)) {...
}}}
что это было?
__________________

(Offline)
 
Ответить с цитированием
Старый 18.06.2011, 18:53   #12
Igor
Мастер
 
Аватар для Igor
 
Регистрация: 03.05.2010
Адрес: Подмосковье
Сообщений: 1,218
Написано 438 полезных сообщений
(для 790 пользователей)
Ответ: Простое ли число?

кусок кода, который можно добавить в код в первом сообщении вместо "for (int i=0; i<=9; i++) { if (!(n%i)) {".
Что не так?
__________________
О¯О ¡¡¡ʁɔvʎнdǝʚǝdǝu dиW
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 16:04.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com