IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> массив из степеней 5, помогите исправить
Athen
сообщение 29.04.2007 17:35
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 38
Пол: Женский

Репутация: -  0  +


Такая задача: Даны натуральное число n, целые числа a1,…,an. Рассмотреть отрезки последовательности a1,…,an (последовательности идущих подряд членов), состоящие из степеней пятерки. Получить наибольшую из длин рассматриваемых отрезков.


Program zadacha2;
Uses crt;
function stepen(b,n:integer):longint;
var
S:longint;
i:integer;
begin
S:=1;
for i:=1 to n do
S:=S*b;
stepen:=S;
end;
Var i,n,m,c,max:integer;
a:array [1..10] of longint;
Begin
Clrscr; max:=0; c:=1;
for i:=1 to 10 do begin
writeln('Vvedite a[i]');
readln(a[i]);
writeln('a[',i,']=',a[i]);
for n:=1 to 10 do begin
if a[i]=stepen(5,n) then
for m:=1 to 10 do begin
if a[i-1]=stepen(5,m) then c:=c+1;
if c>max then max:=c;end;end;end;
writeln('naibolshij otrezok =',max);
readln;
End.


Загвоздка в том, что прога считает ВСЕ элементы из степеней 5.
Помогите исправить пожалуста! Заранее огромное спасибо!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 29.04.2007 20:45
Сообщение #2


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


так?
uses crt;
function IsPower(const n: integer):boolean;
var test: integer;
res: boolean;
begin
test:=n;
res:=test>0;
while (test>1) and res do
if (test mod 5)=0 then
test:=test div 5
else
res:=false;
IsPower:=res;
end;

const n=30;
var
i,max,curr: integer;
a: array[1..n] of integer;
begin
clrscr;
randomize;
curr:=0;
max:=0;
for i:=1 to n do
begin
a[i]:=random(10);
if IsPower(a[i]) then
inc(curr)
else
begin
if max<curr then
max:=curr;
curr:=0;
end;
write(a[i],' ');
end;
if curr>max then
max:=curr;
writeln;
writeln(max);
readln;
end.


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 29.04.2007 21:01
Сообщение #3


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


 function IsPower(n: integer):boolean;
begin
while ((n > 1) and (n mod 5 = 0)) do n := n div 5;
isPower := n = 1;
end;


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 6.05.2024 8:26
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"