Решение

В данной задаче обработку массива будем проводить с начала. Выход из цикла по дополнительному условию будет выполнен, если в массиве найден элемент больший, либо равный A (k=1). Для идентификации наличия в массиве элемента, равного A, введем вспомогательную переменную f с начальным значением f=0. При обнаружении элемента A, переменная f=1. Для определения номера позиции числа A в массиве введем дополнительную переменную poz с начальным значением n, т.е. предполагая, что все элементы массива меньше A. При обнаружении в массиве числа большего или равного A в переменной poz сохраняется его индекс – i. После выхода из цикла, по значению переменной f определяется наличие и место переменной A в массиве. Описанный алгоритм поиска и программа представлены на рисунке 2.15.

Используемые переменные: n – число элементов массива; x[] – статический массив; k – переменная для досрочного выхода из цикла при нахождении элемента большего или равного a; f – вспомогательная переменная для идентификации наличия в массиве числа, равного a; poz – номер элемента массива, на котором должно находится число a; i – параметр цикла; #include <stdio.h> main() { int f, k, n, poz, i, x[10], a; puts("Введите число элементов массива:"); scanf("%d",&n); for(i=0;i<n;i++) { printf("x[%2d]=",i); scanf("%d",&x[i]); } puts("Введите число a:"); scanf("%d",&a); f=0; poz=n; i=0; k=0; while(i<n && k==0) { if(x[i]>a) { poz=i;k=1;} else { if(x[i]==a) {poz=i; f=1; k=1;} } i++; } if(f==1) printf("В массиве есть число =%d, на позиции- %d\n", a, poz); else printf("Число %d должно находиться на позиции- %d\n",a, poz); for(i=0;i<n;i++) printf("x[%d]=%d\n",i,x[i]); return (0); }

Рисунок 2.15. Графическая схема алгоритма и программа для примера 2.7

Описанный алгоритм можно дополнить предварительным сравнением последнего элемента массива X[n-1] с числом A, если

X[n-1] = A – то заданное число находится на последнем месте, а в случае выполнения X[n-1] < A – число A должно находится в массиве на позиции n. Если ни одно из этих условий не выполнено, то это означает, что необходимо выполнить поиск числа A в массиве.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: