|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
вычислить с помощью цикла
Написать программу, позволяющую вычислить с помощью цикла:k*(k+1)*(k+2)*...*2k, где k задается с клавиатуры.
|
#2
|
|||
|
|||
На форму два Edti'а: Edit1 и Edit2. И кнопочку.
Код:
var i, k, R: Cardinal; begin k := StrToInt(Edit1.Text); R := k; for i := 1 to k do R := R * (k + i) Edit2.Text := IntToStr(R); end; |
#3
|
|||
|
|||
а по конкретней можешь написать(с объяснениями)????????пжлст!!!!!!!!!
|
#4
|
|||
|
|||
ох ёп, куда ещё проще может быть?
взялся из неоткуда, ничего не прошу, помогаю просто так ICQ: 593977748 - стучать в случае КРАЙНЕЙ необходимости, ну, или если вы со Ставрополя |
#5
|
|||
|
|||
Код:
var i, //Счетчик цикла k, //Собственно, наш параметр k R: Cardinal; //Результат begin { Получаем значение k из текстового поля } k := StrToInt(Edit1.Text); { Устанавливаем начальное значение переменной R } R := k; { Наша цель - произвести k умножений. Начальное значение R у нас уже есть - это k. Затем умножаем на (k+i), первое значение k равно 1, т.е. получаем R*(k+1). Второе значение k равно 2, и то, что у нас получилось до этого - R*(k+1), мы умножаем на (k+2) - выходит R*(k+1)*(k+2). Ну и так далее, i после каждого умножения увеличивается на единицу, конечное значение перменной i - k. ВОт таким и будет последний множитель - (k+k) или (2*k) } for i := 1 to k do R := R * (k + i) Edit2.Text := IntToStr(R); end; Что еще можно сказать об этой "гениальной" программе - результат растет очень быстро с ростом k (быстрее факториала), поэтому быстро произойдет переполнение разрядной сетки. Лучше R объявить как Int64: Код:
var i, k: Cardinal; R: Int64; begin k := StrToInt(Edit1.Text); R := k; for i := 1 to k do R := R * (k + i) Edit2.Text := IntToStr(R); end; Последний раз редактировалось Raskolnikov, 26.04.2011 в 20:01. |
#6
|
|||
|
|||
у меня ошибку выдает!
|
#7
|
|||
|
|||
поставьте после:
Код:
R := R * (k + i) взялся из неоткуда, ничего не прошу, помогаю просто так ICQ: 593977748 - стучать в случае КРАЙНЕЙ необходимости, ну, или если вы со Ставрополя |
#8
|
|||
|
|||
Edit2.Text ошибку выдает здесь)= IntToStr(R);
|
#9
|
|||
|
|||
Да, верно, точку с запятой забыл.
|
#10
|
|||
|
|||
я поставил,все равно ошибку выдает
|
#11
|
|||
|
|||
Давай так попробуем, готовый проект.
|
#12
|
|||
|
|||
вроде работает,только я ничего не пойму
|
#13
|
|||
|
|||
Что ты не поймешь? Тут девять строк кода. Какие из них тебе непонятны?
|