turkish777
@turkish777
junior frontend

Почему ругается компилятор на булевую функцию?

Добрый вечер!
Вот собственно задача:
5bad0a6ae6749286071221.jpeg
Смысл в том что-бы в огромном массиве указать точку с координатами i, j, затем относительно этой точки в выделенной области найти и засунуть в переменную SUM сумму всех простых чисел из этой области.
Вот собственно код:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>
 
bool prime(int n){ 
	int i;
	for(i = 2;i <= sqrt(n); i++)
		if(n % i == 0)
			return false;
	return true;
}
  int  obrabotka (int i, int j, int N, int M, int A[15][15]){
 	int a, S, k, l;
 	if(prime(A[i][j]) == true){
 		S += A[i][j];
	}
 	
 	a = 0;
 	k = i;
 	l = j;
 	while(a <= 3){
 		k--;
 		l--;
 		if(prime(A[k][l]) == true){
 			S += A[k][l];
		}
		a++;
	}
	a = 0;
	k = i - 1;
 	l = j + 1;
 	while(a <= 1){
 		k--;
 		l++;
 		if(prime(A[k][l]) == true){
 			S += A[k][l];
		}
		a++;
	}
	a = 0;
 	k = i + 1;
 	l = j - 3;
 	while(a < 6){
 		l++;
 		if(prime(A[k][l]) == true){
 			S += A[k][l];
		}
		a++;
	}
	
	return S;
}
void main ()
{
    int N, M, i, j, A[15][15], S;
    printf ("vvedite N i M\n");
    scanf ("%d % d", &N, &M);
    printf ("vvedite matrizu\n");
       for (i = 1; i <= N; i++)
             for (j = 1; j<=M; j++)
                scanf ("%d", &A[i][j]);

    printf ("vvedite i i j\n");
    scanf ("%d %d", &i, &j);
 
	S=obrabotka(i,j,N,M,A);
	printf("--------------");
	printf ("|  № |  i |  j | result|");
	printf("--------------");
	printf ("|  1 |%3d |%3d |%6d |", i, j, S);
	printf("--------------");
	getch();
 }

Мой компилятор(DEV-C++) ругается на функцию PRIME и говорит мол 'true is undeclared'
Хотелось бы узнать в чем проблема и сразу узнать есть ли еще косяки в этой проге.
Заранее благодарен
  • Вопрос задан
  • 104 просмотра
Решения вопроса 1
JaxxDexx
@JaxxDexx
Ну как бы идентификатор true необъявлен
сделайте
#include <stdbool.h>
либо
#define true 1
#define false 0
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Хотелось бы узнать в чем проблема

Судя по всему в том, что код был скомпилирован как C а не как C++.
Ответ написан
Комментировать
SerJook
@SerJook
кодер
Ваш код может выйти за границы массивы.
В вашем коде размеры выделенной область жестко заданы, но, насколько я понял из условия задания, область расширяется или сужается при другом размере матрицы.
К тому же имелось в виду найти искомую сумму для каждой пары (i,j), а не только для заданной.
Еще алгоритм можно оптимизировать, если сначала пройтись по всему массиву и обнулить составные (не простые) числа. Иначе у вас будет очень много вызовов функции prime().
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы