On the assumption that @jazzamate just posted in the wrong forum, a C answer.
A bit of advice.
If you have arrays, you should be looking at loops (not copy/pasting specific subscripts).
Compare.
Code:
#include <stdio.h>
void PrintMessage(const char *msg)
{
printf("%s\n", msg);
}
struct {
void (*print) (const char *);
} lcd = {
PrintMessage
};
void foo(int IRvalue[8])
{
if ((IRvalue[0] <= IRvalue[1]) && (IRvalue[0] <= IRvalue[2]) && (IRvalue[0] <= IRvalue[3])
&& (IRvalue[0] <= IRvalue[4]) && (IRvalue[0] <= IRvalue[5]) && (IRvalue[0] <= IRvalue[6])
&& (IRvalue[0] <= IRvalue[7])) {
PrintMessage("CMD_ACT_ROT_0_315");
lcd.print("0");
}
if ((IRvalue[1] <= IRvalue[0]) && (IRvalue[1] <= IRvalue[2]) && (IRvalue[1] <= IRvalue[3])
&& (IRvalue[1] <= IRvalue[4]) && (IRvalue[1] <= IRvalue[5]) && (IRvalue[1] <= IRvalue[6])
&& (IRvalue[1] <= IRvalue[7])) {
PrintMessage("CMD_ACT_ROT_0_270");
lcd.print("1");
}
if ((IRvalue[2] <= IRvalue[0]) && (IRvalue[2] <= IRvalue[1]) && (IRvalue[2] <= IRvalue[3])
&& (IRvalue[2] <= IRvalue[4]) && (IRvalue[2] <= IRvalue[5]) && (IRvalue[2] <= IRvalue[6])
&& (IRvalue[2] <= IRvalue[7])) {
PrintMessage("CMD_ACT_ROT_0_225");
lcd.print("2");
}
if ((IRvalue[3] <= IRvalue[0]) && (IRvalue[3] <= IRvalue[1]) && (IRvalue[3] <= IRvalue[2])
&& (IRvalue[3] <= IRvalue[4]) && (IRvalue[3] <= IRvalue[5]) && (IRvalue[3] <= IRvalue[6])
&& (IRvalue[3] <= IRvalue[7])) {
PrintMessage("CMD_ACT_ROT_0_180");
lcd.print("3");
}
if ((IRvalue[4] <= IRvalue[0]) && (IRvalue[4] <= IRvalue[1]) && (IRvalue[4] <= IRvalue[2])
&& (IRvalue[4] <= IRvalue[3]) && (IRvalue[4] <= IRvalue[5]) && (IRvalue[4] <= IRvalue[6])
&& (IRvalue[4] <= IRvalue[7])) {
PrintMessage("CMD_ACT_ROT_0_135");
lcd.print("4");
}
if ((IRvalue[5] <= IRvalue[0]) && (IRvalue[5] <= IRvalue[1]) && (IRvalue[5] <= IRvalue[2])
&& (IRvalue[5] <= IRvalue[3]) && (IRvalue[5] <= IRvalue[4]) && (IRvalue[5] <= IRvalue[6])
&& (IRvalue[5] <= IRvalue[7])) {
PrintMessage("CMD_ACT_ROT_0_90");
lcd.print("5");
}
if ((IRvalue[6] <= IRvalue[0]) && (IRvalue[6] <= IRvalue[1]) && (IRvalue[6] <= IRvalue[2])
&& (IRvalue[6] <= IRvalue[3]) && (IRvalue[6] <= IRvalue[4]) && (IRvalue[6] <= IRvalue[5])
&& (IRvalue[6] <= IRvalue[7])) {
PrintMessage("CMD_ACT_ROT_0_45");
lcd.print("6");
}
if ((IRvalue[7] <= IRvalue[0]) && (IRvalue[7] <= IRvalue[1]) && (IRvalue[7] <= IRvalue[2])
&& (IRvalue[7] <= IRvalue[3]) && (IRvalue[7] <= IRvalue[4]) && (IRvalue[7] <= IRvalue[5])
&& (IRvalue[7] <= IRvalue[6])) {
PrintMessage("CMD_ACT_ROT_0_0");
lcd.print("7");
}
}
int smallest_index(int IRvalue[8])
{
int small = IRvalue[0];
int small_i = 0;
for (int i = 1; i < 8; i++) {
if (IRvalue[i] <= small) {
small = IRvalue[i];
small_i = i;
}
}
return small_i;
}
void bar(int IRvalue[8])
{
int p = smallest_index(IRvalue);
char buff[20];
sprintf(buff, "CMD_ACT_ROT_0_%d", (7 - p) * 45);
PrintMessage(buff);
sprintf(buff, "%d", p);
lcd.print(buff);
}
int main()
{
int arr[8] = { 5, 4, 3, 2, 1, 2, 3, 4 };
foo(arr);
bar(arr);
}