Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 24.01.2015, 17:24
Новичок на форуме
Отправить личное сообщение для Nadir Посмотреть профиль Найти все сообщения от Nadir
 
Регистрация: 24.01.2015
Сообщений: 2

Программа на JS
Всем привет. Это моя первая программа. По идеи это программа которая считает сумму накоплений с учетом банковских процентов, которые выплачиваются каждый год. И я кладу каждый месяц одну сумму. Вопрос очень просто почему после выполнения full = 0?

var years = prompt("Сколько лет копим?)");
var prec = prompt("А сколько % в год?");
var income = prompt("Сколько откладываешь каждый месяц?");
var num = 12;
var full = 0;
months=years*num;
console.log("Получилось всего " + years + " лет и " + months + " месяцев.")
for (var month = 0; month == months; month++) {
   if (month % num == 0) {
	full = full +income + (full*prec/100);
	
} else {
  full = full + income;
}
 
}
console.log("Всего накопленно =" + full);

Последний раз редактировалось Nadir, 24.01.2015 в 17:28.
Ответить с цитированием
  #2 (permalink)  
Старый 24.01.2015, 17:31
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

month <= months
Ответить с цитированием
  #3 (permalink)  
Старый 24.01.2015, 21:07
Аватар для Safort
Профессор
Отправить личное сообщение для Safort Посмотреть профиль Найти все сообщения от Safort
 
Регистрация: 23.12.2013
Сообщений: 1,856

Некоторые ошибки:
1. prompt() возвращает строку, даже если вобьют число, то тип переменной всё равно будет строковым. Для приведения к числу используй parseInt() и parseFloat(). Прочитай про них подробнее.
2. Переменная months объявлена без var. Если будешь так и дальше делать, то в крупных приложениях горя хлебнёшь с отладкой.
3. Ну и как уже выше намекнул Octane, у тебя ошибка в условии цикла.
Ответить с цитированием
  #4 (permalink)  
Старый 25.01.2015, 03:10
Профессор
Отправить личное сообщение для SV0L0CH Посмотреть профиль Найти все сообщения от SV0L0CH
 
Регистрация: 07.11.2010
Сообщений: 301

Кроме parseInt и parseFloat стоит почитать про варианты использования конструктора Number, про унарный плюс и про JSON.parse. Это не просто разные способы одного и того же, у них разное поведение в некоторых ситуациях, потому выбери самое подходящее.
Вообще-то арифметические операции над строками преобразуют их в числа и можно это не замечать пока где-то не появится бинарный плюс который для строк является конкатенацией.
Так что результатом внезапно окажется набор из цифр и точек начинающийся с нуля.
Ответить с цитированием
  #5 (permalink)  
Старый 26.01.2015, 19:48
Новичок на форуме
Отправить личное сообщение для Nadir Посмотреть профиль Найти все сообщения от Nadir
 
Регистрация: 24.01.2015
Сообщений: 2

var years = Number( prompt("Сколько лет будем копить?") );
var prec = Number( prompt("Сколько % дает банк?") );
var income = Number( prompt("Сколько будешь откладывать каждый месяц?") );
var num = 12;   
var full = income;
months=years*num;
console.log("Всего получилось " + years + " лет и  " + months + " месяцев и по " + prec " каждый год.")
for (var month = 1; month <= months; month++) {
	if (month % num == 0) {
	full = full + (full*prec/100);
	console.log("12 months done!")
	console.log(full)
	}
	else {
	full += income;
	console.log(full)
	}
}
console.log("Всего скопленно =" + full);


Вот весь код. Подправил все как надо. Но что то с алгоритмом. Если ввести 1 год то программа работает нормально, но если ввести 2 и больше результать не точен. Если ввести 2 года то должно быть 2772

вот что выдает консоль


Ответить с цитированием
  #6 (permalink)  
Старый 27.01.2015, 12:33
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Nadir,
<script>
var years = Number( prompt("Сколько лет будем копить?",2) );
var prec = Number( prompt("Сколько % дает банк?",10) );
var income = Number( prompt("Сколько будешь откладывать каждый месяц?",100) );
var num = 12;
var full = 0;
months=years*num;
document.write("Всего получилось " + years + " лет и  " + months + " месяцев и по " + prec + "% каждый год.<br>") ;
for (var month = 1; month <= months; month++) {
    full += income
    document.write(month + " " +full.toFixed(2)+"<br>")
    if (month % num == 0) {
	full = full + (full*prec/100);
	document.write("12 months done! " +full.toFixed(2)+ "<br>")
	}

}
document.write("Всего скопленно =" + full.toFixed(2));

</script>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Операционная Система на JS Icat Общие вопросы Javascript 3 17.04.2018 22:54
Вывыод контента через JS inet_boy Элементы интерфейса 0 18.11.2013 03:00
Не получается вставить код js в HTML garmoni Элементы интерфейса 3 05.09.2013 05:56
Вставка кода js с помощью js Alice Общие вопросы Javascript 1 12.06.2013 19:05
Разное оформление для посетителей с JS и без fry2 Events/DOM/Window 13 03.02.2012 17:45