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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.03.2009, 12:46   #1
MAKEDON
The First Person!
Форумчанин
 
Аватар для MAKEDON
 
Регистрация: 07.08.2007
Сообщений: 228
Вопрос Ошибка warning C4715

Компилятор выдает: warning C4715: 'get_prime' : not all control paths return a value

Вот сам код. В чем ошибка? Программа должна выводить a-е простое число.

Код:
#include <stdio.h>

int get_prime(int i);
int is_prime(int j);

int main(){
	int a;
	scanf("%d",&a);
	printf("%d",get_prime(a));
	return 0;
}

int get_prime(int i){
	int b=0,k;

	for(k=1;k<=i;k++){
		if(is_prime(k)==1){
			b++;
		}
		if(b==i){
			return k;
		}
	}
}

int is_prime(int j){
	int i,b=0;
	for(i=1;i<=j;i++){
		if(j%i==0){
			b+=i;
		}
	}
	if(b-1==i){
		return 1;
	}else{
		return 0;
	}
}
Программа обычно делает то что вы ей сказали сделать, а не то что бы вы хотели, чтобы она сделала.
MAKEDON вне форума Ответить с цитированием
Старый 21.03.2009, 13:04   #2
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

В конце функции get_prime (перед закрывающей скобкой) напиши return 0;
Вот так короче
Код:
int get_prime(int i){
	int b=0,k;

	for(k=1;k<=i;k++){
		if(is_prime(k)==1){
			b++;
		}
		if(b==i){
			return k;
		}
	}
            return 0;
}
MaTBeu вне форума Ответить с цитированием
Старый 21.03.2009, 13:13   #3
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Данную ошибку у меня не выводит. Но и программа работать не будет.
В функции is_prime замените
Код:
if(b-1==i){
на
Код:
if(b==i){
Иначе для нее все числа будут непростые.
Далее, функция get_prime..
Она возвращает k. Но посмотрите что будет, если ей послать число 6 (соответствующее простое число - 11). Она даже не дойдет до 11.

ps Скажите, а чем вас не устроил вариант, предложенный мной здесь
http://programmersforum.ru/showthread.php?t=41330
?
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Очень ВАЖНО!!!<<WARNING>> Aliance Общие вопросы C/C++ 1 11.11.2008 21:08
Warning: Narrowing given wide string constant lost information. Как исправить? SkAndrew Общие вопросы Delphi 4 18.08.2008 12:11
Warning при компиляции... nighthack Общие вопросы C/C++ 3 06.06.2008 00:46
Warning LeoN Общие вопросы Delphi 10 11.02.2008 13:32