С использованием векторных операций. n=input('введите n='); 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

С использованием векторных операций. 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; просмотров: 81; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.118.226.105 (0.008 с.)