русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Вставка элементов в одномерный массив


Дата добавления: 2013-12-23; просмотров: 1340; Нарушение авторских прав


Begin

Begin

End.

Begin

End;

End;

Begin

End;

Begin

Begin

Удаление элементов из одномерного массива

Begin

Одномерные массивы Двумерные массивы

Вывод элементов массива

 
 


For I:=1 to 10 do For i:=1 to 3 do begin

write(a[ I ]:3); For j:=1 to 4 do

write(b[ i, j ]:3);

writeln; end;

 

 

Пример 1. Даны два одномерных массива А и В. Найти их скалярное произведение.

Решение. Скалярным произведением двух массивов одинаковой размерности называется сумма произведений соответствующих элементов. Это можно записать так:

a[1]*b[1] + a[2]*b[2] +... + a[n–1]*b[n–1] + a[n]*b[n], где n — это число элементов в массивах.

Тогда можно составить следующую функцию:

Function Sp(a, b: mas): longitn;

Var i: Integer;

s: Longint;

s:=0;

For i:=1 To n Do

s:=s+a[i]*b[i];

Sp:=s;

End;

Ниже программа приведена полностью

program scal_proiz;

uses crt;

const n=5; {n – число элементов массива}

type mas=array [1..n] of integer;

var a,b: mas;

i:integer;

{---------- Процедура ввода элементов массива----------}

procedure input(var c:mas);

begin

writeln('Введите ',n,' элементов массива');

for i:=1 to n do

read(c[i]);

end;

{--------Функция нахождения скалярного произведения двух массивов -----------}

function sp(x,y:mas):longint;

var s:longint;

begin

s:=0;

for i:=1 to n do

s:=s+x[i]*y[i];

sp:=s;

end;

BEGIN

clrscr;

input(a); input(b);

writeln ('scal proizv mas = ',sp(a,b));

readkey;



END.

 

 

Пример 2. Удалить из массива максимальный элемент, если все элементы разные. Элементы массива задаются случайно из диапазона –25 до 25.

Решение. Для того, чтобы решить данную задачу, необходимо:

· найти номер максимального элемента — k;

· сдвинуть все элементы, начиная с k-го, на один элемент влево;

· последнему элементу присвоить значение 0.

 

Program Example_2;

Uses crt;

Const n=30; dd=51;

Type myarray = Array [1..n] Of Integer;

Var A: myarray;

k, i: Integer; {k – номер максимального элемента}

{----процедура заполнения (инициализации) массива случайными числами-----------}

Procedure Input( Var m:myarray);

For i:=1 To n Do m[i]:=–25+Random(dd);

{Random выбирает случайное число из отрезка от 0 до dd–1, тогда i-му элементу массива будет присвоена сумма выбранного случайного числа и –25, таким образом, массив будет заполняться случайными числами от –25 до –25+(dd–1), то есть до –26+dd=25}

End;

{-----процедура вывода (распечатки) массива -------}

Procedure Print(n1: Integer; m: myarray);

For i:=1 To n1 Do Write(m[i]:5);

Writeln;

{-------Функция возвращающая номер максимального элемента массива --------}

Function Maximum(m: myarray): Integer;

Var max, maxi: Integer;

max:=–maxint; { –maxint – это целая константа, имеющая
минимальное значение среди целых чисел, равное – 32 768 }

For i:=1 To n Do {просмотр всех элементов массива}

If m[i]>max Then {если данный элемент больше максимального
элемента, найденного среди первых i–1 элементов, то}

Begin

max:=A[i]; {новое значение максимального элемента }

maxi:=i; {номер максимального элемента в массиве}

End;

Maximum:=maxi;

{------Процедура удаления элемента массива c номером k1-------}

Procedure Delete(k1: Integer; Var m: myarray);

Var i: Integer;

Begin {сдвиг элементов на один влево}

For i:=k1 To n–1 Do

m[i]:=m[i+1]; {i–му элементу присваиваем значение (i+1)–го}

m[n]:=0; {последний элемент равен 0}

 

Clrscr; {очистка экрана}

Randomize; {включение генератора случайных чисел}

Input(A); {заполнения массива A}

Print(n,A); {вывод заполненного массива A}

k:=Maximum(A); {поиск номера максимального элемента}

Delete(k, A); {удаление элемента с номером k}

Print(n–1,A); {вывод нового массива A}

Readkey;

 

Таким образом, на экране появятся следующие строки:

6 3 4 7 11 2 13 8 1 5 — это начальный массив,

6 3 4 7 11 2 8 1 5 — это массив после удаления максимального элемента.

 

Пример 3. Предположим, что максимальный элемент встречается несколько раз.

Решение. Когда необходимо удалять несколько элементов, то это лучше всего делать с конца массива, так как иначе надо будет снова возвращаться к элементу с номером, который только что удаляли (это возникает тогда, когда подряд идут два максимальных элемента, если первый удалим, то на его месте будет стоять снова максимальный элемент). Это можно сделать при помощи цикла с параметром, который имеет следующий вид:

For i:=B Downto A Do <тело цикла>,

где значение переменной i будут уменьшаться на единицу, начиная от B до A (значение B должно быть меньше значения A).

Кроме того, номер максимального элемента запоминать не будем, а просмотрим массив с конца и если элемент имеет максимальное значение, то удалим его, при этом значение счетчика k будем увеличивать на 1. Для решения этой задачи надо изменить функцию Maximum, сейчас нам нужен не номер, а значение максимального элемента.

Program Example_3;

Uses crt;

Const n=30; dd=51;

Type myarray = Array [1..n] Of Integer;

Var A: myarray;

m, k, i:Integer; {m – значение максимального элемента

k – число удаленных элементов}

Procedure Input( Var m:myarray);

{процедура заполнения (инициализации) массива случайными числами}

...

Procedure Print(n1: Integer; m: myarray);

{процедура вывода (распечатки) массива}

...

Function Maximum(m: myarray): Integer;

Var max : Integer;

max:=–maxint;

For i:=1 To n Do {просмотр всех элементов массива}

If m[i]>max Then max:=A[i];

{новое значение максимального элемента }

Maximum:=max;

End;

Procedure Delete(k1: Integer; Var m: myarray);

{процедура удаления элемента с данным номером}

...

Clrscr;

Randomize; {включение генератора случайных чисел}

Input(A); {заполнение массива A}

Print(n,A); {вывод заполненного массива A}

{поиск значения максимального элемента}

m:=Maximum(A); k:=0;

{просмотр всех элементов, начиная с последнего}

For i:=n Downto 1 Do

If A[i]=m Then {если данный элемент имеет максимальное значение, то }

Begin{удаляем элемент с номером i}

Delete(i,A);

Inc(k);

End;

Print1(n–k,A); {вывод нового массива A}

Readkey;

End.

 

 

Пример 4. Вставка элемента после элемента с заданным номером. Вставить число 100 после пятого элемента массива.

Решение. Пусть k — это номер элемента, после которого мы должны вставить элемент x (k и x будем вводить с клавиатуры). Тогда вставка осуществляется следующим образом:

· первые k элементов массива остаются без изменений;

· все элементы, начиная с (k+1)-го, необходимо сдвинуть на один назад;

· на место (k+1)-го элемента записываем значение х, то есть после k-го элемента массива.

Program Example_4;

Uses crt;

Const n=10; dd=51;

Type myarray=Array[1.. n+1] Of Integer;

VarA: myarray;

x, k:Integer; {x – вставляемое число, k – номер элемента, после которого вставляем}

Procedure Input( Var m: myarray); {процедура заполнения (инициализации) массива случайными числами}

...

Procedure Print(n1: Integer; m: myarray); {процедура вывода (распечатки) массива}

...

Procedure Insert(k1, x1: Integer; Var m: myarray);

Var i: Integer;

Begin{сдвиг элементов на одну позицию назад}

For i:=n Downto k1+1 Do m[i+1]:=m[i];

m[k1+1]:=x1; {вставка элемента на место после k1–го}

End;



<== предыдущая лекция | следующая лекция ==>
Массивы Строки Множества Записи Файлы | Вставка и удаление элементов в двумерном массиве


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 1.836 сек.