Где ошибка в коде?

Рейтинг: 0Ответов: 1Опубликовано: 02.03.2011

Дан массив ненулевых целых чисел размера N. Проверить, образуют ли его элементы геометрическую прогрессию. Если образуют, то вывести знаменатель прогрессии, если нет — вывести 0.

program zz1
    integer,allocatable,dimension(:)::a
    integer::i,n,k=0
    print*,'Enter n'
    read*,n
    allocate(a(n))
    do i=1,n
        read*,a(i)
    end do
    do i=1,n
    if((a(i)/(a(i)-1)).eq.(a(i)+1/a(i)))then
        k=k+1
    end if
    end do
    if(k.eq.(n-2))then
        print*,'Geomtricheskaya Progressiya',(a(2)/a(1))
    end if
end program

Ответы

▲ 2Принят

Неправильный порядок скобок:

if((a(i)/(a(i)-1)).eq.(a(i)+1/a(i)))then

Надо бы:

if((a(i)/(a(i-1)).eq.(a(i+1)/a(i)))then

Но тогда выходит проблема с индексами и счетчик цикла надо изменить к виду:

do i=1,n-1
    if((a(i)/(a(i-1)).eq.(a(i+1)/a(i)))then
        k=k+1
    end if
end do