[SOLVED] Smallest odd number in given array

Issue

This code is supposed to find the smallest odd number in given array and store it in min but when I try to print min it always prints 0.

int smallestodd(int x[5]){
  int j;
  int k[5];
  int p = 0;
  int r = 0;

  for(int h =0; h<5;h++){

    j = x[h] % 2;
    if(j == 1){
      int temp =x[h];
      k[p] =temp;
      p++;
    }
  }

  int min = k[0];


  while(k[r] !=0){
    if(k[r] < min ){
      min = k[r];
      r++;
    }
  }

  return min;
}

Solution

Assuming there is an odd number in the array — let’s say trying to find the minimum odd number in an array with just even numbers (or no numbers) is UB 🙂

index = 0;
while (arr[index] % 2 == 0) index++; // skip even numbers
min = arr[index++]; // first odd number
while (index < length) {
    if (arr[index] % 2) {
        if (arr[index] < min) min = arr[index];
    }
    index++;
}

Answered By – pmg

Answer Checked By – Cary Denson (BugsFixing Admin)

Leave a Reply

Your email address will not be published.