@neverest18

Как зациклить 2 вопроса в js?

Не могу решить задачу, по возможности не усложняя код, обойтись только условиями, циклами и массивами
Условие
Есть 10 карт (от 0 до 9) полных каких то денег и нужно сделать что-то похожее на это

vvedi nomer kartochki: 3
skolko polozhit? 100
0 0 0 100 0 0 0 0 0 0
v summe na vseh kartah 100

Так будет выглядеть консоль, если с самого начала на всех картах 0

Нужно проверить на ввод корректных данных:
Номера должны быть от 0 до 9, суммы от -1000 до 1000
Необходимо переспрашивать пользователя пока он не введет корректное число

Допер до этого, нормально зациклить вопросы никак не получатся
let card =[0,1,2,3,4,5,6,7,8,9]
let cash = [0,0,0,0,0,0,0,0,0,0,0]
let i = 0
let sum=0


let a =Number( prompt('Какая карта?'))   
    while(i<card.length){
        if(card[i]==a){
            cash[i] =Number( prompt('Сколько положить?'))
                if(cash[i]>-1001 && cash[i]<=1001){
                    for (i=0;i<cash.length;i++){
                        sum+=cash[i]
                    }
                    alert('Сума по картам '+sum)
                }
        }
    i++
    }
  • Вопрос задан
  • 93 просмотра
Решения вопроса 1
MagnusDidNotBetray
@MagnusDidNotBetray
Самый елеустремленный человек
Какой-то странный у вас код, логика сильно хромает. Зачем перебирать массив карт, и искать номер карты, если этот номер уже ввели? Вместо того чтобы положить деньги на счёт, вы перезаписываете его значение на то, что ввел юзер:
cash[i] =Number( prompt('Сколько положить?'))
А когда уже перезаписали, только потом валидируете введенное значение:
if(cash[i]>-1001 && cash[i]<=1001)
Это вас на курсах каких-то такому учат, или что?

Наверно, это должно выглядеть так:
let card =[0,1,2,3,4,5,6,7,8,9];
let cash = [0,0,0,0,0,0,0,0,0,0,0];
let sum=0;

let number = Number(prompt('Какая карта?'));
while (number < 0 || number > 9){
  number = Number( prompt('Какая карта?'));
}
let value = Number(prompt('Сколько положить?'));
while (value < -1000 || value > 1000){
  value = Number(prompt('Сколько положить?'));
}
cash[number] += value;
for (let i=0; i < cash.length; i++){
	sum += cash[i];
}
alert(`Сумма по картам: ${sum}`);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы