13.01.2016, 15:50 | #1 (permalink) |
Новичок
Регистрация: 12.01.2016
Сообщений: 11
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Помогите пожалуйста. Pascal ABC
2.Программу написать с использованием подпрограмм (процедуры или функции) Составить программу для проверки, можно ли заданное натуральное число N представить в виде куба простого числа. |
13.01.2016, 15:50 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Предлагаю к вашему вниманию топики, которые по содержанию схожи с вашей темой Pascal. Помогите пожалуйста Помогите пожалуйста с Pascal Помогите пожалуйста. Pascal Помогите пожалуйста. Необходимо вычислить в Pascal Помогите, пожалуйста, подредактировать, Pascal |
13.01.2016, 16:20 | #2 (permalink) |
Member
Регистрация: 31.03.2010
Адрес: Тульская область
Сообщений: 1,309
Сказал(а) спасибо: 11
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 13090
|
2.Программу написать с использованием подпрограмм (процедуры или функции)
Составить программу для проверки, можно ли заданное натуральное число N представить в виде куба простого числа. Код:
function Proverka(an:integer; var at:integer):boolean; var e,k:Real; begin e:=0.00001; k:=Exp((1/3)*Ln(an)); if Frac(k)<e then begin Proverka:=true ; at:=Trunc(k); end else Proverka:=false; end; var n,t:integer; begin Write('N = '); Readln(n); Writeln; t:=0; if Proverka(n,t) then Writeln('DA rezultat = ',t) else Writeln('NET'); Readln; end. |
13.01.2016, 16:25 | #3 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
Код:
Var N,i,Q:Integer; BLN:Boolean; Function Prime(J:Integer):Boolean; Var m:Integer; b:Boolean; begin b:=true; if J>3 then begin m:=(J div 2)+1; Repeat Dec(m); If (J mod m)=0 then b:=false; Until (b=false) or (m=2); end; Prime:=b; end; Begin Write('N = '); Readln(N); Q:=0; Repeat Inc(Q); BLN:=Prime(Q) and (Q*Q*Q=N); Until BLN or (Q*Q*Q>N); if BLN then Writeln('Yes: ',N,' = ',Q,'*',Q,'*',Q) else Writeln('No'); End. |
|
13.01.2016, 16:33 | #4 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Женя, извини, но что-то у тебя не то:
1. Где проверка на то, что кубический корень - ПРОСТОЕ число? 2. В функциях "var" не употребляется: это тип формального параметра процедуры. 3. Что означает t? Какой в нем смысл, если ему присваивается глухо нулевое значение? |
13.01.2016, 17:26 | #5 (permalink) |
Member
Регистрация: 31.03.2010
Адрес: Тульская область
Сообщений: 1,309
Сказал(а) спасибо: 11
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 13090
|
1. А вот до простого и не дочитал
2. Первый раз слышу, что "var" не употребляется в функциях. Но я слышал, что если функция кроме прямого результата делает ещё что-то, то это очень даже хорошо. Дописал: Код:
function Prostoe(aa:integer):boolean; var pr:boolean; d:integer; begin if aa<1 then pr:=false else begin pr:=true; for d:=2 to (aa div 2) do if (aa mod d=0) then begin pr:=false; Break; end; end; Prostoe:=pr; end; function Proverka(an:integer; var at:integer):boolean; var e,k:Real; a:integer; begin e:=0.00001; k:=Exp((1/3)*Ln(an)); if Frac(k)<e then begin a:=Trunc(k); if Prostoe(a) then begin Proverka:=true ; at:=a; end end else Proverka:=false; end; var n,t:integer; begin Write('N = '); Readln(n); Writeln; t:=0; if Proverka(n,t) then Writeln('DA rezultat = ',t,'*',t,'*',t) else Writeln('NET'); Readln; end. |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
13.01.2016, 21:01 | #8 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Женя, я, признаться, смущен и озадачен. Впервые вижу такой гибридный тип подпрограмм. Интересно. Ладно, будем разбираться. "Век живи, век учись - дураком помрешь". Это я о себе.
|
13.01.2016, 22:50 | #10 (permalink) |
Хозяин Медной Горы
Регистрация: 01.08.2011
Адрес: Армавир
Сообщений: 12,159
Записей в дневнике: 8
Сказал(а) спасибо: 751
Поблагодарили 88 раз(а) в 27 сообщениях
Репутация: 57416
|
Владимир Игоревич, насколько помню, как в процедуре, так и в функции присутствует раздел объявления переменных, при этом функция оформляется в следующем виде:
Код:
Function <имя функции>(формальные параметры): тип значения функции; Var . . . Begin . . . End ; |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|