Книга: Одномерные массивы

scanf("%d",&n);

for (i=0;i<n;i++)

{ printf("Введите число a[%2d]=",i);

scanf("%f",&a[i]);

}

P=1; k=0;

for(i=0;i<n;i++)

if(a[i]!=0) {P*=a[i]; k++;}

puts("Массив a");

for(i=0;i<n;i++)

printf("a[%2d]=%6.2f \n", i, a[i]);

if(k>0)

{

if(P>0) Sg=powl(P,1.0/k);

else Sg= –powl(fabs(P),1.0/k);

printf("Среднее геометрическое ненулевых элементов массива =%.4lf \n", Sg);

printf("P=%.4lf k=%d \n", P, k);

}

else puts("В массиве все элементы равны нулю! ");

return(0);

}

Рисунок 2.11 Графическая схема и программа для примера 2.6

В программе для возведения P в степень 1/k используется функция powl(основание, степень) , первый аргумент которой может быть только положительным числом. Поэтому для отрицательного P использовано выражение , запись которого на языке С имеет вид: –powl(fabs(P), 1.0/k) .

2.7 Поиск элементов, обладающих заданным свойством

При поиске элементов, обладающих заданным свойством, необязательно просматривать все элементы массива. Например, требуется определить, есть ли в массиве хотя бы один нулевой элемент. Для ответа на этот вопрос, достаточно в цикле просматривать элементы массива до тех пор, пока не закончится массив или не встретится равный нулю элемент. Если, например, уже третий элемент равен нулю, то остальные элементы просматривать нет необходимости.

В таких случаях для просмотра массива обычно используется оператор цикла while со сложным условием. Графическая схема для рассматриваемого примера изображена на рисунке 2.12. После цикла достаточно проверить, чему равно i . Если окажется, что i=n , т.е. были просмотрены все элементы, то в массиве нет нулевых элементов.

i=0;

while(i<n && a[i]!=0) i=i+1;

If(i == n)

К-во Просмотров: 1174
Бесплатно скачать Книга: Одномерные массивы