Buonasera ragazzi. Il titolo è molto strano lo so, ma il problema pure.
Sto scrivendo il codice di una funzione che ha il compito di prendere un array di int e "incollare" tutti i numeri ritornando un long. Se per esempio il mio array di int contiene {1, 2, 3, 4}, il long finale dovrebbe essere 1234. Ecco la funzione che ho scritto:
long commandArrayToLong(int *arr){
long temp = 0;
for(int i=0;i<getCommandSize(arr);i++){
temp = temp + (arr[i] * pow(10, i));
lcd.print(arr[i]);
lcd.print(" ");
lcd.print(temp);
delay(2000);
lcd.clear();
}
return temp;
}
Mentre la funzione getCommandSize() che vedete è la seguente e si basa sul presupposto che ogni array che passerò ad essa sarà preventivamente concluso con il numero '-1':
int getCommandSize(int *command){
int s = 0;
while(command[s] != -1){
s++;
}
return s;
}
La cosa strana è che come risultato la funzione commandArrayToLong(), se arr[]={1, 2, 3, 4}, ottengo 4319.
Stampando su un lcd il valore che assume di volta in volta la moltiplicazione
arr[i] * pow(10, i)
ottengo i giusti numeri, ovvero 1, 20, 300, 4000. Ma stampando ad ogni ripetizione del ciclo for() l'ammontare di temp ottengo: 1, 21, 320, 4319. Come se superato il secondo ciclo togliesse 1 ogni ciclo aggiuntivo. Non riesco a capire davvero quale possa essere il problema! Grazie in anticipo per l'aiuto.