Непосредственно сами алгоритмы с массивами
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
S | и | н | ф | о | р | м | а | т | и | к | а |
| строка, |
индексы | 1 | 2 | 3 | 4 | 8 | 6 | 7 | 8 | 9 | 10 | 11 |
| массив символов |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Р | 45 | 65 | 89 | 12 | 10 | 78 | 99 | 10 | 56 | 10 | 1 |
| вектор, |
индексы | -5 | -4 | -3 | -2 | -1 | 0 | 1 | 2 | 3 | 4 | 5 |
| одномерный |
|
|
|
|
|
|
|
|
|
|
|
|
| массив |
Описание одномерных массивов
алгоритмический
язык (среда Кумир) | Паскаль | С++ | Basic |
сим таб
S[1:11] | var
S:array[1..11] of char; | char S[11]; | Dim S$(11) |
цел таб
Р[-5:5] | var
P:array[-5..5] of integer; | int P[11]; | Dim P(11) as
Integer |
Ввод одномерного массива
алгоритмический
язык (среда Кумир) |
Паскаль |
С++ |
Basic |
нц для н от -5 до 5 |
for i:=-5 to 5 do |
for (int i=0; i<11; i++) |
For i=1 To 11 |
ввод Р[н] |
read(P[i]); |
{ cin>>P[i]; } |
Input P(i) |
кц |
|
//индекс начинается с нуля |
Next i |
Вывод одномерного массива
алгоритмический
язык (среда Кумир) |
Паскаль |
С++ |
Basic |
нц для н от -5 до 5 |
for i:=-5 to 5 do |
for(int i=0; i<11; i++) |
For i=1 To 11 |
вывод Р[н], ' ' |
write(P[i], ' '); |
{ cout<<P[i]<<' '; } |
Print P(i); |
кц |
writeln; |
cout<<endl; |
Next i |
|
| //индекс начинается с нуля | Print |
Опишите массив для своей задачи. Напишите ввод и вывод введенного массива.
Рассмотрим основные алгоритмы по работе с одномерными массивами:
- Задание массива переменной длины
алгоритмический язык (среда Кумир) | Паскаль* | С++ | Basic |
цел n, н | var A:array of integer;
n, i :integer; | int n, i; | Input n; |
ввод n | begin | cin>>n; | Dim A(n) |
цел таб А[1:n] | readln(n); | int A[n]; | For i=1 To n |
нц для н от 1 до n | setlength(A,n); | for(int i=0; i<n; i++) | Input A(i) |
ввод A[н] | for i:=0 to n-1 do | { | Next i |
кц | read (A[i]); | cin>>A[i]; |
|
| end. | } |
|
Задание 1:
- Напишите вывод этого массива.
- Выведите только четные элементы массива.
- Выведите только числа, кратные заданному числу Р.
- Выведите отрицательные, затем нулевые и положительные элементы массива.
- Выведите элементы массива в обратном порядке.
- Выведите квадраты всех элементов массива.
* - Для Паскаля задание массива переменной длины возможно только в версии Free Pascal, PascalABC.net, Lazarus, Delphi.
- Определение наибольшего/ наименьшего числа в массиве
алгоритмический язык (среда Кумир) | Паскаль | С++ | Basic |
макс:=А[1] | maximum:=A[0]; | maximum=A[0]; | maximum=A(1) |
нц для к от 2 до n | for i:=1 to n-1 do | for(int i=1; i<n; i++) | For i=2 To n |
если A[к]>макс | if A[i]>maximum | if (A[i]>maximum) | If A(i)>maximum Then |
то макс:=A[к] |
then | maximum=A[i]; | maximum=A(i) |
все | maximum:=A[i]; |
| End If |
кц |
|
| Next i |
Задание 2:
- Как правильно описать новые переменные? Вставьте в основной алгоритм и добавьте вывод максимального элемента.
- Напишите алгоритм нахождения наименьшего элемента массива.
- Напишите алгоритм нахождения количества минимальных элементов.
- Напишите алгоритм нахождения места самого первого максимального элемента, если их несколько.
- Напишите алгоритм нахождения места самого последнего максимального элемента, если их несколько.
- Напишите алгоритм нахождения минимального из четных и максимального из нечетных элементов. Если такого нет, то вывести сообщение об этом.
- Нахождением суммы/произведение элементов массива
алгоритмический язык (среда Кумир) | Паскаль | С++ | Basic |
сумма:=0 | summa:=0; | summa=0; | summa=0 |
нц для к от 1 до n | for k:=0 to n-1 do | for(int i=0; i<n; i++) | For i=1 To n |
сумма:=сумма+A[к] | summa:=summa+A[k]; | summa+=A[i]; | Summa=Summa+A(i) |
кц |
|
| Next i |
Задание 3:
- Как правильно описать новые переменные? Вставьте в основной алгоритм нахождения суммы элементов массива.
- Напишите алгоритм нахождения произведения элементов массива.
- Напишите алгоритм нахождения суммы только четных элементов.
- Напишите алгоритм нахождения произведения нечетных элементов массива.
- Напишите алгоритм нахождения суммы только положительных элементов.
- Напишите алгоритм нахождения произведения отрицательных элементов массива.
- Определение среднего значения
алгоритмический язык (среда Кумир) | Паскаль | С++ | Basic |
сумма:=0 | summa:=0; | summa=0; | summa=0 |
нц для к от 1 до n | for k:=0 to n-1 do | for(int i=0; i<n; i++) | For i=1 To n |
сумма:=сумма+A[к] | summa:=summa+A[k]; | summa+=A[i]; | Summa=Summa+A(i) |
кц | srednee:=summa/n; | srednee=summa/n; | Next i |
среднее:= сумма/n |
|
| srednee=Summa/n |
Задание 4:
- Как правильно описать новые переменные? Вставьте в основной алгоритм нахождения среднего арифметического элементов массива.
- Напишите алгоритм нахождения среднего геометрического элементов массива. Что будет, если произведение отрицательное?
- Напишите алгоритм нахождения среднего значения только положительных элементов. Что будет, если таких чисел в массиве нет?
- Напишите алгоритм нахождения среднего значения только нечетных элементов массива.
- Напишите алгоритм нахождения среднего значения только четных элементов массива.
- Напишите алгоритм нахождения среднего значения только отрицательных элементов массива.
- Поиск числа в массиве
алгоритмический язык (среда Кумир) | Паскаль | С++ | Basic |
ввод а | readln(b); | k=0; | k=0 |
н:=0 | k:=0; | cin>>b; | Input b |
нц для к от 1 до n | for i:=0 to n-1 do | for(int i=0; i<n; i++) | For i=1 To n |
если A[к]=а | if A[i]=b then | if (A[i]==b) | If A(i)=b Then k=k+1 |
то н:=н+1 | k:=k+1; | k++; | Next i |
все |
|
|
|
кц | | | |
Задание 5:
- Как правильно описать новые переменные? Вставьте в основной алгоритм поиск числа в массиве.
- Напишите алгоритм вывода количества чисел, кратных 3.
- Напишите алгоритм вывода количества положительных чисел.
- Напишите алгоритм вывода количества отрицательных чисел.
- Напишите алгоритм вывода количества четных чисел.
- Напишите алгоритм вывода количества чисел, оканчивающихся на 5.
- Перестановка элементов массива
алгоритмический язык
(среда Кумир) | Паскаль | С++ | Basic |
m:=div(n,2) | m:=n div 2; | m=n/2; | m=n\2 |
нц для к от 1 до m | for i:=0 to m-1 do | for(int i=0; i<m; i++) | For i=1 To m |
а:=A[к] | begin | { | b=A(i) |
A[к]:= A[n-к+1] | b:=A[i]; | b=A[i]; | A(i)=A(n-i+1) |
A[n-к+1]:=а | A[i]:=A[n-1- i]; | A[i]=A[n-1-i]; | A(n-i+1)=b |
кц | A[n-1-i]:=b; | A[n-1-i]=b; | Next i |
| end; | } | |
Задание 6:
- Что выполняет приведённый алгоритм? Как правильно описать новые переменные? Вставьте в основной алгоритм. Добавьте вывод получившегося массива.
- Запишите алгоритм изменения массива сдвигая элементы массива вправо k раз.
- Запишите алгоритм изменения массива сдвигая элементы массива влево k раз.
- Переставьте первый и последний элемент массива.
- Переставьте все отрицательные элементы массива в конец массива, а все положительные в начало.
- Переставьте все нули в конец/начало массива, не меняя последовательности других элементов.
- Переставьте наибольший и наименьший элементы массива местами. Если таких чисел несколько - переставьте первый максимальный с последним минимальным.
- Создание нового массива на основе исходного по заданному правилу
алгоритмический язык
(среда Кумир) | Паскаль | С++ | Basic |
m:=0 | m:=0; | m=0; | m=0 |
нц для к от 1 до n | for i:=0 to n-1 do | for(int i=0; i<n; i++) | For i=1 To n |
если A[к]>0 | if A[i]>0 then | if (A[i]>0) | If A(i)>0 Then |
то m:=m+1 | begin | { | m=m+1 |
B[m]:= A[к] | m:=m+1; | B[m]=A[i]; | B(m)=A(i) |
все | B[m]:=A[i]; | m++; | End If |
кц | end; | } | Next i |
Задание 7:
- По какому правилу был создан новый массив В? Как лучше объявить новый массив? Вставьте в основной алгоритм описание массива В. Запишите вывод нового массива.
- Получите новый массив из исходного, используя обратный порядок,
- Запишите алгоритм получения нового массива из максимальной по длине убывающей последовательности чисел исходного массива.
- Запишите алгоритм получения нового массива по правилу: сначала все четные элементы, затем нечетные.
- Запишите алгоритм получения нового массива по правилу: сначала все отрицательные элементы, затем положительные.
- Запишите алгоритм получения нового массива по правилу: сначала максимальный элемент, затем минимальный, далее максимальный из оставшихся, затем минимальный из оставшихся и т.д.
- Замена элементов массива (редактирование)
алгоритмический язык
(среда Кумир) | Паскаль | С++ | Basic |
m:=0 | m:=0; | m=0; | m=0 |
нц для к от 1 до n-1 | for i:=0 to n-2 do | for(int i=0; i<n-1; i++) | For i=1 To n-1 |
если A[к]>A[к+1] | if A[i]>A[i+1] then | if (A[i]>A[i+1]) | If A(i)>A(i+1) Then |
то A[к]:= A[к+1] | begin | { | A(i)=A(i+1) |
все | A[i]:=A[i+1]; | A[i]=A[i+1]; | End If |
кц | end; | } | Next i |
Задание 8:
- Определите, что выполняет приведенный алгоритм. Выведите полученный массив.
- Замените все отрицательные элементы массива на их абсолютное значение.
- Замените минимальное отрицательное число на максимальное положительное.
- Замените все четные элементы массива на 1 и подсчитайте количество замен. Если замены не было - вывести сообщение об этом.
- Массив должен состоять только из целых чисел. Но при вводе и описании массива использовали вещественный тип. Отредактируйте элементы массива так, чтобы без изменения типа массив состоял только из целой части вещественного числа.
- В символьной строке замените все гласные буквы на заданный символ.
- Замените все числа, которые больше среднего арифметического всех чисел в массиве, на это среднее значение.
- Вставка нового элемента в массив
алгоритмический язык (среда Кумир) | Паскаль | С++ | Basic |
ввод m, k | readln (m, k); | cin>> m>> k; | Input m, k |
нц для к от n+1 до k-1 шаг -1 | for i:=n downto k-1 do | for(int i=n; i>k; i--) | For i=n+1 To k-1 Step -1 |
A[к]:=A[к-1] | A[i]:=A[i-1]; | A[i]=A[i-1]; | A(i)=A(i-1) |
кц | A[k]:=m; | A[k]=m; | Next i |
A[k]:=m | n:=n+1; | n++; | A(k)=m |
n:=n+1 | | | n=n+1 |
Задание 9:
- Как правильно описать массив и переменные? Вставьте алгоритм в основную программу. Добавьте вывод получившегося массива.
- Напишите алгоритм дублирования всех элементов массива.
- Напишите алгоритм дублирования четных элементов массива.
- Напишите алгоритм вставки нового элемента Р после k-го.
- Напишите алгоритм вставки перед отрицательными элементами массива их значение по модулю.
- Напишите алгоритм слияния двух упорядоченных по возрастанию массивов в порядке возрастания.
- Удаление элемента массива
алгоритмический язык (среда Кумир) | Паскаль | С++ | Basic |
ввод k | readln(k); | cin>>k; | Input k |
нц для к от k до n-1 | for i:=k to n-2 do | for(int i=k; i<n-1; i++) | For i=k To n-1 |
A[к]:=A[к+1] | A[i]:=A[i+1]; | A[i]=A[i+1]; | A(i)=A(i+1) |
кц | n:=n-1; | n--; | Next i |
n:=n-1 |
|
| n=n-1 |
Задание 10:
- Как правильно описать новые переменные? Вставьте алгоритм в основную программу. Добавьте вывод получившегося массива.
- Напишите алгоритм удаления всех нечетных элементов массива.
- Напишите алгоритм удаления наибольшего и наименьшего элемента массива.
- Напишите алгоритм удаления нулевых элементов массива.
- Напишите алгоритм удаления элементов массива, стоящих в порядке убывания.
- Напишите алгоритм удаления элементов массива, стоящих на четных номерах.
Форма для отправки ответа/решения
Комментариев нет:
Отправить комментарий