Руденко Н.А., Семенова Н.В. Алгоритмы обработки одномерных массивов на языке С++

Материал из Letopisi.Ru — «Время вернуться домой»
(Различия между версиями)
Перейти к: навигация, поиск
(Обработка одномерных массивов на языке С++)
(Обработка одномерных массивов на языке С++)
 
(не показаны 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[n] = -10 + rand() % (15 - (-10)+1);
+
   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<<"Количество="<<p<<"\n";
+
  cout<<"Произведение="<<p<<"\n";
  for(i=0;i<n;i=i+3)
+
  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]]
  
[[Файл:Screenshot_5.jpg]]
 
[[Файл:Screenshot_6.jpg]]
 
[[Файл:Screenshot_7.jpg]]
 
 
|-----
 
|-----
 
|  
 
|  
Строка 76: Строка 103:
 
  if (Mas[i] > 0)  
 
  if (Mas[i] > 0)  
 
  p = p*Mas[i];  
 
  p = p*Mas[i];  
  cout « "произведение положительных чисел, стоящих а четных местах=" « p«endl;  
+
  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 « "количество элементов, равных нулю =" « k«endl;  
+
  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"«endl;
+
  cout « i « " элемент больше 10 " « endl;
 
| https://pp.vk.me/c630822/v630822784/22351/oGd7jtjrkGY.jpg
 
| https://pp.vk.me/c630822/v630822784/22351/oGd7jtjrkGY.jpg
 
|-----
 
|-----
 
| Найти максимальный элемент массива и его порядковый номер.
 
| Найти максимальный элемент массива и его порядковый номер.
 
Найти минимальный элемент и его порядковый номер среди положительных элементов.
 
Найти минимальный элемент и его порядковый номер среди положительных элементов.
| вставить программный код
+
|  
| [[Файл:нимок.PNG]]
+
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.JPG]]  
+
|[[Файл:БлокСхема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] << ' ';
|[[Файл:1нигга.JPG]]
+
|[[Файл:Блок-схема2Группы5.JPG]]
 
|-----
 
|-----
 
| Отсортировать первые 15 элементов массива по возрастанию методом пузырька  
 
| Отсортировать первые 15 элементов массива по возрастанию методом пузырька  
 
Отсортировать все элементы массива по убыванию методом поиска максимального/минимального элемента
 
Отсортировать все элементы массива по убыванию методом поиска максимального/минимального элемента
 
|  
 
|  
  int b=0;
+
  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=0;
+
   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;
}
+
}
  
| [[Файл:Неназывайте.JPG]]
+
| [[Файл:Blokovayshemamozno.JPG]]
 
|-----
 
|-----
 
| Найти среднее арифметическое элементов массива, расположенных между максимальным и минимальным элементами
 
| Найти среднее арифметическое элементов массива, расположенных между максимальным и минимальным элементами
 
Сжать массив, выбросив из него каждый второй элемент.
 
Сжать массив, выбросив из него каждый второй элемент.
 
|  
 
|  
float sum = 0;
+
    const int n = 10;
 +
    int Mas[n], tmax, tmin;
 +
    float sum = 0;
 
  // Поиск максимального
 
  // Поиск максимального
tmax = 0;
+
    tmax = 0;
for (int i = 1; i<n; i++)
+
    for (int i = 1; i<n; i++)
if (Mas[i]>Mas[tmax])
+
        if (Mas[i]>Mas[tmax])
tmax = i;
+
            tmax = i;
cout << "Максимальный элемент " << Mas[tmax] << " с номером " << tmax << endl;
+
    cout << "Максимальный элемент " << Mas[tmax] << " с номером " << tmax << endl;
  // Поиск минимального
+
  //Поиск минимального
tmin = 0;
+
    tmin = 0;
for (int i = 1; i<n; i++)
+
    for (int i = 1; i<n; i++)
    if (Mas[i]<Mas[tmin])
+
        if (Mas[i]<Mas[tmin])
      tmin = i;
+
            tmin = i;
cout << "Минимальный элемент " << Mas[tmin] << " с номером " << tmin << endl;
+
    cout << "Маинимальный элемент " << Mas[tmin] << " с номером " << tmin << endl;
  //Среднее арифметическое
+
  // Обмен значения, если минимальное больше максимального
if (tmin<tmax)
+
    if (tmin>tmax)
{
+
        swap(tmin,tmax);
    for (int i = tmin + 1; i<tmax; i++)
+
// Среднее значения
    {
+
    for (int i = tmin + 1; i<tmax; i++)
        sum = sum + Mas[i];
+
        sum = sum + Mas[i];
    }
+
    cout << "Сумма: " << sum << endl;
    cout << "Сумма: " << sum << endl;
+
    cout << "Среднее арифметическое: " << sum / (tmax - tmin - 1) << endl;
    cout << "Среднее арифметическое: " << sum / (tmax - tmin - 1) << endl;
+
}
+
else if (tmin>tmax)
+
{
+
    for (int i = tmax + 1; i<tmin; i++)
+
    {
+
        sum = sum + Mas[i];
+
    }
+
    cout << "Сумма: " << sum << endl;
+
    cout << "Среднее арифметическое: " << sum / (tmin - tmax - 1) << endl;
+
}  
+
 
  // убираем каждый второй элемент массива
 
  // убираем каждый второй элемент массива
for (int i = 1; i < size; ++i)
+
    for (int i = 1, j = i; i < n, j <n; ++i, j = j + 2)
    for (int j = i; j < size; ++j)
+
        mass[i] = mass[j + 1];
      Mas[j] = Mas[j + 1];
+
  // Вывод массива
  size--;
+
    cout << "Измененный массив " << "\n";
cout << "Измененный массив " << "\n";
+
    for (int i = 0; i <= 4; i++)
for (int i = 0; i <= 4; i++)
+
        cout << "mass[" << i << "] = " << mass[i] << "\n";
{
+
|  
    cout << "Mas[" << i << "] = " << Mas[i] << "\n";
+
http://upload.akusherstvo.ru/image986168.jpg
}
+
  http://upload.akusherstvo.ru/image986169.jpg
| http://upload.akusherstvo.ru/image986086.jpg
+
  http://upload.akusherstvo.ru/image986087.png
+
 
|+
 
|+
 
|}
 
|}

Текущая версия на 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";
Блок схема вывод массива.jpg
Найти сумму значений отрицательных элементов.

Каждый третий элемент увеличить на 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";

Сумма произведение элементов.jpg

Найти произведение положительных элементов, стоящих на четных местах. Найти количество элементов, равных нулю. Вывести номера элементов, значения которых больше 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;
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
Вычислить сумму четных элементов до первого нулевого элемента.
int i=0, S=0;
while(Mas[i]!=0 && i<n)
{if(Mas[i]%2==0)		
  S+=Mas[i];	
 i++;}
cout << "Сумма четных эл. до первого нулевого: " << S << endl;
БлокСхема1Группы5.JPG
Образовать новый массив, элементами которого будут элементы исходного, оканчивающиеся на цифру 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] << ' ';
Блок-схема2Группы5.JPG
Отсортировать первые 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;
}
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";
image986168.jpg
image986169.jpg
Персональные инструменты
Инструменты