проблема Blockly if-then-else и проблема с циклами и вычислениями - PullRequest
0 голосов
/ 06 мая 2020

Я новичок в программировании, поэтому изучаю основы с помощью Blockly.

Я пытаюсь выполнить упражнение ниже:

Ассоциация взимает членский взнос в размере 10,00 евро за год. Участники старше 50 лет получают скидку в размере 2,00 евро. Предоставляется скидка в размере 1,00 евро на каждого ребенка-иждивенца (максимум 5,00 евро). Если годовой доход меньше 12 500,00 евро, предоставляется скидка 2,50 евро. Максимальное сокращение на одного члена составляет 8,50 евро.

Вопрос: Создайте программу, которая считывает необходимые данные для каждого члена и показывает размер членских взносов, подлежащих уплате. Программа завершается, когда вводится имя «Стоп». В конце также сообщите нам, сколько членов вы рассчитали членский взнос, а также укажите общую и среднюю сумму членских взносов.

Я пытался решить эту проблему, но не могу найти правильный ответ.

Это код:

var membership, name2, age, numberOfChildren, yearlyIncome, ageReduction, childrenReduction, incomeReduction, totalreduction, toBePaid;
membership = parseInt(10);
ageReduction = parseInt(2);
childrenReduction = parseInt(1);
incomeReduction = 2.5;
totalreduction = 0;
name2 = ((output = window.prompt('enter your name')) ? output : "");
do {
age=parseInt((parseFloat((output = window.prompt('enter your age')) ? output : "")));
var blocktype_number = true;
if (output == null) {
    window.alert("No empty input allowed");
    break;
    }
} while(isNaN(age));
do {
numberOfChildren=parseInt((parseFloat((output = window.prompt('number of children')) ? output : "")));
var blocktype_number = true;
if (output == null) {
    window.alert("No empty input allowed");
    break;
    }
} while(isNaN(numberOfChildren));
do {
yearlyIncome=parseInt((parseFloat((output = window.prompt('yearly income?')) ? output : "")));
var blocktype_number = true;
if (output == null) {
    window.alert("No empty input allowed");
    break;
    }
} while(isNaN(yearlyIncome));
while (!(name2 == 'Stop')) {
  if (age > 50) {
      totalreduction = ageReduction;
  } else {
      totalreduction = 0;
  }
  if (numberOfChildren <= 5) {
      totalreduction = numberOfChildren * childrenReduction;
  } else {
      totalreduction = 5 * childrenReduction;
  }
  if (yearlyIncome < 12500) {
      totalreduction = incomeReduction;
  } else {
      totalreduction = 0;
  }
  if (totalreduction >= 8.5) {
      toBePaid = (membership - 8.5);
      window.alert(toBePaid+'\n');
  } else {
      toBePaid = (membership - totalreduction);
      window.alert(toBePaid+'\n');
  }
  name2 = (output = window.prompt('enter your name')) ? output : "";
  age = parseFloat((output = window.prompt('enter your age')) ? output : "");
  numberOfChildren = parseFloat((output = window.prompt('number of children')) ? output : "");
  yearlyIncome = parseFloat((output = window.prompt('yearly income?')) ? output : "");
}

Есть несколько проблемы: - расчет суммы к оплате неверен - я не знаю, как подсчитать, сколько членов ввело данные. Также как я могу рассчитать общую сумму к оплате? Я пробовал, но ответ всегда был «Нан»

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...