Руденко Н.А., Семенова Н.В. Алгоритмы обработки одномерных массивов на языке С++
(→Обработка одномерных массивов на языке С++) |
(→Обработка одномерных массивов на языке С++) |
||
(не показаны 48 промежуточных версий 10 участников) | |||
Строка 1: | Строка 1: | ||
+ | |||
+ | |||
+ | В имени файла надо указать, чья работа! | ||
+ | |||
+ | Файлы удалены - некорректное имя файла! | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | {{Шаблон:Править название}} | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ---- | ||
+ | |||
+ | |||
+ | ---- | ||
== Обработка одномерных массивов на языке С++ == | == Обработка одномерных массивов на языке С++ == | ||
Строка 28: | Строка 54: | ||
int const n = 20; | int const n = 20; | ||
int Mas[n],i; | int Mas[n],i; | ||
+ | //первая половина массива. | ||
for (i = 0; i < n/2; i++) | for (i = 0; i < n/2; i++) | ||
{ cout << " Введите " << i << "элемент массива"; | { cout << " Введите " << i << "элемент массива"; | ||
cin >> Mas[i]; } | cin >> Mas[i]; } | ||
+ | //вторая половина массива. | ||
for (i = n/2; i < n; i++) | for (i = n/2; i < n; i++) | ||
− | Mas[ | + | Mas[i] = -10 + rand() % (15 - (-10)+1); |
for(i=0;i<n;i++) | for(i=0;i<n;i++) | ||
cout<< Mas[i]<<"\n"; | cout<< Mas[i]<<"\n"; | ||
+ | // сумма всех элементов массива. | ||
int s = 0; | int s = 0; | ||
for (i = 0; i < n; i++) | for (i = 0; i < n; i++) | ||
s = s + Mas[i]; | s = s + Mas[i]; | ||
cout << "сумма=" << s<<"\n"; | cout << "сумма=" << s<<"\n"; | ||
− | | | + | |[[Файл:Блок_схема_вывод_массива.jpg]] |
|----- | |----- | ||
|Найти сумму значений отрицательных элементов. | |Найти сумму значений отрицательных элементов. | ||
Строка 56: | Строка 85: | ||
p=p*Mas[i]; | p=p*Mas[i]; | ||
} | } | ||
− | cout<<" | + | cout<<"Произведение="<<p<<"\n"; |
− | for(i= | + | for(i=2;i<n;i=i+3) |
Mas[i]=Mas[i]+5; | Mas[i]=Mas[i]+5; | ||
for(i=0;i<n;i++) | for(i=0;i<n;i++) | ||
cout<<"Mas["<<i<<"]="<<Mas[i]<<"\n"; | cout<<"Mas["<<i<<"]="<<Mas[i]<<"\n"; | ||
| | | | ||
+ | [[Файл:Сумма_произведение_элементов.jpg]] | ||
− | |||
− | |||
− | |||
|----- | |----- | ||
| | | | ||
Строка 76: | Строка 103: | ||
if (Mas[i] > 0) | if (Mas[i] > 0) | ||
p = p*Mas[i]; | p = p*Mas[i]; | ||
− | cout « "произведение положительных чисел, стоящих | + | cout « "произведение положительных чисел, стоящих на четных местах = "« p«endl; |
int k = 0; | int k = 0; | ||
for (i = 0; i <= n-1; i++) | for (i = 0; i <= n-1; i++) | ||
if (Mas[i] == 0) | if (Mas[i] == 0) | ||
k++; | k++; | ||
− | cout « "количество элементов, равных нулю =" « | + | cout « "количество элементов, равных нулю = " « k « endl; |
for (i = 0; i <= n-1; i++) | for (i = 0; i <= n-1; i++) | ||
if (Mas[i] > 10) | if (Mas[i] > 10) | ||
− | cout « i « " элемент больше 10" | + | cout « i « " элемент больше 10 " « endl; |
| https://pp.vk.me/c630822/v630822784/22351/oGd7jtjrkGY.jpg | | https://pp.vk.me/c630822/v630822784/22351/oGd7jtjrkGY.jpg | ||
|----- | |----- | ||
| Найти максимальный элемент массива и его порядковый номер. | | Найти максимальный элемент массива и его порядковый номер. | ||
Найти минимальный элемент и его порядковый номер среди положительных элементов. | Найти минимальный элемент и его порядковый номер среди положительных элементов. | ||
− | | | + | | |
− | | [[Файл: | + | Min=Mas[0]; |
+ | nMin=0; | ||
+ | Max=Mas[0]; | ||
+ | nMax=0; | ||
+ | for(int i=0; i<=n-1; i++) | ||
+ | if(Mas[i]>=Max) | ||
+ | { | ||
+ | Max=Mas[i]; | ||
+ | nMax=i; | ||
+ | } | ||
+ | for(int i=0; i<=n-1; i++) | ||
+ | if(Mas[i]>0) | ||
+ | if(Mas[i]<=Min) | ||
+ | { | ||
+ | Min=Mas[i]; | ||
+ | nMin=i; | ||
+ | } | ||
+ | cout<<" Минимальный элемент среди положительных = "<<Min; | ||
+ | cout<<".Его порядковый номер "<<nMin+1<<"\n"; | ||
+ | cout<<" Максимальный элемент = "<<Max<<".Его порядковый номер "<<nMax+1<<"\n"; | ||
+ | | [[Файл:Снимок.JPG]] | ||
|----- | |----- | ||
|Вычислить сумму четных элементов до первого нулевого элемента. | |Вычислить сумму четных элементов до первого нулевого элемента. | ||
Строка 100: | Строка 147: | ||
i++;} | i++;} | ||
cout << "Сумма четных эл. до первого нулевого: " << S << endl; | cout << "Сумма четных эл. до первого нулевого: " << S << endl; | ||
− | |[[Файл: | + | |[[Файл:БлокСхема1Группы5.JPG]] |
|----- | |----- | ||
|Образовать новый массив, элементами которого будут элементы исходного, оканчивающиеся на цифру 5. | |Образовать новый массив, элементами которого будут элементы исходного, оканчивающиеся на цифру 5. | ||
Строка 114: | Строка 161: | ||
for (i = 0; i < j; i++) | for (i = 0; i < j; i++) | ||
cout << Mas1[i] << ' '; | cout << Mas1[i] << ' '; | ||
− | |[[Файл: | + | |[[Файл:Блок-схема2Группы5.JPG]] |
|----- | |----- | ||
| Отсортировать первые 15 элементов массива по возрастанию методом пузырька | | Отсортировать первые 15 элементов массива по возрастанию методом пузырька | ||
Отсортировать все элементы массива по убыванию методом поиска максимального/минимального элемента | Отсортировать все элементы массива по убыванию методом поиска максимального/минимального элемента | ||
| | | | ||
− | int b | + | int b; |
for (i=1;i<=n-1;i++) | for (i=1;i<=n-1;i++) | ||
for (j=0;j<=n-1;j++) | for (j=0;j<=n-1;j++) | ||
Строка 129: | Строка 176: | ||
− | int b | + | int b; |
for (i=0;i<=n-1;i++) | for (i=0;i<=n-1;i++) | ||
{min=Mas[i]; | {min=Mas[i]; | ||
nmin=i; | nmin=i; | ||
− | for(j=i+1;j<=n-;j++;) | + | for(j=i+1;j<=n-1;j++;) |
if(Mas[j]>min) | if(Mas[j]>min) | ||
{min=Mas[j]; | {min=Mas[j]; | ||
Строка 140: | Строка 187: | ||
Mas[i]=Mas[nmin]; | Mas[i]=Mas[nmin]; | ||
Mas[nmin]=b; | Mas[nmin]=b; | ||
− | } | + | } |
− | | [[Файл: | + | | [[Файл:Blokovayshemamozno.JPG]] |
|----- | |----- | ||
| Найти среднее арифметическое элементов массива, расположенных между максимальным и минимальным элементами | | Найти среднее арифметическое элементов массива, расположенных между максимальным и минимальным элементами | ||
Сжать массив, выбросив из него каждый второй элемент. | Сжать массив, выбросив из него каждый второй элемент. | ||
| | | | ||
− | + | const int n = 10; | |
+ | int Mas[n], tmax, tmin; | ||
+ | float sum = 0; | ||
// Поиск максимального | // Поиск максимального | ||
− | + | tmax = 0; | |
− | + | for (int i = 1; i<n; i++) | |
− | + | if (Mas[i]>Mas[tmax]) | |
− | + | tmax = i; | |
− | + | cout << "Максимальный элемент " << Mas[tmax] << " с номером " << tmax << endl; | |
− | // Поиск минимального | + | //Поиск минимального |
− | + | tmin = 0; | |
− | + | for (int i = 1; i<n; i++) | |
− | + | if (Mas[i]<Mas[tmin]) | |
− | + | tmin = i; | |
− | + | cout << "Маинимальный элемент " << Mas[tmin] << " с номером " << tmin << endl; | |
− | // | + | // Обмен значения, если минимальное больше максимального |
− | + | if (tmin>tmax) | |
− | + | swap(tmin,tmax); | |
− | + | // Среднее значения | |
− | + | for (int i = tmin + 1; i<tmax; i++) | |
− | + | sum = sum + Mas[i]; | |
− | + | cout << "Сумма: " << sum << endl; | |
− | + | cout << "Среднее арифметическое: " << sum / (tmax - tmin - 1) << endl; | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
// убираем каждый второй элемент массива | // убираем каждый второй элемент массива | ||
− | + | for (int i = 1, j = i; i < n, j <n; ++i, j = j + 2) | |
− | + | mass[i] = mass[j + 1]; | |
− | + | // Вывод массива | |
− | + | cout << "Измененный массив " << "\n"; | |
− | + | for (int i = 0; i <= 4; i++) | |
− | + | cout << "mass[" << i << "] = " << mass[i] << "\n"; | |
− | + | | | |
− | + | http://upload.akusherstvo.ru/image986168.jpg | |
− | + | http://upload.akusherstvo.ru/image986169.jpg | |
− | | http://upload.akusherstvo.ru/ | + | |
− | http://upload.akusherstvo.ru/ | + | |
|+ | |+ | ||
|} | |} |
Текущая версия на 09:33, 7 апреля 2016
В имени файла надо указать, чья работа!
Файлы удалены - некорректное имя файла!
Статью необходимо переименовать- см. Имя статьи |
[править] Обработка одномерных массивов на языке С++
Условие задачи | Программный код | Блок-схема |
---|---|---|
Задан массив Mas размерности n.
Первая половина массива заполнена с клавиатуры, вторая - случайными числами из диапазона [-10,15]. Вывести элементы массива в строчку. Найти сумму всех элементов массива. |
#include <iostream> #include <conio.h> #include <locale.h> #include <stdlib.h> #include<ctime> #include<math.h> using namespace std; int main() {setlocale(LC_ALL, "Russian"); int const n = 20; int Mas[n],i; //первая половина массива. for (i = 0; i < n/2; i++) { cout << " Введите " << i << "элемент массива"; cin >> Mas[i]; } //вторая половина массива. for (i = n/2; i < n; i++) Mas[i] = -10 + rand() % (15 - (-10)+1); for(i=0;i<n;i++) cout<< Mas[i]<<"\n"; // сумма всех элементов массива. int s = 0; for (i = 0; i < n; i++) s = s + Mas[i]; cout << "сумма=" << s<<"\n"; |
|
Найти сумму значений отрицательных элементов.
Каждый третий элемент увеличить на 5. |
int S=0; int p=1; for(i=0;i<n;i++) if(Mas[i]<0) S=S+Mas[i]; cout<<"Сумма="<<S<<"\n"; for(i=0;i<n;i++) if(Mas[i]%2==0) { p=p*Mas[i]; } cout<<"Произведение="<<p<<"\n"; for(i=2;i<n;i=i+3) Mas[i]=Mas[i]+5; for(i=0;i<n;i++) cout<<"Mas["<<i<<"]="<<Mas[i]<<"\n"; |
|
Найти произведение положительных элементов, стоящих на четных местах. Найти количество элементов, равных нулю. Вывести номера элементов, значения которых больше 10. |
int p = 1,i; for (i = 0; i <= n-1; i=i+2) if (Mas[i] > 0) p = p*Mas[i]; cout « "произведение положительных чисел, стоящих на четных местах = "« p«endl; int k = 0; for (i = 0; i <= n-1; i++) if (Mas[i] == 0) k++; cout « "количество элементов, равных нулю = " « k « endl; for (i = 0; i <= n-1; i++) if (Mas[i] > 10) cout « i « " элемент больше 10 " « endl; |
|
Найти максимальный элемент массива и его порядковый номер.
Найти минимальный элемент и его порядковый номер среди положительных элементов. |
Min=Mas[0]; nMin=0; Max=Mas[0]; nMax=0; for(int i=0; i<=n-1; i++) if(Mas[i]>=Max) { Max=Mas[i]; nMax=i; } for(int i=0; i<=n-1; i++) if(Mas[i]>0) if(Mas[i]<=Min) { Min=Mas[i]; nMin=i; } cout<<" Минимальный элемент среди положительных = "<<Min; cout<<".Его порядковый номер "<<nMin+1<<"\n"; cout<<" Максимальный элемент = "<<Max<<".Его порядковый номер "<<nMax+1<<"\n"; |
Файл:Снимок.JPG |
Вычислить сумму четных элементов до первого нулевого элемента. |
int i=0, S=0; while(Mas[i]!=0 && i<n) {if(Mas[i]%2==0) S+=Mas[i]; i++;} cout << "Сумма четных эл. до первого нулевого: " << S << endl; |
|
Образовать новый массив, элементами которого будут элементы исходного, оканчивающиеся на цифру 5. |
int Mas1[n]; int j = 0, i; for(i = 0; i < n; i++) if (Mas[i]%10==5 || Mas[i]%10==-5) {Mas1[j]=Mas[i]; j++;} cout << "\nНовый массив:\n"; i=0; for (i = 0; i < j; i++) cout << Mas1[i] << ' '; |
|
Отсортировать первые 15 элементов массива по возрастанию методом пузырька
Отсортировать все элементы массива по убыванию методом поиска максимального/минимального элемента |
int b; for (i=1;i<=n-1;i++) for (j=0;j<=n-1;j++) if (Mas[j]>Mas[j+1]) { Mas[j]=b; Mas[j]=Mas[j+1]; Mas[j+1]=b;}
int b; for (i=0;i<=n-1;i++) {min=Mas[i]; nmin=i; for(j=i+1;j<=n-1;j++;) if(Mas[j]>min) {min=Mas[j]; nmin=j;} b=Mas[i]; Mas[i]=Mas[nmin]; Mas[nmin]=b; } |
|
Найти среднее арифметическое элементов массива, расположенных между максимальным и минимальным элементами
Сжать массив, выбросив из него каждый второй элемент. |
const int n = 10; int Mas[n], tmax, tmin; float sum = 0; // Поиск максимального tmax = 0; for (int i = 1; i<n; i++) if (Mas[i]>Mas[tmax]) tmax = i; cout << "Максимальный элемент " << Mas[tmax] << " с номером " << tmax << endl; //Поиск минимального tmin = 0; for (int i = 1; i<n; i++) if (Mas[i]<Mas[tmin]) tmin = i; cout << "Маинимальный элемент " << Mas[tmin] << " с номером " << tmin << endl; // Обмен значения, если минимальное больше максимального if (tmin>tmax) swap(tmin,tmax); // Среднее значения for (int i = tmin + 1; i<tmax; i++) sum = sum + Mas[i]; cout << "Сумма: " << sum << endl; cout << "Среднее арифметическое: " << sum / (tmax - tmin - 1) << endl; // убираем каждый второй элемент массива for (int i = 1, j = i; i < n, j <n; ++i, j = j + 2) mass[i] = mass[j + 1]; // Вывод массива cout << "Измененный массив " << "\n"; for (int i = 0; i <= 4; i++) cout << "mass[" << i << "] = " << mass[i] << "\n"; |
|