Ошибка в простом коде
Задача:
Цитата:
Население города ежегодно увеличивается на 1/20 наличного состава жителей. Через сколько лет население города утроится.
|
Решение:
PHP код:
#include "stdafx.h" #include "stdio.h" #include "locale.h"
int _tmain(int argc, _TCHAR* argv[]) { setlocale(LC_ALL,"rus"); // вывод русских символов в консоль printf("Введите изначальную численность жителей "); int i; float n, e; scanf("%f",&n); e=3*n; for (i=1; n<=e; i++) n=n+n*0,05; printf("\nКоличество жителей утроится через %d лет\n",i); return 0; }
При запуске программа просит ввести численность жителей и на этом выполнение останавливается (просто висит окно консоли). Что я сделал не так?
Написано в MVS 2010
|
функция n=n+n*0,05; слишком медленно растет. А вообще - она подозрительна. Попробуй на 2 операции разбить. И введи поправку, что бы "полтора землекопа" не получалось.
Сделай вывод текущего значения n в цикле. Считать будет дольше, но увидишь "виснет" или нет.
|
изменил тело цикла с на
Код:
n=n+n*0,05;
printf("%f\n",n);
в результате прога зацикливается, постоянно выводит n
|
El Scorpio |
13-10-2010 01:23 1517579 |
лучше заменить на n *= 1.05
И я нашёл ошибку - в коде программы для дробных чисел должны использоваться точки, а не запятые. А запятая, если я правильно помню - это оператор перечисления. Примеры его использования С++
Код:
int x,y,z; // объявление нескольких переменных
for (int i = столько_то, j = столько_то; i <= j; i++, j = F (i)) // цикл с несколькими итераторами
{
// какой-то код
}
То есть, в вашем случае сначала выполняется команда n=n+n*0, а потом - "пустая" команда 0.05
|
Итого с учетом изменений
PHP код:
#include "stdafx.h" #include "stdio.h" #include "locale.h"
int _tmain(int argc, _TCHAR* argv[]) { setlocale(LC_ALL,"rus"); // вывод русских символов в консоль printf("Введите изначальную численность жителей "); int i; float n, e; scanf("%f",&n); e=3*n; for (i=1; n<=e; i++) n*=1.05; printf("\nКоличество жителей утроится через %d лет\n",i); return 0; }
вот только результат всегда один и тот же, 24 странно, или так и надо?
|
Цитата:
Цитата Hector
вот только результат всегда один и тот же, 24 странно, или так и надо? »
|
n=n*1.05*1.05*1.05...
1,05 ^ 23 = 3,071523756
|
Время: 17:11.
© OSzone.net 2001-