Menu
Coddy logo textTech

Bir Map Oluşturma

Coddy'nin C++ Journey'sinin Mantık & Akış bölümünün bir parçası — ders 24 / 56.

Artık bir map'in ne olduğunu anladığınıza göre, nasıl oluşturulacağını ve ona anahtar-değer çiftlerinin nasıl ekleneceğini öğrenelim. Bir std::map bildirirken, açılı ayraçlar kullanarak hem anahtar türünü hem de değer türünü belirtmeniz gerekir.

Bir map oluşturmak için temel sözdizimi şöyledir:

std::map<KeyType, ValueType> mapName;

Örneğin, öğrenci isimlerini anahtar ve test puanlarını değer olarak saklayan bir map oluşturmak için:

std::map<std::string, int> studentScores;

Map'inize öğe eklemek için anahtar ile birlikte köşeli parantez gösterimini kullanabilir, ardından bir değer atayabilirsiniz:

studentScores["Alice"] = 95;
studentScores["Bob"] = 87;
studentScores["Carol"] = 92;

Bu, map içerisinde üç anahtar-değer çifti oluşturur. Her öğrencinin adı, ilgili puanlarını hızlıca almanızı sağlayan anahtar görevi görür.

Bir map içindeki tüm öğeler üzerinde döngü kurmak için auto ile birlikte aralık tabanlı bir for döngüsü (range-based for loop) kullanabilirsiniz. Bir std::map içindeki her öğe bir anahtar-değer çiftidir; anahtara .first, değere ise .second kullanarak erişebilirsiniz:

for (const auto& pair : studentScores) {
    std::cout << pair.first << ": " << pair.second << std::endl;
}

Burada, auto her bir öğenin (bir anahtar-değer çifti) türünü otomatik olarak çıkarır, pair.first size anahtarı (öğrencinin adı) verir ve pair.second size değeri (puan) verir. std::map yapısının öğelerini anahtara göre otomatik olarak sıralı tuttuğunu unutmayın, bu nedenle map üzerinde yineleme yapmak, girişleri alfabetik sırayla yazdıracaktır.

challenge icon

Görev

Kolay

Bir std::map kullanarak öğrenci not takip sistemi oluşturan bir program yazın. Programınız öğrenci isimlerini anahtar (key) ve test puanlarını değer (value) olarak saklayacaktır.

Aşağıdaki girdiler sağlanacaktır:

  • Öğrenci sayısını temsil eden bir tam sayı n
  • Ardından n çift girdi:
    • Öğrencinin adını temsil eden bir dize (string)
    • Öğrencinin puanını temsil eden bir tam sayı

Programınız şunları yapmalıdır:

  1. grades adında bir std::map<std::string, int> oluşturun
  2. Öğrenci sayısını okuyun
  3. Her öğrenci için adını ve puanını okuyun, ardından köşeli parantez notasyonunu kullanarak bunları haritaya (map) ekleyin
  4. Tüm öğrencileri ekledikten sonra, her öğrencinin bilgisini aşağıda gösterilen formatta yazdırın
  5. Haritada saklanan toplam öğrenci sayısını hesaplayın ve yazdırın

Aşağıdaki tam çıktı formatını kullanın:

Student Grades:\n[student1]: [score1]\n[student2]: [score2]\n[student3]: [score3]\n...\nTotal students: [number of students]

Öğrenciler, harita üzerinde döngü kurulduğunda göründükleri sırayla yazdırılmalıdır (haritalar anahtara göre otomatik olarak sıralandığı için bu alfabetik sıra olacaktır). Harita üzerinde gezinmek için aralık tabanlı (range-based) bir for döngüsü kullanın, her bir anahtar-değer çiftine erişin ve öğrenci adını ardından puanını yazdırın.

Kendin dene

#include <iostream>
#include <map>
#include <string>
using namespace std;

int main() {
    // Öğrenci sayısını oku
    int n;
    cin >> n;
    
    // Notları saklamak için map oluştur
    map<string, int> grades;
    
    // TODO: Kodunuzu buraya yazın
    // Her öğrencinin adını ve puanını oku, ardından map'e ekle
    
    
    // Sonuçları yazdır
    cout << "Student Grades:" << endl;
    // TODO: Her öğrencinin notunu yazdırmak için aralık tabanlı bir for döngüsü kullanın
    
    
    // Toplam öğrenci sayısını yazdır
    cout << "Total students: " << grades.size() << endl;
    
    return 0;
}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Mantık & Akış bölümündeki tüm dersler