3661

Алгоритми роботи з одномірними масивами

Лекция

Информатика, кибернетика и программирование

Алгоритми роботи з одномірними масивами. Масив задає спосіб організації даних. Масивом називають упорядковану сукупність елементів одного типу. Кожен елемент масиву має індекси, що визначають порядок елементів. Число індексів характеризує розмі...

Украинкский

2012-11-05

119 KB

47 чел.

Алгоритми роботи з одномірними масивами.

Масив задає спосіб організації даних. Масивом називають упорядковану сукупність елементів одного типу. Кожен елемент масиву має індекси, що визначають порядок елементів. Число індексів характеризує розмірність масиву. Кожен індекс змінюється в деякому діапазоні [a,b]. У мові C#, як й у багатьох інших мовах, індекси задаються цілочиcельним типом. Діапазон [a,b] називається граничною парою, a - нижньою границею, b - верхньою границею індексу. При оголошенні масиву границі задаються виразами.  Якщо всі границі задані константними виразами, то число елементів масиву відомо в момент його оголошення і йому може бути виділена пам'ять ще на етапі трансляції. Такі масиви називаються статичними. Якщо ж вирази, що задають границі, залежать від змінних, то такі масиви називаються динамічними, оскільки пам'ять їм може бути відведена тільки динамічно в процесі виконання програми, коли стають відомими значення відповідних змінних. Масиву, як правило, виділяється безперервна область пам'яті.

Масиви в мові C# є дійсними динамічними масивами. Як наслідок цього, нагадаю, масиви ставляться до посилальних типів, пам'ять їм приділяється динамічно в "купі". На жаль, не зняте обмеження 0-базування, хоча, на мій погляд, у такому обмеженні вже немає логіки через відсутність в C# адресної арифметики. Було б набагато зручніше в багатьох завданнях мати можливість працювати з масивами, у яких нижня границя не дорівнює нулю.

У мові C#, дотримуючи наступності, збережені одномірні масиви й масиви масивів. На додаток до них у мову додані багатомірні масиви. Динамічні багатомірні масиви мови C# є досить потужними, надійними, зрозумілими й зручними структурними даними, що сміло можна рекомендувати до застосування не тільки професіоналам, але й новачкам, що програмують на C#. Після цього короткого огляду давайте перейдемо до більше систематичного вивчення деталей роботи з масивами в C#.

Оголошення масивів

Розглянемо, як оголошуються одномірні масиви, масиви масивів і багатомірні масиви.

Оголошення одномірних масивів

Нагадаю загальну структуру оголошення:

[<атрибути>] [<модифікатори>] <тип> <об'явники>;

Забудемо поки про атрибути й модифікатори. Оголошення одномірного масиву виглядає в такий спосіб:

<тип>[] <об'явники>;

Що ж стосується границь зміни індексів, то ця характеристика до класу не ставиться, вона є характеристикою змінних - екземплярів, кожний з яких є одномірним масивом зі своїм числом елементів, що задають в об'явнику змінної.

Як у випадку оголошення простих змінних, кожен об'явник може бути ім'ям або ім'ям з ініціалізацією. У першому випадку мова йде про відкладену ініціалізацію. Потрібно розуміти, що при оголошенні з відкладеною ініціалізацією сам масив не формується, а створюється тільки посилання на масив, що має невизначене значення Null. Тому поки масив не буде реально створений і його елементи ініціалізовані, використати його в обчисленнях не можна. От приклад оголошення трьох масивів з відкладеною ініціалізацією:

int[] a, b, c;

Найчастіше при оголошенні масиву використовується ім'я з ініціалізацією. І знов-таки, як у випадку простих змінних, можуть бути два варіанти ініціалізації. У першому випадку ініціалізація є явною й задається константним масивом. От приклад:

double[] x= {5.5, 6.6, 7.7};

Дотримуючись синтаксису, елементи константного масиву варто брати у фігурні дужки.

У другому випадку створення й ініціалізація масиву виконується в об'єктному стилі з викликом конструктора масиву. І це найпоширеніша практика оголошення масивів. Приведу приклад:

int[] d= new int[5];

Отже, якщо масив оголошується без ініціалізації, то створюється тільки висяче посилання із значенням void. Якщо ініціалізація виконується конструктором, то в динамічній пам'яті створюється сам масив, елементи якого ініціалізуються константами відповідного типу (нуль для арифметики, порожній рядок для строкових масивів), і посилання зв'язується із цим масивом. Якщо масив ініціалізується константним масивом, то в пам'яті створюється константний масив, з яким і зв'язується посилання.

Як звичайно задаються елементи масиву, якщо вони не задані при ініціалізації? Вони або обчислюються, або вводяться користувачем.

Для доступу до елемента масиву вказується його ім'я й у квадратних дужках - індекс потрібного елемента. З елементом масиву можна працювати як зі звичайної змінної, тобто можна прочитати його значення або записати в нього нове значення. Приклади:

a[3] := 0;      елементу масиву a з індексом 3     привласнюється значення 0;

a[10] := a[10]*2;     елемент масиву a з індексом      10 подвоюється.

В якості індексів елементів масиву можуть виступати цілі константи та цілі змінні. Використання цілих змінних дає можливість працювати з елементами масиву використовуючи цикли.

Масив - це найважливіша конструкція алгоритмічної мови. Важливість масиву визначається тим, що пам'ять комп'ютера логічно являє собою масив (його можна розглядати як масив байтів або як масив чотирьохбайтових машинних слів). Індекс у цьому масиві звичайно називають адресою. Елементи масиву читаються й записуються винятково швидко, за одну дію, незалежно від розміру масиву й величини індексу. Більшість інших структур даних, використовуваних у програмуванні, моделюються на базі масиву.

Динамічні масиви

У всіх вищенаведених прикладах оголошувалися статичні масиви, оскільки нижня границя дорівнює нулю по визначенню, а верхня завжди задавалася в цих прикладах константою. Нагадаю, що в C# всі масиви, незалежно від того, яким вираженням описується границя, розглядаються як динамічні, і пам'ять для них розподіляється в "купі". Думаю, що це відбиття розумної точки зору: адже статичні масиви, скоріше виключення, а правилом є використання динамічних масивів. У дійсності реальні потреби в розмірі масиву, швидше за все, з'ясовуються в процесі роботи в діалозі з користувачем.

Часто синтаксично немає істотної різниці в оголошенні статичних і динамічних масивів. Вираження, що задає границю зміни індексів, у динамічному випадку містить змінні. Єдина вимога - значення змінних повинні бути визначені в момент оголошення. Це обмеження в C# виконується автоматично, оскільки добре відомо, як вимогливо C# контролює ініціалізацію змінних.

Розробка алгоритмів по роботі з одномірними масивами базується на класичних алгоритмах, обєднуючи які можна створити досить складні програми.

Серед класичних алгоритмів розглянемо наступні:

  •  алгоритм вводу масиву;
  •  алгоритм виводу масиву;
  •  алгоритм находження суми елементів;
  •  алгоритм находження суми при наявності умови;
  •  алгоритм пошуку мінімального та максимального елементу;
  •  алгоритм видалення заданого елемента масива;
  •  алгоритм вставки елементу в задане місце;
  •  алгоритм  формування нового масиву за даними критеріями;

В наступних лекція  ми розглянемо алгоритми пошуку в одномірних масивах і сортування масиву за зростанням і спаданням.

Алгоритм вводу масиву

Лістинг 11.1. Розглянемо алгоритм вводу масиву з клавіатури:

using System;

using System.Collections.Generic;

using System.Text;

namespace ConsoleApplication1

{

   class Program

   {

       static void Main(string[] args)

       {

          int[] a = new int[11];

           int i;

           for (i = 1; i <=10; i++)

           {

               a[i] = int.Parse(Console.ReadLine());

           }

}}}

Лістинг 11.2. Алгоритм заповнення  елементів масиву випадковими числами:

using System;

using System.Collections.Generic;

using System.Text;

namespace ConsoleApplication1

{

   class Program

   {

       static void Main(string[] args)

       {

          int[] a = new int[11];

           Random r = new Random();

           int i;

           for (i = 1; i <=10; i++)

           {

               a[i] = r.Next(100);

           }

}}}

Лістинг 11.3. Алгоритм заповнення  елементів масиву числами як результат розрахунку відповідних функцій:

using System;

using System.Collections.Generic;

using System.Text;

namespace ConsoleApplication1

{    class Program

   {   static void Main(string[] args)

       {

Double[] z = new Double[30];

           int i,k,i1;

           double a, b;

           Console.WriteLine("k=");

           k = int.Parse(Console.ReadLine());

           Console.WriteLine("№ = ");

           i1 = int.Parse(Console.ReadLine());

           for (i = 1; i <= i1+10; i++)

           {

               a = 0;

               for (int j = k; j <= k + 5; j++)

               {

                   a= a+ 9.2* Math.Exp(2*Math.Log(Math.Abs(Math.Cos(i)))- Math.Abs(Math.Sin(k)-1.1));

               }

               b = 1;

               for ( int j = k; j <= k + 3; j++)

               {

             b = b * 9.2 * Math.Exp(2 * Math.Log(Math.Abs(Math.Cos(i))) - Math.Abs(Math.Sin(k) - 1.1));

               }

               z[i] = a + b;

           }

           

       }

   }

Алгоритм виводу масива

for (i = 1; i <= 10; i++)

{

 Console.Write(a[i] + " ");

}

 Console.WriteLine;

Підсумовування двох масивів однакового розміру

Задано:  масиви   A =(a1,a2...,an),    B =(b1,b2...,bn).

Сформувати: масив   C =(c1,c2...,cn), де Сi = Ai+Bi; i=1,2...,n.

Завдання зводиться  до  організації циклу по її обчисленню Ci=Ai+Bi при кожному значенні  i  від 1  до n.

Початкові дані:

N- розмір масиву;  

A, B - масиви доданки розміром N;

Результат:   масив  С -  розміром N;

Допоміжні  змінні:  I - індекс - змінна циклу, що управляє.

В наступних програмах ми свідомо будемо упускати   відомі фрагменти , звертаючи увагу на основний  фрагмент виконання заданої дії .

          int[] a,b,c = new int[100];

           int i;

//  пропущено блок вводу масивів a,b.

           for (i = 1; i <=n; i++)

           {

               c[i] = a[i]+b[i];

           }

// пропущено блок вводу масиву с.

Знаходження суми  елементів масиву

Задано:  масив A = (A1,A2...,An) .

Визначити:  суму елементів масиву.

Початкові дані:  

N - розмір масиву;  

A - масив  розміром N;

Результат:   S - сума елементів;

Допоміжна змінна: I - індекс - змінна циклу, що управляє.

          int[] a = new int[n];

           int i; int sum=0;

//  пропущено блок вводу масивів a.

           for (i = 1; i <=n; i++)

           {

               sum = sum+ a[i];

           }

// пропущено блок вводу sum.

Визначення  кількості та суми елементів масиву, що задовольняють  заданій умові

Задано:  масив  A = (A1,A2...,An); T -  задане число.

Визначити: скільки елементів задовольняє заданій умові, наприклад     Pi > T .

Початкові дані:

N - розмір масиву;  

P - масив  розміром N;

T - задане значення, з яким порівнюються елементи масиву.

Результат:  K - число елементів масиву P, що задовольняють умові.

Допоміжна змінна:  I- індекс - змінна циклу, що управляє.

          int[] a = new int[11];

           int i; int sum=0; int p=0;

//  пропущено блок вводу масивів a.

           for (i = 1; i <=k; i++)

           {

               if (a[i]>T) { sum = sum+ a[i]; p++;}

           }

// пропущено блок вводу sum і р.

Інвертування масиву

Задано: масив A=(c1,c2...,cn).

Потрібний: змінити порядок проходження елементів масиву C на зворотний, використовуючи одну допоміжну змінну.

Початкові дані:

N - розмір масиву;

A - масив  розміром N;

Результат:

A - інвертований  масив;

Допоміжні змінні:

I -индекс, змінна циклу, що управляє;  

M=n/2 - обчислюється до входу в цикл для зменшення об'єму обчислень; P - використовується при перестановці двох елементів масиву.

          int[] a = new int[11];

           int i; int sum=0; int p=0;

//  пропущено блок вводу масивів a.

int k= n/2;

           for (i = 1; i <=k; i++)

           {

               p= a[ i ];  a[i]= a[n-i+1]; a[n-i+1]= p;  

           }

// пропущено блок вводу масиву а.

Формування масиву з елементів іншого масиву, що задовольняють  заданій умові

Задано: масив A=(a1,a2...,an), T - задане число.

Сформувати: масив B=(b1,b2...,bn), що складається з елементів масиву, що задовольняють умові Ai>T.

Відмітимо, т .к. індекси елементів масивів A і B не співпадають (не всі елементи масиву Ai>T), то для позначення індексів масиву B  повинна бути передбачена інша змінна.

Початкові дані:  

N - розмір масиву;

A - масив розміром N;  

T - задане значення;

Результат:      

B - масив розміром не більше N;

Y - число елементів масиву  B;

Допоміжна змінна: I - індекс - змінна циклу, що управляє.

          int[] a,b  = new int[11];

           int i; int y=0;

//  пропущено блок вводу масивів a.

 for (i = 1; i <=n; i++)

           {

              If (a[i]>t) {y++; b[y]=a[i]}  

           }

// пропущено блок вводу масиву b.

Пошук  максимального  (мінімального)  елементу в масиві із запам'ятовуванням  його  положення  в  масиві

Задано:  масив  A=(a1,a2...,an).

Знайти:  max (min)  елемент  масиву  A  і  його індекс.

Початкові дані:  

N - розмір масиву;

A - масив розміром  N;

Результат:

max  максимальний  елемент  масиву A;

i1 -  його індекс.

Допоміжна змінна: I - індекс змінна циклу, що управляє.

//  пропущено блок вводу масивів a.

           min = a[1]; i1 = 1;

           for (i = 2; i <= n; i++)

           {

               if (min > a[i])

               {

                   min = a[i]; i1 = i;

               }

           }

// пропущено блок вводу min i i1.

Примітка:  Якщо в масиві декілька max елементів (мають одне і те ж значення), то  в  K  запам'ятовуватиметься перший з них, а щоб запам'ятовувався індекс останнього потрібно замінити умову  на max<=A(I). Пошук мінімального елементу аналогічна процедура.

Видалення заданого  елементу  масиву

Задано:  масив A=(a1,a2...,an); N - розмір масиву;  m – позиція елементу, яку необхідно видалити .

Початкові дані:

N - розмір масиву;

A - масив розміром N;

 m – позиція елементу, яку необхідно видалити;

Результат:  A – масив у якого відсутній видалений елемент ;

Допоміжні  змінні:

I - індекс - змінна циклу, що управляє;

          int[] a  = new int[11];

           int i;

//  пропущено блок вводу масивів a.

            Int m  = int.Parse(Console.ReadLine());

 for (i = m; i <=n-1; i++)

           {

              a[i]=a[i+1];

           }

n=n-1;

// пропущено блок вводу масиву a.

Доповнення заданого  елементу  масиву

Задано:  масив A=(a1,a2...,an); N - розмір масиву;  m – позиція елементу який необхідно доповнити.   

Початкові дані:

N - розмір масиву;

A - масив розміром N;

m – позиція елементу який необхідно доповнити;

Результат:  A – масив;

Допоміжні  змінні:

I - індекс - змінна циклу, що управляє;

          int[] a  = new int[12];

           int i;

//  пропущено блок вводу масивів a.

            Int m  = int.Parse(Console.ReadLine());

//вивільнення елементу для вставки здвигом вправо.

 for (i = n; i >=m; i--)

           {

              a[i+1]=a[i];

           }

n=n+1;

            a[m]  = int.Parse(Console.ReadLine());

// пропущено блок вводу масиву a.

Приклад роботи з статичними масивами 

public void TestDeclaration()

{

  //оголошуються три одномірних масива A,B,C

  int[] A = new int[5], B= new int[5], C= new int[5];

  Arrs.CreateOneDimAr(A);

  Arrs.CreateOneDimAr(B);

  for(int i = 0; i<5; i++)

     C[i] = A[i] + B[i];

  //оголошення масиву з явною ініціалізацією

  int[] x ={5,5,6,6,7,7};

  //оголошення масивів з відкладеною ініціалізацією

  int[] u,v;

  u = new int[3];

  for(int i=0; i<3; i++) u[i] =i+1;

  //v= {1,2,3}; //присвоювання константного масиву

  //неприпустимо

  v = new int[4];

  v=u; //припустиме присвоювання

  int [,] w = new int[3,5];

  //v=w; //неприпустиме присвоювання: об'єкти різних класів

  Arrs.PrintAr1("A", A); Arrs.PrintAr1("B", B);

  Arrs.PrintAr1("C", C); Arrs.PrintAr1("X", x);

  Arrs.PrintAr1("U", u); Arrs.PrintAr1("V", v);

}

На що варто звернути увагу, аналізуючи цей текст:

  •  У процедурі показані різні способи оголошення масивів. Спочатку оголошуються одномірні масиви A, B й C, створювані конструктором. Значення елементів цих трьох масивів мають той самий тип int. Те, що вони мають однакове число елементів, відбулося з волі програміста, а не диктувалося вимогами мови. Помітьте, що після такого оголошення з ініціалізацією конструктором, всі елементи мають значення, у цьому випадку - нуль, і можуть брати участь в обчисленнях.
  •  Массив x оголошений з явною ініціалізацією. Число й значення його елементів визначається константним масивом.
  •  Масиви u й v оголошені з відкладеною ініціалізацією. У наступних операторах масив u ініціалізується в об'єктному стилі - елементи одержують його в циклі значення.
  •  Зверніть увагу на закоментованний оператор присвоювання. На відміну від ініціалізації, використати константний масив у правій частині оператора присвоювання неприпустимо. Ця спроба приводить до помилки, оскільки v - це посилання, який можна привласнити посилання, але не можна привласнити константний масив. Посилання привласнити можна. Що відбувається в операторі присвоювання v = u? Це коректне посилальне присвоювання: хоча u й v мають різне число елементів, але вони є об'єктами одного класу. У результаті присвоювання пам'ять, відведена масиву v, звільниться, нею займеться тепер збирач сміття. Обидві посилання u й v будуть тепер указувати на той самий масив, так що зміна елемента одного масиву негайно відіб'ється на іншому масиві.
  •  Далі визначається двовимірний масив w і робиться спроба виконати оператор присвоювання v=w. Це посилальне присвоювання некоректно, оскільки об'єкти w й v - різних класів і для них не виконується необхідне для присвоювання узгодження по типу.
  •  Для підтримки роботи з масивами створений спеціальний клас Array, статичні методи якого виконують різні операції над масивами. Зокрема, у прикладі використані два методи цього класу, один із яких заповнює масив випадковими числами, другий - виводить масив на печать. Ось текст першого із цих методів:

public static void CreateOneDimAr(int[] A)

{

  for(int i = 0; i<A.GetLength(0);i++)

     A[i] = rnd.Next(1,100);

}//CreateOneDimAr

Тут rnd - це статичне поле класу Array, оголошене в такий спосіб:

private  static Random rnd = new Random();

Процедура печатки масиву з ім'ям name виглядає так:

public static void PrintAr1(string name,int[] A)

{

  Console.WriteLine(name);

  for(int i = 0; i<A.GetLength(0);i++)

     Console.Write("\t" + name + "[{0}]={1}", i, A[i]);

  Console.WriteLine();

}//PrintAr1

На рис. 11.1 показаний консольний вивід результатів роботи процедури TestDeclarations.


Рис. 11.1.  Результати оголошення й створення масивів

Особливу увагу звернете на вивід, пов'язаний з масивами u й v.

Приклад  роботи з динамічним масивом

public void TestDynAr()

{

  //оголошення динамічного масиву A1

  Console.WriteLine("Уведіть число елементів масиву A1");

  int size = int.Parse(Console.ReadLine());

  int[] A1 = new int[size];

  Arrs.CreateOneDimAr(A1);

  Arrs.PrintAr1("A1",A1);

}//TestDynAr

В особливих коментарях ця процедура не має потреби. Тут верхня границя масиву визначається користувачем.

Обєднуючи стандартні блоки в готові алгоритми можна написати досить цікаві програми.

Задача11.1. Дано 10 цілих чисел, написати алгоритм находження мінімального числа.

 

using System;

using System.Collections.Generic;

using System.Text;

namespace ConsoleApplication1

{

   class Program

   {

       static void Main(string[] args)

       {

           // peremennie

          int[] a = new int[11];

           Random r = new Random();

           int i,min,i1;

           for (i = 1; i <=10; i++)

           {

               a[i] = int.Parse(Console.ReadLine());

           }

           min = a[1]; i1 = 1;

           for (i = 2; i <= 10; i++)

           {

               if (min > a[i])

               {

                   min = a[i]; i1 = i;

               }

           }

 

               Console.ReadLine();

       }

   }

}

Задача 11.2. Дано ціле число. Зробити число перевертень.

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace ConsoleApplication4

{

   class Program

   {

       static void Main(string[] args)

       {

           int[] a = new int[11];

           int n;

           n = int.Parse(Console.ReadLine());

           int i = 0;

           while (n>0 )

           {

               i++;

               a[i] = n % 10;

               n = n/10;

           }

           double s = 0;

           for (int j = 1; j <= i; j++)

           {

               s = s + a[j] * Math.Exp((i - j) * Math.Log(10));

           }

           n = (int)s;

           Console.WriteLine(n);

           Console.ReadLine();

       }

   }

}

Задача 11.3. Дано послідовність дійсних чисел, видалити мінімальне число.

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace ConsoleApplication5

{

   class Program

   {

       static void Main(string[] args)

       {

           int n = int.Parse(Console.ReadLine());

           int[] a = new int[n+1];

           Random r = new Random();

           int i, min, i1;

           for (i = 1; i <= n; i++)

           {

               a[i] = r.Next(100);

           }

           for (i = 1; i <= n ; i++)

           {

               Console.Write(a[i] + " ");

           }

           Console.WriteLine();

           min = a[1]; i1 = 1;

           for (i = 2; i <= n; i++)

           {

               if (min > a[i])

               {

                   min = a[i]; i1 = i;

               }

           }

           for (i = i1; i <= n - 1; i++)

           {

               a[i] = a[i + 1];

           }

           n = n - 1;

           for (i = 1; i <= n ; i++)

           {

               Console.Write(a[i]+ " ");

           }

           Console.WriteLine();

           Console.ReadLine();

       }

   }

}

Задача 11.4. Дано послідовність дійсних чисел, на місці останнього числа розмістити середнє арифметичне позитивних чисел.

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace ConsoleApplication5

{

   class Program

   {

       static void Main(string[] args)

       {

           int n = int.Parse(Console.ReadLine());

           double[] a = new double[n+1];

           Random r = new Random();

           int i, i1;

           double sum=0;

           for (i = 1; i <= n; i++)

           {

               a[i] = r.Next(100)-50;

           }

           for (i = 1; i <= n; i++)

           {

               Console.Write(a[i] + " ");

           }

           Console.WriteLine();

           i1 = 0;

           for (i = 1; i <= n; i++)

           {

               if (a[i]>0) {  sum = sum + a[i]; i1++;  }

           }

           sum = sum / i1;

           a[n] = sum;

           for (i = 1; i <= n; i++)

           {

               Console.Write(a[i]+ " ");

           }

           Console.WriteLine();

           Console.ReadLine();

       }

   }

}

Задача 11.5 .Дано послідовність дійсних чисел, знайти максимальну кількість  чисел, що повторюються.

Пояснення.

Ввести масив, створити масив чисел, з яких складається перший масив, створити масив з кількості повторів чисел, знайти максимальну кількість повторів, вивести число.

При розгляді цієї задачі наведу приклад формування масиву із чисел з яких складається введений масив без повторень.

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace ConsoleApplication5

{

   class Program

   {

       static void Main(string[] args)

       {

           int n = int.Parse(Console.ReadLine());

           

           double[] a = new double[n+1];

           double[] b = new double[n + 1];

           Random r = new Random();

           int i, i1;

           for (i = 1; i <= n; i++)

           {

               a[i] = r.Next(10)-5;

           }

           for (i = 1; i <= n; i++)

           {

               Console.Write(a[i] + " ");

           }

           Console.WriteLine();

           b[1] = a[1]; i1 = 1;

           for (i = 2; i <= n; i++)

           {

               int f = 0;

               for (int j = 1; j <= i1; j++)

                if (b[j] == a[i]) f = 1;

               if (f == 0) { i1++; b[i1] = a[i]; }

           }

           for (i = 1; i <= i1; i++)

           {

               Console.Write(b[i]+ " ");

           }

           Console.WriteLine();

           Console.ReadLine();

       }

   }

}

Задача 11.6. Дано одномірний масив розмірністю N, знайти суму цифр розташованих після останнього від'ємного .

Пояснення.

Ввід масиву, пошук останнього від'ємного, знаходження суми цифр після  нього.

Проаналізуйте наведені задачі, перевірте їх працездатність в середовищі програмування.  


 

А также другие работы, которые могут Вас заинтересовать

54121. ІНТЕЛЕКТУАЛЬНО – ТВОРЧА ГРА «ВАМ НАДІЙШОВ ЛИСТ…» 407 KB
  Маршак Пошта Інтелектуально – творча гра починається з ранку Ранок: після ранкової лінійки й зарядки оголошується завдання для загонів. І перше завдання для вас це вікторина на найкраще знання вірша Пошта Вікторина 1. Але ваші творчі завдання допоможуть стати справжніми поштарями або хоча б трішечки спробувати. Перше завдання Скласти розрізаного листа і прочитати Друге творче завдання Представити поштову марку для своєї посилки і захистити ескіз Третє творче завдання Образ поштаря та його творчий захист Заключне творче завдання...
54122. Сценарій позаурочного заходу для 5 класу «Різнобарвна книга життя і творчості Маршака» 88.5 KB
  Крім того запропоновані у сценарії твори Маршака дають змогу відпрацьовувати прийоми художнього читання віршів допомагають розвиткові естетичного чуття учнів. Сценарій позаурочного заходу для 5 класу Різнобарвна книга життя і творчості Маршака Мета: закріпити уявлення про багатогранність таланту Самуїла Яковича Маршака дати знання про основні віхи його біографії розвивати творче сприйняття художньої літератури естетичний смак прищеплювання навички вдумливого прочитання поезії і виразного виконання виховувати духовну культуру...
54123. Самомасаж та сучасні методи корекції, оздоровлення та загартування дітей дошкільного віку 38 KB
  Розвивати гнучкість спритність навички самомасажу а також слухову рухову зорову пам'ять мовленнєве дихання. А щоб з нами цього не трапилося ми будемо виконувати точковий масаж який допоможе стати вам здоровими. Почнемо масаж з носика: аВказівні пальчики поставили в ямочки які знаходяться під носиком і робимо кругові рухи.
54124. Машинобудування. Загальна характеристика. Важке та транспортне машинобудування 34.5 KB
  Мета: сформувати знання про значення місце машинобудування у господарстві держави його галузеву і територіальну структуру; пояснити чинники розміщення підприємств галузі; формувати навички роботи з економічними картами; виховувати економічну культуру та економічне мислення Очікувані результати: учень називає галузевий склад машинобудування; пояснює роль галузі в господарстві держави; характеризує галузі машинобудування та чинники їх розміщення; показує на карті великі центри окремих галузей...
54125. Масленица 402 KB
  Ход праздника Масленица - это проводы зимы встреча весны. 1 чтец К нам сюда скорее просим приходи честной народ Фейерверки зажигайте всех нас масленица ждёт 2 чтец Люди Велено до вас довести такой указ: Заготовленный самой нашей матушкой-зимой 1 чтец Каждый год сего числа как гласит указник Людям города села выходить на праздник Чтецы хором Спешите увидеть спешите смотреть спешите скорее на праздник успеть Колокольный звон Скоморох 1. Что встречает масленица Весну А что провожает Зиму Что является символом масленицы...
54126. Масляна. Сценарій виховного заходу 67 KB
  Святково одягнені в українські національні костюми діти збираються в рекреаційній залі школи. Починається дійство Діти стукають у двері Зими але ніхто не відповідає. Як же нам бути Чи підкоримось Зимі Чи не злякались ви її погроз Знаєте діти мені стало сумно від думки що я ніколи не побачу як пробуджується наша Матінка – Земля від довгого зимового сну як зеленітимуть її луки горбочки. А ви діти хочете щоб на землі завжди була зима Діти: Ні не хочемо Ведуча: То що ж нам робити Може будемо штурмом брати цю фортецю і...
54127. Активізація пізнавальної діяльності при викладанні дисципліни «Автомобільні перевезення» з використанням інтерактивних технологій навчання 242.5 KB
  Однією з умов запоруки успіху в підготовці конкурентоспроможних фахівців є застосування інтерактивних форм навчання з метою активізації пізнавальної діяльності студентів. У Донецькому індустріальному технікумі широко застосовуються інтерактивні навчальні технології які забезпечують інтенсифікацію...
54128. МОДЕЛЮВАННЯ СУЧАСНОГО ЕФЕКТИВНОГО УРОКУ УКРАЇНСЬКОЇ ЛІТЕРАТУРИ 190.5 KB
  У застосуванні методів навчання треба бути обережним інакше ефективний урок може перетворитися на ефектний. Павленко Питання моделювання ефективного уроку є надзвичайно актуальним для сучасних педагогів що працюють в умовах особистісно орієнтованого підходу запроваджують інноваційні технології.Опрацювати методи і прийоми що...
54129. Хто працює, той і має. Майстер-клас 351.5 KB
  Українська мова Корінь слова. Спільнокореневі слова. формувати в учнів уявлення про спільнокореневі слова корінь на основі споріднених слів; розвивати вміння виділяти споріднені слова виділяти спільну частину; збагачувати словниковий запас учнів; розвивати вміння спостерігати аналізувати зіставляти; виховувати акуратність уважність у роботі. Які виросли паростки діти називають Що спільного з словом лісце корінь тому вони і називаються спільнокореневі слова.