l oop прерывается, как только встречаются два последовательных элемента массива, которые либо равны друг другу и равны 15
, либо не равны.
for(i=0; i<size-1; i++){
if( ( a[i] == 15 ) && ( a[i+1] == 15 ) ){
return true;
}
else
return false;
}
По крайней мере, место оператор return false
за пределами l oop.
for(i=0; i<size-1; i++){
if( ( a[i] == 15 ) && ( a[i+1] == 15 ) ){
return true;
}
}
return false;
Было бы лучше объявить и определить функцию следующим образом:
int check_fifteen( const int a[], size_t size )
{
const int Target = 15;
int success = 0;
for ( size_t i = 1; !success && i < size; i++ )
{
if ( a[i] == Target ) success = a[i-1] == Target;
}
return success;
}
и переменная size
объявить например,
size_t size = sizeof(a) / sizeof(a[0]);
Также нет большого смысла писать функцию, которая проверяет только то, что два соседних элемента равны 15. Вы можете написать более общую функцию.
Вот, пожалуйста.
#include <stdio.h>
int check_equal_adjacent( const int a[], size_t size, int value )
{
int success = 0;
for ( size_t i = 1; !success && i < size; i++ )
{
if ( a[i] == value ) success = a[i-1] == value;
}
return success;
}
int main(void)
{
int a[] = { 1, 6, 15, 15, 3, 5, 15 };
size_t size = sizeof( a ) / sizeof( *a );
printf( "%s\n", check_equal_adjacent( a, size, 15 ) ? "true" : "false" );
return 0;
}
Вывод программы
true