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
#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
#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
struct Task t;
t.id = ____; /* sıradaki kimlik */
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 |