понедельник, 25 декабря 2017 г.

Swift 7. Collection Types - Arrays

В этом уроке рассматриваем использование  массивов в Swift.

Домашнее задание к уроку:

/*
 1. создать массив "дни в месяцах"
 12 элементов содержащих количество дней в соответствующем месяце

 используя цикл for и этот массив

 - выведите количество дней в каждом месяце (без имен месяцев)
 - используйте еще один массив с именами месяцев чтобы вывести название месяца + количество дней
 - сделайте тоже самое, но используя массив тюплов с параметрами (имя месяца, кол-во дней)
 - сделайте тоже самое, только выводите дни в обратном порядке (порядок в массиве не меняется)

 - для произвольно выбранной даты (месяц и день) посчитайте количество дней до этой даты от начала года

 2. Сделайте первое задание к уроку номер 4 используя массивы:

 (создайте массив опшинал интов и посчитайте сумму)

 - в одном случае используйте optional binding
 - в другом forced unwrapping
 - а в третьем оператор ??

 3. создайте строку алфавит и пустой массив строк

 в цикле пройдитесь по всем символам строки попорядку, преобразовывайте каждый в строку и добавляйте в массив, причем так, чтобы на выходе получился массив с алфавитом задом-наперед
 */

/*
 1
 */

let quantityDaysInMonthsArray = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]

// 1.1

print("\n1.1")
print("Month number with quantity days:\n")

for (index, quantity) in quantityDaysInMonthsArray.enumerated() {
    print("Month: \(index + 1), Days: \(quantity)")
}

let monthsNamesArray = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November","December"]

// 1.2

print("\n1.2")
print("Month Names with quantity days:\n")

for (index, quantity) in quantityDaysInMonthsArray.enumerated() {
    print("Month: \(monthsNamesArray[index]), Days: \(quantity)")
}

// 1.3

print("\n1.3")
print("Month Names with quantity days (tuples array):\n")

var tuplesArray = [(month: String, days: Int)]();

for (index, quantity) in quantityDaysInMonthsArray.enumerated() {
    tuplesArray.append((monthsNamesArray[index], quantity))
}
for tuple in tuplesArray {
    print(tuple)
}

// 1.4

print("\n1.4")
print("Month Names with quantity days (tuples array) - Reversed:\n")

for tuple in tuplesArray.reversed() {
    print(tuple)
}

// 1.5

let (month, day) = (4, 28)

let monthIndex = month - 1
var sumDays = day
for quantity in quantityDaysInMonthsArray[0..<monthIndex] {
    sumDays += quantity
}
print("\n1.5")
print("days have passed from the \(day) \(monthsNamesArray[month - 1]): \(sumDays)\n")

/*
 2
 */

let stringArray = ["4", "2a", "1", "3sd2","5", "3"];
var optionalIntArray = [Int?]();
for str in stringArray {
    optionalIntArray.append(Int(str))
}

// 2.1

var sum = 0
for optionalInt in optionalIntArray {
    if let intValue = optionalInt {
        sum += intValue
    }
}
print("\n2.1")
print("Optional Binding sum:",sum)

// 2.2

sum = 0
for optionalInt in optionalIntArray {
    if optionalInt != nil {
        sum += optionalInt!
    }
}
print("\n2.2")
print("forced unwrapping sum:",sum)

// 2.3

sum = 0
for optionalInt in optionalIntArray {
        sum += optionalInt ?? 0
}
print("\n2.3")
print("Default value (??) sum:",sum)

/*
 3
*/

let alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
var reversedAlphabetArray = [String]()
for index in alphabet.indices.reversed() {
    let stringWithChar = String(alphabet[index])
    reversedAlphabetArray += [stringWithChar];
}
print("\n3")

print("Strings reversed alphabet:",reversedAlphabetArray)


Вывод в Консоль:


1.1
Month number with quantity days:

Month: 1, Days: 31
Month: 2, Days: 28
Month: 3, Days: 31
Month: 4, Days: 30
Month: 5, Days: 31
Month: 6, Days: 30
Month: 7, Days: 31
Month: 8, Days: 31
Month: 9, Days: 30
Month: 10, Days: 31
Month: 11, Days: 30
Month: 12, Days: 31

1.2
Month Names with quantity days:

Month: January, Days: 31
Month: February, Days: 28
Month: March, Days: 31
Month: April, Days: 30
Month: May, Days: 31
Month: June, Days: 30
Month: July, Days: 31
Month: August, Days: 31
Month: September, Days: 30
Month: October, Days: 31
Month: November, Days: 30
Month: December, Days: 31

1.3
Month Names with quantity days (tuples array):

(month: "January", days: 31)
(month: "February", days: 28)
(month: "March", days: 31)
(month: "April", days: 30)
(month: "May", days: 31)
(month: "June", days: 30)
(month: "July", days: 31)
(month: "August", days: 31)
(month: "September", days: 30)
(month: "October", days: 31)
(month: "November", days: 30)
(month: "December", days: 31)

1.4
Month Names with quantity days (tuples array) - Reversed:

(month: "December", days: 31)
(month: "November", days: 30)
(month: "October", days: 31)
(month: "September", days: 30)
(month: "August", days: 31)
(month: "July", days: 31)
(month: "June", days: 30)
(month: "May", days: 31)
(month: "April", days: 30)
(month: "March", days: 31)
(month: "February", days: 28)
(month: "January", days: 31)

1.5
days have passed from the 28 April: 118


2.1
Optional Binding sum: 13

2.2
forced unwrapping sum: 13

2.3
Default value (??) sum: 13

3

Strings reversed alphabet: ["Z", "Y", "X", "W", "V", "U", "T", "S", "R", "Q", "P", "O", "N", "M", "L", "K", "J", "I", "H", "G", "F", "E", "D", "C", "B", "A"]

Комментариев нет:

Отправить комментарий