Это мой код и его не работает.Функция, не возвращающая значения
если обры в положении предыдущего больше или меньше от следовать одному, если ее больше для все массива, так что я должен вернуть значение 1
, если в каком-то момент в массиве позиции предыдущей обр больше, то тогда следует один поэтому его следует вернуть значение 0 спасибо за любую помощь
#include <stdio.h>
#include <stdlib.h>
int Up_array(int *arr,int Size)
{
int i;
for(i=0;i<Size;i++)
if (arr[i] > arr[i+1])
{
return 0;
}
else if(arr[i] <= arr[i+1])
{
return 1;
}
}
void main()
{
int *arr,Size,i;
printf("please enter the size of the array\n");
scanf("%d",&Size);
arr=(int*)malloc(Size*sizeof(int));
printf("please enter the array\n");
for (i=0; i<Size ;i++)
scanf("%d",&arr[i]);
Up_array(arr,Size);
free(arr);
system("pause");
}
Пожалуйста, возьмите [тур] (https://stackoverflow.com/tour), научиться создавать [MCVE] (https://stackoverflow.com/help/mcve) и обратитесь к [Резиновая утка] (https://ericlippert.com/2014/03/05/how-to-debug-small-programs/). У вас есть * конкретный * вопрос для нас? –
'arr [i + 1]' может вызывать UB, поскольку в какой-то момент он будет эквивалентен 'arr [Size]', который выходит за рамки. Хотя при текущих проверках весь массив не проверяется только на первых двух элементах, переместите 'return 1;' из цикла и избавьтесь от 'else if' и измените цикл на' for (i = 0; я <размер-1, я ++) '. Я думаю, что будет делать то, что вы хотите, но это очень сложно сказать из вопроса. – George
Ваша функция просто проверяет первые 2 элемента массива, так как возвращается в обеих ветвях 'if'. – Barmar