![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Дано натуральное число n. Выяснить, можно ли представить n! в виде произведения трех последовательных целых чисел.
Вот мой код: Код:
uses SysUtils; var n,i,f:integer; p:boolean; begin writeln('vvedite n'); readln(n); f:=1; for i:=1 to n do f:=f*i; p:=false; for i:=1 to n do if i*(i+1)*(i+2)=f then begin p:=true; writeln(i,'*',i+1,'*',i+2,'=',f); end; if (p=false) then writeln('Ne vozmozno'); readln; end. Что тут не так?.. Заранее благодарен ![]() |
#2
|
|||
|
|||
![]() ну потому что если ввести 6 то f будет равна 720,
а в условии for i:=1 to n do begin if i*(i+1)*(i+2)=f then вот эта вот строчка i*(i+1)*(i+2) после шести раз будет 336 равна а не 720,так что в программе какбы всё верно,гдето условие,формулу, не правильно записал просто |
#3
|
|||
|
|||
![]() ошибка в этой строчке
Код:
for i:=1 to n do Код:
i*(i+1)*(i+2) Значит нужно изменить конечное значение счетчика, чтобы проверял не до n... ну например хотя до 20... или 30... или 100... напрашивается вопрос: Каким должно быть конечное значение??? Последний раз редактировалось Row, 17.04.2011 в 13:21. |
#4
|
||||
|
||||
![]() Код:
program Project1; {$APPTYPE CONSOLE} uses SysUtils; var n,i,f:integer; p:boolean; begin writeln('vvedite n'); readln(n); f:=1; for i:=1 to n do f:=f*i; p:=false; i:=1; while (i*(i+1)*(i+2))<=f do begin if i*(i+1)*(i+2)=f then begin p:=true; writeln(i,'*',i+1,'*',i+2,'=',f); end; Inc(i); end; if (p=false) then writeln('Ne vozmozno'); readln; end. Пишу программы за еду. __________________ |
#5
|
|||
|
|||
![]() блин, вот я осел))
зациклился на счетчике и все, про while не подумал даже)) спасибо большое)) |