Menu
Coddy logo textTech

מעבר על איברי מפה

חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-Kotlin של Coddy. שיעור 6 מתוך 63.

לולאת for יכולה לפרק כל רשומה במפה למפתח ולערך שלה באמצעות for ((key, value) in map). השתמשו בערך לסיכומים ובמפתח לזיהוי. אל תניחו שלכל מימוש של מפה יש סדר איטרציה ממוין.

בתוך main:

val stock = mapOf("a" to 3, "b" to 5)
var total = 0
for ((name, count) in stock) {
    total += count
}
println(total)

שתי הכמויות תורמות שלוש וחמש.

פירוק של רשומה מספק תחילה את המפתח שלה ולאחר מכן את הערך שלה.

challenge icon

אתגר

בינוני

השלם את stockTotal עם הפרמטרים stock: Map<String, Int>. השתמש באיטרציה על הרשומות כדי להחזיר את סכום כל הכמויות. סכום של מפה ריקה הוא אפס.

אלא אם צוין לעיל טווח מחמיר יותר, אוספים מכילים לכל היותר 100 איברים בכל רמה, וארגומנטים של מספרים שלמים וערכים של מספרים שלמים באוספים הם בין -1000 ל-1000. הטקסט שסופק לניתוח עשוי לכלול ייצוגים לא תקינים או מחוץ לטווח, כפי שתואר.

החזר ערך מטיפוס Int. השאר את קוד הקלט/פלט שסופק. הוא קורא ארגומנטים סקלריים, אחד בכל שורה; רשימה מתחילה במספר האיברים שלה ואחריו האיברים, ומפה מתחילה במספר הרשומות שלה ואחריו כל מפתח וערך. רשימות מקוננות חוזרות על תבנית המספר והאיברים עבור כל שורה. ה-main שסופק מדפיס את ערך ההחזרה ואחריו תו שורה חדשה אחד. רשימות משתמשות בתבנית הסוגריים המרובעים הסטנדרטית של Kotlin; אל תדפיס תוויות נוספות.

נסו בעצמכם

fun stockTotal(stock: Map<String, Int>): Int {
    // כתבו כאן את הפתרון שלכם.
    return 0
}
fun main() {
    val stockCount = readln().toInt()
    val stock = mutableMapOf<String, Int>()
    for (i0 in 0 until stockCount) {
        val stockKey = readln()
        val stockValue = readln().toInt()
        stock[stockKey] = stockValue
    }
    println(stockTotal(stock))
}
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה לוגיקה וזרימת תוכנית

תרגלו בעצמכם: Kotlin אונליין