CodeBlanks Logo Icon CodeBlanks

Görev ekleme

  • C kursu
  • Başlangıç
  • Ders 84/116
  • 6 dk

AddTask fonksiyonuyla listeye görev eklemeyi öğrenirsin.

add_task fonksiyonu

Bir görevi diziye eklemek için add_task fonksiyonu yazıyoruz. Fonksiyon, yeni görevi tasks[count] indisine koyar ve count + 1 döndürür.

int add_task(struct Task tasks[], int count, const char *title) {
    tasks[count].id = count + 1;
    strcpy(tasks[count].title, title);
    tasks[count].done = 0;
    return count + 1;
}

strcpy başlığı diziye kopyalar; done = 0 görevi başlangıçta bekliyor yapar. Dönen değer yeni count'tür.

count sayacı

count değişkeni dizide kaç görev olduğunu tutar. Her add_task çağrısında yeni değer count + 1'dir. Bu sayede bir sonraki ekleme doğru yere yapılır.

int count = 0;
count = add_task(tasks, count, "Alışveriş");  /* count = 1 */
count = add_task(tasks, count, "Spor");        /* count = 2 */

Her eklemede count bir artar. Bu kalıp, sabit boyutlu dizilerde dinamik büyümeyi taklit eder.

Uygulama add_task fonksiyonunu ekle

Aşağıdaki kodun üstüne int add_task(struct Task tasks[], int count, const char *title) fonksiyonunu ekle. İçinde tasks[count].id = count + 1;, strcpy(tasks[count].title, title); ve tasks[count].done = 0; yaz, return count + 1; döndür. main içinde struct Task tasks[10]; int count = 0; tanımla, iki görev ekle ve her ikisini de yazdır. Çıktı 1 Alışveriş 0 ve 2 Spor 0 olmalı.

Başlangıç kodu

main.c
#include <stdio.h>
#include <string.h>

struct Task {
    int id;
    char title[50];
    int done;
};

int main(void) {
    struct Task t = {1, "Alışveriş", 0};
    printf("%d %s %d\n", t.id, t.title, t.done);
    return 0;
}

Örnek çözüm

main.c
#include <stdio.h>
#include <string.h>

struct Task {
    int id;
    char title[50];
    int done;
};

int add_task(struct Task tasks[], int count, const char *title) {
    tasks[count].id = count + 1;
    strcpy(tasks[count].title, title);
    tasks[count].done = 0;
    return count + 1;
}

int main(void) {
    struct Task tasks[10];
    int count = 0;
    count = add_task(tasks, count, "Alışveriş");
    count = add_task(tasks, count, "Spor");
    printf("%d %s %d\n", tasks[0].id, tasks[0].title, tasks[0].done);
    printf("%d %s %d\n", tasks[1].id, tasks[1].title, tasks[1].done);
    return 0;
}

Beklenen çıktı

1 Alışveriş 0
2 Spor 0

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Sıradaki kimlik

Soru
struct Task t;
t.id = ____;  /* sıradaki kimlik */
Cevap
struct Task t;
t.id = count + 1;  /* sıradaki kimlik */

Açıklama: Her yeni görevin kimliği count + 1 olur.

2 Bir diziye yeni görev eklerken ne yapmalıyız?

  • Yeni struct'ı dizide count indisine koymalı ve count'u artırmalı Doğru cevap
  • Sadece count artırmalı
  • Diziyi yeniden tanımlamalı
  • Hiçbir şey

Açıklama: Yeni görev tasks[count]'a konur ve count bir artırılır.

3 Ekleme kavramlarını eşleştir

Kavram Anlamı
add_task görev ekleme fonksiyonu
tasks[count] yeni görev yeri
count + 1 yeni sayım
strcpy dize kopyalama

Başlangıç bölümündeki tüm dersler