Книга: Одномерные массивы
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
Бесплатно скачать Книга: Одномерные массивы
|