Menu
Coddy logo textTech

Learn Skill

Coddy'nin Kullanıcı Sınıfı - OOP Projesi kursunda ders 5 / 8.

challenge icon

Görev

Kolay

Bu kullanıcı sınıfında, kullanıcının öğrendiği becerileri ve her becerideki seviyesini de kaydedersiniz (tıpkı Coddy'de olduğu gibi!).

Bir beceri (bir dize) alan ve kullanıcının bu becerideki seviyesini bir artıran learn adında bir metot ekleyin.

Kullanıcının tüm becerilerini ve seviyelerini yönetmek için bir tür veri yapısına (dizi, liste, eşleme vb.) ihtiyacınız olacak.

Kendin dene

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "user.h"

int main() {
    User u;
    User_init(&u, "", "");
    char line[1024];
    while (fgets(line, sizeof(line), stdin)) {
        line[strcspn(line, "\r\n")] = '\0';
        char* cmd = strtok(line, " \t");
        if (!cmd) continue;
        if (strcmp(cmd, "new") == 0) {
            char* un = strtok(NULL, " \t");
            char* em = strtok(NULL, " \t");
            User_init(&u, un ? un : "", em ? em : "");
        }
        if (strcmp(cmd, "username") == 0) { printf("%s\n", u.username); }
        if (strcmp(cmd, "email") == 0) { printf("%s\n", u.email); }
        if (strcmp(cmd, "setLocation") == 0) { char* v = strtok(NULL, " \t"); if (v) User_setLocation(&u, v); }
        if (strcmp(cmd, "getLocation") == 0) { printf("%s\n", User_getLocation(&u)); }
        if (strcmp(cmd, "info") == 0) { User_info(&u); }
        if (strcmp(cmd, "learn") == 0) { char* v = strtok(NULL, " \t"); if (v) User_learn(&u, v); }
        if (strcmp(cmd, "dumpSkills") == 0) {
            int idx[USER_MAX_SKILLS]; int n = u.skillCount;
            for (int i = 0; i < n; i++) idx[i] = i;
            for (int i = 0; i < n - 1; i++) {
                for (int j = 0; j < n - 1 - i; j++) {
                    if (strcmp(u.skills[idx[j]].name, u.skills[idx[j+1]].name) > 0) {
                        int t = idx[j]; idx[j] = idx[j+1]; idx[j+1] = t;
                    }
                }
            }
            for (int i = 0; i < n; i++) {
                printf("%s: %d\n", u.skills[idx[i]].name, u.skills[idx[i]].level);
            }
        }
    }
    return 0;
}

Kullanıcı Sınıfı - OOP Projesi bölümündeki tüm dersler