Cześć,
Program niby działą(chyba) ale potrzebuje pomocy jak można go poprawić.
Zasady:
- tworzymy 4 elementową tablice
- kazdy index tablicy zapełniamy liczbą z zakresu 0-9
- dodajemy jeden do wartości ostatniego indexu
- gdy ostatni index wynosi przed dodaniem 9 to należy zmienić go na 0 i dodać 1 do indexy niższego o 1
, np.przed: [1,2,3,4], a po: [1,2,3,5], przed: [1,2,3,9], a po: [1,2,4,0],
- gdy tablica będzie wypełniona samymi 9-tkami, zwiększ długość tablicy, przed: [9,9,9,9], a po: [1,0,0,0,0]
//inicjalizacja tablicy
let arr=[]
//wypełnienie tablicy 4 wartościami z zakresu 0-9
for (let i = 1; i<5; i++){
arr.push(Math.floor(Math.random()*10));
}
let arrLen = arr.length;
//główna funkcja dodająca
function Add1(array){
//zmienna śledząca ilość przejść wartości 9 na 0 na wypadek [9,9,9] -> [1,0,0,0]
let passed = 0;
console.log("Przed:"+array);
//pętla zaczynająca od ostatniego indexu tabeli
for (let i=1; i<=arrLen; i++){
//jeśli aktualny index w tabeli ma wartość poniżej 9 to dodaj 1 i zakończ
if(array[array.length - i] <= 8){
array[array.length-i] +=1;
return array
}else{
//wartość indexu jest równa 9 więc zostaje zerowana a index idzie o jedno miejsce w lewo
array[array.length-i]=0;
//zmienna zapamiętuje liczbe przejść w lewo
passed+=1;
//gdy tablica ma same 9-tki w indexach i wszystkie zostały przeiterowane
if((array[array.length-arrLen]===0)&&(passed === array.length)){
array.unshift(1);
}
}
}
}
Add1(arr);
console.log('Po:'+arr);