Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Не работает функция

Автор: maxart
Дата сообщения: 27.08.2011 01:18
Не могу понять одну маленькую деталь ...написал функцию она работает ...но когда пытаюсь ее прокручивать в цикле результатов совсем нет ...подскажите пожалуста где я ошибся?


Два натуральных числа называются "дружественными", если каждое из них равно сумме всех делителей другого, за исключением его самого (таковы, например, числа 220 и 284). Напечатать все пары "дружественных" чисел, не превосходящих заданного натурального числа.
(Определить функцию, вычисляющую сумму делителей числа.)




program pr4
integer s1
real k,g,s
write(*,*) "vvdedite chislo k"
read(*,*) k
do g=2,k
s=del(g)
s1=del(s-1)
if((s1==g).and.(s/=g).and.(s/=x)) then
     write(*,*) "Chisla",g," i",s,"-drugestvenie"
     x=s1
endif
end do
contains
integer function del(a)
integer s
    integer h,i
    h=a
    s=0
    do i=1,a-1
     if(mod(h,i)==0) then
     s=s+i
     end if    
    end do
    del=s
end function del

end
Автор: A1exSun
Дата сообщения: 27.08.2011 01:32
Это на каком языке?
Автор: maxart
Дата сообщения: 27.08.2011 01:40
на фортране
Автор: akaGM
Дата сообщения: 27.08.2011 02:13
maxart
у тебя до фига чего править, давай лучше сюда:
http://forum.ru-board.com/topic.cgi?forum=33&topic=7860#1
там тебе быстрее помогут...

а здесь скажу только, что при первом проходе по циклу у тебя X не определён (вернее, при некоторых условиях компилятора, он равен 0), это так и надо?
Автор: Cheery
Дата сообщения: 27.08.2011 02:13
maxart
типы переменных соблюдать не хотите?

Цитата:
integer function del(a)
    integer s
    integer h,i

какой тип у а?
ну хорошо, путь float по умолчанию, тогда почему

Цитата:
h=a

где h - целочисленное?
Автор: maxart
Дата сообщения: 27.08.2011 10:26
Про x все верно ...когда он числа перебирает что бы два раза одно и тоже не выводил ...к примеру
220 284
284 220
коряво наверное немного выглядит , не смог ничего другого придумать . в фортране новичок.


с типами переменных разобрался , там конечно должен быть целочисленный
Автор: akaGM
Дата сообщения: 27.08.2011 10:53
maxart
я тебе ещё раз говорю, переспроси здесь:

Вопросы программирования на Фортране

там сидят все наши фортранисты, они тебе быстро и качественно помогут, а твоё письмо с непонятной темой "Не работает функция" никто из них не читает и вообще закроют...
Автор: maxart
Дата сообщения: 27.08.2011 10:58
что не выходит ...функция уже работает правильно ...а результатов все равно нет

program pr4
integer s1,k,g,s
write(*,*) "vvdedite chislo k"
read(*,*) k
! думаю что то не так в этом блоке
do g=2,k ! k это предел в котором ищем дружественные числа
s=del(g) ! находим сумму делителей числа g
s1=del(s-1) ! находим сумму делителей числа s-1
if((s1==g).and.(s/=g).and.(s/=x)) then
     write(*,*) "Chisla",g," i",s,"-drugestvenie"
     x=s1
endif

end do
contains
integer function del(a)
integer s,i,a
    s=0
    do i=1,a-1
     if(mod(a,i)==0) then
     s=s+i
     end if    
    end do
    del=s
end function del

end
Автор: akaGM
Дата сообщения: 27.08.2011 11:13
maxart
ну как хочешь...

Страницы: 1

Предыдущая тема: DevExpress VCL build 2011 full source


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.