Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 24.09.2011, 14:49   #1 (permalink)
shrek=)
Студент БГПУ
 
Аватар для shrek=)
 
Регистрация: 06.02.2010
Сообщений: 420
Записей в дневнике: 3
Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 470
По умолчанию Паскаль, помощь в доработке программ.

Дан массив из n натуральных чисел. Определить количество степеней пятерки.
Использовать функцию определения степени пятерки

Выдает неверное значение расчета
Код:
uses crt;
const
n=10;
var
mas:array [1..n] of integer;
i,k,l:integer;
w:real;
function log(b:real):real;
begin
log:=ln(b)/ln(5);
end;
begin
k:=0;
randomize;
for i:=1 to n do begin
mas[i]:=random(50)+1;
mas[5]:=25;
mas[8]:=125;
mas[7]:=25;
write (mas[i]:4);
log(mas[i]);
w:=(log(mas[i]));
if mas[i]=exp(ln(5)*w) then inc(k);
end;
writeln;
write ('k=',k);
readln
end.
shrek=) вне форума   Ответить с цитированием

Старый 24.09.2011, 14:49
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Наверняка проблему будет решать проще, если набраться больше информации

Паскаль, помощь в доработке программ
Паскаль, помощь в доработке программ

Старый 24.09.2011, 19:11   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от shrek=) Посмотреть сообщение
Дан массив из n натуральных чисел. Определить количество степеней пятерки. Использовать функцию определения степени пятерки
Ну, тут бы я пошел по несколько иному пути - без логарифмов и вообще, раз уж речь идет о натуральных числах, так с этим бы форматом и работал. Например, так:
Код:
const
 n=10;
var
 mas:array [1..n] of Word;
 i:Integer;
 N_5:Byte;

Function f5(k:Word):Boolean;
Var
 d,m:Word;
Begin
 Repeat
  d:=k div 5;
  m:=k mod 5;
  if m=0 then k:=d;
 Until (m>0) or ((m=0) and (d=1));
 f5:=((m=0) and (d=1));
End;

BEGIN
 for i:=1 to n do
  begin
   write('mas[',i:2,']= ');
   readln(mas[i]);
  end;
 N_5:=0;
 For i:=1 to n do
  if f5(mas[i]) then Inc(N_5);
 writeln('Number of 5 powers is ',N_5);
 readln;
END.
Vladimir_S вне форума   Ответить с цитированием
Старый 24.09.2011, 19:24   #3 (permalink)
shrek=)
Студент БГПУ
 
Аватар для shrek=)
 
Регистрация: 06.02.2010
Сообщений: 420
Записей в дневнике: 3
Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 470
По умолчанию

Vladimir_S, спасибо огромное очень помогли.
shrek=) вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 01:35.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.