Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
С использованием векторных операций. n=input('введите n=');Содержание книги
Поиск на нашем сайте n=input('введите n='); for i=1:n X(i)=input('X(i)='); end s=X(1)+X(n); X(4:n+1)=X(3:n); X(3)=s; disp('Измененный массив'); disp(X)
Задача 35. Формирование нового массива на основе исходного Условие задачи. Дан одномерный массив А целых чисел и два числа x и y. Сформировать массив В из элементов исходного, лежащих в интервале от x до y. Исходными данными являются количество элементов массива n, элементы массива А и два числа x и y, задающие начало и конец интервала. Результатом будет одномерный массив В. Количество элементов исходного массива n вводится, а количество элементов результирующего массива заранее неизвестно, оно зависит от исходных данных и может быть иное, чем y исходного. Элементы исходного массива А[ i], принадлежащие заданному интервалу (x, y) должны быть записаны в массив В под другими номерами, нежели в исходном массиве. Например, пусть дан числовой массив из 10 элементов А ={20,41,3,11,12,4,9,8,10,30} и интервал (2,5). Проверка исходного массива начинается с первого элемента А[1], он не попадает в интервал и его в массив В заносить не надо. Проверяем второй элемент А[2], он тоже не попал в интервал, значит и его заносить в массив В не надо. Проверяем третий элемент А[3], он попадает в интервал, следовательно, его надо занести в массив В. Если делать это, используя присваивание В[ i]=А[ i], и помещать его в мвссив В под тем же номером 3, то первые два элемента массива В будут заполнены неопределенными значениями (в лучшем случае нулями) и таких элементов может быть много. Это зависит от того, сколько элементов массива А попадут в интервал. В приведенном примере массив В получится таким {0,0,3,0,0,4,0,0,0,0}. Поэтому новый массив В надо заполнять, начиная с первого элемента, а для номеров элементов этого массива необходимо предусмотреть дополнительную переменную k, которую надо увеличивать на 1 каждый раз перед тем как заносить новый элемент в массив В. И тогда полученный массив В будет содержать значения {3,4}. Переменная k будет не только номером элемента нового массива В, но после окончания формирования массива она будет определять реальное количество элементов в нем. Это надо учитывать при выводе массива В. Для обозначения индексов элементов массива А возьмем переменную i. До цикла переменной k присваивается начальное значение, равное 0, затем, в цикле для i, изменяющейся от 1 до n, каждый элемент массива А[ i] проверяется на принадлежность интервалу (х,у). Если условие выполняется, то формируется следующий номер элемента нового массива k= k+1 и в В[ k] заносится проверенный элемент исходного массива А[ i]. После выхода из цикла значение k будет определять количество элементов нового массива В. Если значение k осталось равным нулю, значит в массиве А не оказалось элементов, удовлетворяющих заданному условию. Следовательно, перед выводом необходимо выполнить проверку значения k. Если k =0, то выдается соответствующее сообщение на экран, в противном случае k элементов полученного массива выводятся на экран с использованием оператора цикла с параметром, изменяющимся от 1 до k. Структурированная запись алгоритма 35 1. Ввести значения границ интервала x и y. 2. Ввести количество элементов исходного массива n. 3. Ввести элементы массива А. 4. Задать начальное значение индексу нового массива k =0. 5. Повторять n раз для i =1, n следующее действие: 5.1 Проверить каждый элемент исходного массива A[i] на принадлежность заданному диапазону: A[ i]>х и A[ i]< y. 5.1.1. Если условие выполняется, то значение индекса k надо изменить на 1 и записать элемент A [ i ] в элемент массива В [ k]: k= k+1; В[ k] = A [ i ]. 6. Проверить значение k. Если оно равно нулю, 6.1.то вывести сообщение ‘Нужных элементов в исходном массиве нет’, 6.2. иначе в цикле от 1 до k вывести элементы полученного массива. Схема алгоритма
Текст программы на языке Си #include <stdio.h> #define N 50 int main (void) { int A[N], B[N], n, k=-1, i, x, y; printf("Введите x,y\n"); scanf("%d",&x); scanf("%d",&y); printf("Введите n\n"); scanf("%d", &n); printf("Введите элементы массива A\n"); for (i=0; i<n; i++) scanf ("%d", &A[i]); for (i=0; i<n; i++) if (A[i]>x && A[i]<y) { k++; B[k]=A[i]; } if (k==(-1)) printf("Нужных элементов в массиве нет'\n"); else { printf ("Полученный массив\n"); for (i=0; i<=k; i++) printf ("%d\t", B[i]); printf("\n"); } return 0; } Программа на языке Паскаль Program Main_35; Var a,b: array of integer; i,n,k,x,y: integer; begin writeln('Введите интервал (x,y)'); readln(x,y); writeln('Введите кол-во эл-тов масс.'); readln(n); setlength(a,n); setlength(b,n); writeln('Введите элементы массива'); for i:=0 to n-1 do readln(a[i]); k:=-1; for i:=0 to n-1 do if (a[i]>x) and (a[i]<y) then begin k:=k+1; b[k]:=a[i]; end; if k=(-1) then writeln('Нужных элементов в массиве нет') else begin writeln('Полученный массив'); for i:=0 to k do write(b[i]:3); end; a:=nil; b:=nil; end.
|
||
|
Последнее изменение этой страницы: 2021-04-12; просмотров: 177; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.198 (0.007 с.) |