Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.03.2010, 02:32   #1
Superlotles
Пользователь
 
Аватар для Superlotles
 
Регистрация: 18.08.2009
Сообщений: 86
По умолчанию Простое или нет

Поправьте, что бы правильно работала , прога проверяет простое число или нет


Код:
#include "stdafx.h"
#include <conio.h>
using namespace std;
int Prostoe(double n){
	int i;
	for (i=2;i<=sqrt(n);i++){
		if (n % i==0)
			return true}
		return false;
}
int main(){
	cout << "Enter a number (0 to exit)";
	cout << " and press ENTER: ";
	cin >> k;
	if (k==0)
		break;
	Prostoe(k);
	if (Prostoe(k))
		cout << k << "is prostoe" << andl;
	else
	cout << k << "is not prostoe" << andl;

	return 0;
}
Skype: Lotles-XXXX
Superlotles вне форума Ответить с цитированием
Старый 12.03.2010, 08:12   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

1. Зачем два раза подряд вызывать Prostoe?
2. В функции вы возвращаете истина, если число составное. А в мейне, если истина пишите простое. ?
p51x вне форума Ответить с цитированием
Старый 13.03.2010, 00:47   #3
Superlotles
Пользователь
 
Аватар для Superlotles
 
Регистрация: 18.08.2009
Сообщений: 86
По умолчанию

Вот исправил.
Исправьте еще: он не запускается, здесь ошибки error C3861: 'sqrt': identifier not found, even with argument-dependent lookup

Исправьте чтоб компилировалсяся без ошибок


Код:
#include "stdafx.h"
#include <conio.h>
using namespace std;
int Prostoe(double n){
	int i;
	for (i=2;i<=sqrt(n);i++){
		return true;
		if (n % i==0)
			return false}
}
int main(){
	cout << "Enter a number (0 to exit)";
	cout << " and press ENTER: ";
	cin >> k;
	if (k==0)
		break;
	if (Prostoe(k))
		cout << k << "is prostoe" << andl;
	else
	cout << k << "is not prostoe" << andl;
return 0;
}
Skype: Lotles-XXXX

Последний раз редактировалось Stilet; 15.03.2010 в 09:43.
Superlotles вне форума Ответить с цитированием
Старый 13.03.2010, 01:07   #4
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Насколько я понял, вы k забыли объявить.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 13.03.2010, 09:42   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Код:
int i;
for (i=2;i<=sqrt(n);i++){
return true;if (n % i==0)
return false}
}
извините меня, это это же бред! или я "вааще" не понимаю C, или эта функция ВСЕГДА будет возвращать true, для любого числа.
имхо, в первом варианте было намного лучше.
достаточно было переставить местами true / false:
Код:
	for (i=2;i<=sqrt(n);i++)
                {
                 if (n % i==0)
                   return false
                 }
	return true;
______________________
ДОБАВЛЕНО
1) для вычисления sqrt в начале программы нужно указать библиотеку cmath
примерно так:
#include <cmath.h>

2) переменную K надо объявить
перед её использованием ( cin >> k; )
напишите, так:
int k;


p.s. к своему стыду я должен признать, что C совсем не знаю...

Последний раз редактировалось Serge_Bliznykov; 13.03.2010 в 09:55.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.03.2010, 19:58   #6
Superlotles
Пользователь
 
Аватар для Superlotles
 
Регистрация: 18.08.2009
Сообщений: 86
По умолчанию

Код:
#include "stdafx.h"
#include <conio.h>
#include <math.h>
using namespace std;
int Prostoe(int n){
	int i;
	for (i=2;i<=sqrt(double(n));i++){
		if (n % i==0)
			return false;
}
}
int main(){
	int k;
	cout << "Enter a number (0 to exit)";
	cout << " and press ENTER: ";
	cin >> k;
	if (k==0)
		break;
	if (Prostoe(k))
		cout << k << "is prostoe" ;
	else
	cout << k << "is not prostoe" ;
return 0;
}

Вот так, подправил немного, все равно выдает ошибку на "break"
Skype: Lotles-XXXX

Последний раз редактировалось Superlotles; 13.03.2010 в 20:18.
Superlotles вне форума Ответить с цитированием
Старый 13.03.2010, 20:13   #7
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

оператор break используется для выхода из цикла. У вас цикла нет, break не нужен. Если вам надо выйти из программы то вместо break напишите
Код:
exit(0)
NiCola999 вне форума Ответить с цитированием
Старый 13.03.2010, 20:30   #8
Superlotles
Пользователь
 
Аватар для Superlotles
 
Регистрация: 18.08.2009
Сообщений: 86
По умолчанию

Спасибо всем
Skype: Lotles-XXXX

Последний раз редактировалось Superlotles; 13.03.2010 в 20:33.
Superlotles вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Правда или нет? profi Свободное общение 13 27.01.2010 08:39
Правильно или нет вот в чём вопрос но ошибок нет... Alexcool Помощь студентам 2 10.01.2010 13:55
число простое или составное isus Помощь студентам 9 18.12.2009 00:35
Вирус или нет? RealSHELS Безопасность, Шифрование 1 20.05.2009 12:09
Лицензионное ПО или нет? pures Свободное общение 1 02.12.2007 06:34