Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

Learn Skill

الدرس 5 من 8 في دورة مشروع OOP - User Class على Coddy.

challenge icon

التحدي

سهل

في فئة المستخدم هذه، ستقوم أيضًا بحفظ المهارات التي تعلمها المستخدم ومستواه في كل مهارة (تمامًا كما في Coddy!).

أضف دالة باسم learn تستقبل مهارة (string) وتزيد مستوى المستخدم في هذه المهارة بمقدار واحد.

ستحتاج إلى نوع من هياكل البيانات لإدارة جميع المهارات ومستويات المستخدم (مصفوفة، قائمة، خريطة، إلخ...).

جرّب بنفسك

#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;
}

جميع دروس مشروع OOP - User Class