I have this c problem in witch i try to get the middle indexes from two arrays and i don't want to assign the middle index variables manualy. i wanted to write a algorithm so if the array has an even number of elements or not the middle index is chosen automatically
#include <stdio.h>
int middle(int array1[], int array2[], int array_s1, int array_s2)
{
int middle_index1, middle_index2;
array_s1 % 2 == 0 ? middle_index1 = array_s1 / 2 : (array_s1 / 2) - 1;
array_s2 % 2 == 0 ? middle_index2 = array_s2 / 2 : (array_s2 / 2) - 1;
printf("Elements in the original arrays:\n");
for (int i = 0 ; i < array_s1 ; i ++)
{
printf("%i, ", array1[i]);
}
printf("\n");
for (int i = 0 ; i < array_s2 ; i ++)
{
printf("%i, ", array2[i]);
}
printf("\nMiddle indexes = %i , %i", middle_index1, middle_index2);
int new_array[] = {array1[middle_index1], array2[middle_index2]};
int array_s3 = sizeof(new_array) / sizeof(new_array[0]);
printf("\nElements in the new array:\n");
for (int i = 0 ; i < array_s3 ; i++)
{
printf("%i, ", new_array[i]);
}
}
int main(void)
{
int array1[] = {10, 20, -30, -40, 30};
int array2[] = {120, 20 , 30, 40, 30};
int array_s1 = sizeof(array1) / sizeof(array1[0]);
int array_s2 = sizeof(array2) / sizeof(array2[0]);
middle(array1, array2, array_s1, array_s2);
}
But those two lines are evaluated as 0
array_s1 % 2 == 0 ? middle_index1 = array_s1 / 2 : (array_s1 / 2) - 1;
array_s2 % 2 == 0 ? middle_index2 = array_s2 / 2 : (array_s2 / 2) - 1;
Why am i doing wrong ? Can ternary operators be used inside variable initialization ?
code output:
Elements in the original arrays:
10, 20, -30, -40, 30,
120, 20, 30, 40, 30,
Middle indexes = 0 , 0
Elements in the new array:
10, 120,