Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
zabuka
1 / 1 / 0
Регистрация: 16.12.2010
Сообщений: 38
#1

Листинг из книги Лафоре - C++

17.01.2011, 22:28. Просмотров 954. Ответов 1
Метки нет (Все метки)

Добрый вечер.

Хочу попросить помощи: в третьей главе книги Лафоре идет объяснение циклов, начинается с цикла for.
В данной главе есть следующий пример:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
using namespace std;
int main()
{
    unsigned int numb;
    unsigned long fact = 1;
    cout << "Insert integral number: ";
    cin >> numb;
    for(int j = numb; j > 0; j--)
    {
        fact *= j;
    }
    cout << "Factorial of number is: " << fact << endl;
    return 0;
}
Хочу попросить, тех кто знает, прояснить два момента:
1. Почему переменной fact присваивается значение 1? (тестировал, без данного присвоения программа генерирует неверный результат).
2. Почему введенное пользователем число присваивается инициализированной в цикле переменной, а не используется сама переменная numb в данном цикле? (опять же проверял, без подобной инициализации генерируется ошибочное значение).

Буду очень благодарен за разъяснение данных моментов.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.01.2011, 22:28     Листинг из книги Лафоре
Посмотрите здесь:

C++ Задача из книги Р.Лафоре содержит ошибки, исправьте пожалуйста
Карточная игра из книги Лафоре C++
C++ Задание из книги Р.Лафоре. Что автор имел ввиду?
Решить упражнение на файловый ввод/вывод из книги Лафоре (12 глава) C++
Пример из книги Лафоре C++
C++ Пример из книги Лафоре
Упражнение из книги Лафоре C++
Задача 7 главы 7 из книги Р. Лафоре. Строки C++
Задания из книги Р. Лафоре C++
Задания из книги Р. Лафоре C++
Не компилируется листинг "Передача по ссылке аргументов" Р.Лафоре C++
Рекурсия с++ из книги Лафоре C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
sandye51
программист С++
677 / 579 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
18.01.2011, 02:24     Листинг из книги Лафоре #2
Цитата Сообщение от zabuka Посмотреть сообщение
1. Почему переменной fact присваивается значение 1? (тестировал, без данного присвоения программа генерирует неверный результат).
ты вообще в курсе что программа делает?
здесь идет вычисление факториала.
как бы тебе объяснить... когда создается переменная, то ее значение какое-то левое (если она не глобальная). Соот-но факториал n! = 1 * 2 * .. * n. Если ты не придашь значение начальное переменной fact, то у тебя получится итоговое значение fact = 1 * 2 * .. * n * (какое-то левое значение) . Соот-но чтобы получить верное значение, нужно присвоить изначально 1
Цитата Сообщение от zabuka Посмотреть сообщение
2. Почему введенное пользователем число присваивается инициализированной в цикле переменной, а не используется сама переменная numb в данном цикле?
можно и так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
using namespace std;
int main()
{
    unsigned int numb;
    unsigned long fact = 1;
    cout << "Insert integral number: ";
    cin >> numb;
    for(; numb > 0; numb--)
    {
        fact *= numb;
    }
    cout << "Factorial of number is: " << fact << endl;
    return 0;
}
Yandex
Объявления
18.01.2011, 02:24     Листинг из книги Лафоре
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru