Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.09.2016, 10:46   #1
egor55555
 
Регистрация: 04.09.2016
Сообщений: 4
По умолчанию Определить функцию,позволяющую распозновать степени пятерки

Даны натуральное число n и целые числа а1,а2..,аn.Найти количество чисел a1(i=1,2,....,n),я вляющихся степенями пятерки.(Определить функцию,позволяющую распозновать степени пятерки)
egor55555 вне форума Ответить с цитированием
Старый 09.09.2016, 11:06   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

функция определения, является ли число степенью пятёрки очень простая - делите число на 5, пока остаток от деления равен нулю. Если в итоге получили 1 - то это степень 5-ки, иначе - не степень 5-ки.

примерно так:
Код:
function is_five_power(n:longint):boolean;
var d : longint;
begin
   is_five_power := false;
   if n<1 then Exit;
   d:=n;
   while (d>1) and ((d mod 5)=0) do d := d div 5;
   is_five_power := (d=1);
end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 09.09.2016, 11:20   #3
egor55555
 
Регистрация: 04.09.2016
Сообщений: 4
По умолчанию пожайлуса

а можно полностью задачу решить, а то я вообще не понимаю
egor55555 вне форума Ответить с цитированием
Старый 09.09.2016, 11:23   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от egor55555 Посмотреть сообщение
а можно полностью задачу решить, а то я вообще не понимаю
конечно, можно! Решайте!


p.s. а если помощь какая нужна, то спрашивайте, что именно непонятно!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 09.09.2016, 11:35   #5
egor55555
 
Регистрация: 04.09.2016
Сообщений: 4
По умолчанию

я прошу написать полностью прогу и внедрить туда эту функцию, помогите пожайлуста
вот прога эта но без функции, как вставить функцию чтоб все работало
Код:
program z;
uses crt;
var i,j,k,n,f:integer; s:real;
a:array [1..10] of integer;
begin
     writeln('Введите кол-во элементов массива');
     readln(n);
     writeln('Ввод элементов массива');
     for i:=1 to n do
         begin
              write('a[',i,']=');
              readln(a[i]);
         end;
     clrscr;
     writeln('Вывод элементов массива');
     for i:=1 to n do
         write(a[i],' ');
     writeln;
     f:=0;  k:=0;
     writeln('Числа, которые являются степенью пяти: ');
     for i:=1 to n do
         begin
              for j:=1 to a[i] do
                  begin
                       s:=round(exp(1/j)*ln(a[i]));
                       if s=5
                          then
                              begin
                                   f:=1;
                                   k:=k+1;
                                   write(a[i],' ');
                                   break;
                              end;
                  end;
         end;
     writeln;
     if f=0
        then
            writeln('Таких чисел в массиве нет!')
     else
         writeln('Их кол-во - ',k);
     readln;
end

_____
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 09.09.2016 в 11:39.
egor55555 вне форума Ответить с цитированием
Старый 09.09.2016, 11:38   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
я прошу написать полностью прогу
почему Вы не хотите написать программу самостоятельно?

для этого Вам нужно.
1) описать переменные (в том числе переменную типа массив a : array[1..xx] of Longint)
2) в основном теле программы (после главного begin) нужно ввести n и числа в массив
3) обнулить переменную, в которой будем считать количество элементов массива, являющихся степенью числа 5
4) в цикле for i:=1 to n do
проверять, если число является степенью 5-ки if is_five_power( a[i]) then
увеличивать счётчик с количеством элементов массива, являющихся степенью числа 5 ( + 1 )

5) вывести на экран сообщение и значение счётчика с количеством элементов массива, являющихся степенью числа 5

END.

что тут сложного?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 09.09.2016, 11:42   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

пока писал сообщение, Вы уже привели код программы...

вам нужно вместо этого
Цитата:
Код:
   writeln('Числа, которые являются степенью пяти: ');
     for i:=1 to n do
         begin
              for j:=1 to a[i] do
                  begin
                       s:=round(exp(1/j)*ln(a[i]));
                       if s=5
                          then
                              begin
                                   f:=1;
                                   k:=k+1;
                                   write(a[i],' ');
                                   break;
                              end;
                  end;
         end;
написать
Код:
  for i:=1 to n do
    if is_five_power(a[i]) do
       begin
          f:=1;
          k:=k+1;
          write(a[i],' ');
       end;

кстати, переменную f можно выбросить. совсем. она избыточна.
вместо неё точно так же используйте переменную k (это и есть счётчик для подсчёта количества элементов массива, являющихся степенью числа 5)
если k=0 - значит, таких чисел в массиве нет.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 09.09.2016, 12:09   #8
egor55555
 
Регистрация: 04.09.2016
Сообщений: 4
По умолчанию

спасибо решил)))))))))))))))))))))))))))))) )))))))))
egor55555 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Написать программу, позволяющую определить является ли натуральное число палиндромом. zadiraazat7 Паскаль, Turbo Pascal, PascalABC.NET 4 27.05.2014 22:57
[Язык LISP] Используя функцию DEFUN, определить функцию DemonXZ Помощь студентам 0 09.06.2013 18:10
Протабулировать функцию y=экспонетна в степени x, с шагом h в заданном диапазоне systemv Помощь студентам 3 29.10.2010 13:48
Создать функцию, позволяющую вычислить новую стоимость товара после уценки. Визуал Бэйсик. КПСС Помощь студентам 6 07.11.2007 01:00