вівторок, 22 жовтня 2013 р.

Домашнє завданя #1

#1
Реалізуйте алгоритм злиття масивів MergeArrays(int[] array1, int[] array2), який об’єднає два посортовані вхідні масиви в один, аналогічно, посортований, за допомогою одного обходу вхідних масивів.

В завдані можна використовувати тільки стандартні можливості мови, такі як масиви, цикли, умови.


Основна мета завдання - власний алгоритм розв'язку, тому забороняється використовувати всі можливості .Net такі як Linq і т.д.


int[] array1 = new[] { 1, 3, 5, 7 };
int[] array2 = new[] { 1, 2, 3, 5, 6, 8 };
int[] result = MergeArrays(array1, array2);
result = {1, 1, 2, 3, 3, 5, 5, 6, 7, 8}

декілька додаткових наборів вхідних даних:
int[] array1 = new[] { 1, 5 };
int[] array2 = new[] { 1, 5 };
 
int[] array1 = new[] { 1, 5, 6, 7, 8, 9, 10, 12, 13 };
int[] array2 = new[] { 1, 5, 6, 7, 8, 9, 11, 12, 13 };
 
int[] array1 = new[] { 1, 7, 8, 9, 10, 12, 13 };
int[] array2 = new[] { 1, 5, 6 };

#2
Реалізувати алгоритм визначення змін стану масива. На вхід методу подається 2 стрічкових масиви. 1 - основний, 2 - це змінений перший масив (деякі елементи в ньому додались, деякі видалились, інші залишились без змін). Метод повинен розпізнати і повернути 3 масиви як out параметри: 
- масив доданих елементів
- масив видалених елементів
- масив не змінених елементів.


string[] arr1 = new[] {"one""two""three"};
string[] arr2 = new[] {"one""three""cat""dog" };
 
string[] addedElements;
string[] removedElements;
string[] notChangedElements;
 
AnalyzeChanges(
    arr1,
    arr2,
    out addedElements,
    out removedElements,
    out notChangedElements);
 
addedElements = {"cat""dog"}
removedElements = {"two"}
notChangedElements = {"one""three"}

Готові роботи відсилайте на: eleksdev.courses@gmail.com 

13 коментарів:

  1. чи можна використовувати властивості типу array1.Length?

    ВідповістиВидалити
  2. в 2му завданні у вхідних масивах можуть бути однакові значення? Чи приймати за дефолт, що всі елементи різні?

    ВідповістиВидалити
    Відповіді
    1. можуть бути однакові, значення першого масиву треба брати за основу.

      Видалити
    2. я мав на увазі "однакові в 1 з масивів", тобто, напр. string[] arr1 = new[] {"one", "two", "three", "one"};

      Видалити
    3. {"one", "two", "three", "one"}; такого не може бути.

      Видалити
  3. Там в другому є ще один "прикол". По логіці тих стрінгів, що дані в прикладі, нові елементи завжди додаються у кінець списку.

    ВідповістиВидалити
  4. Тобто нові елементи можуть додаватись в будь-якому місці списку? Елементи унікальні чи можуть повторюватись багато разів?

    ВідповістиВидалити
  5. Так, нові елементи можуть додаватись в будь-якому місці списку + Елементи унікальні

    ВідповістиВидалити
  6. Маємо умову:
    if (firstCondition || secondCondition)
    {...}
    Якщо firstCondition повертає true, то secondCondition не перевіряється?

    ВідповістиВидалити