Görev tamamlama
- C kursu
- Başlangıç
- Ders 86/116
- 6 dk
CompleteTask ile görev durumunu güncellemeyi öğrenirsin.
complete_task fonksiyonu
Bir görevi tamamlandı işaretlemek için complete_task fonksiyonu yazıyoruz. Görevin done alanını 1 yapar.
void complete_task(struct Task tasks[], int id) {
tasks[id - 1].done = 1;
}id - 1 kullanırız çünkü kimlikler 1'den başlar ama dizi indisleri 0'dan. Bu yüzden 1 tabanlı kimliği 0 tabanlı indise çeviririz.
1 tabanlı kimlik, 0 tabanlı indis
Görev kimlikleri 1'den başlar (ilk görevün kimliği 1). Ama C dizileri 0'dan başlar. Bu yüzden tasks[id - 1] yazarak 1 tabanlı kimliği 0 tabanlı indise çeviririz.
complete_task(tasks, 1); /* tasks[0].done = 1 */
complete_task(tasks, 2); /* tasks[1].done = 1 */Bu ayrım kullanıcı dostu kimliklerle dizi erişimini uzlaştırır. Kullanıcı 1 girer, program 0 tabanlı kullanır.
Uygulama complete_task fonksiyonunu ekle
Aşağıdaki koda void complete_task(struct Task tasks[], int id) fonksiyonunu ekle. İçinde tasks[id - 1].done = 1; yaz. main içinde list_tasks çağrısından önce complete_task(tasks, 1); çağrısı ekle (ilk görevi tamamlandı yap). Çıktı 1 Alışveriş 1 ve 2 Spor 0 olmalı.
Başlangıç kodu
#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;
}
void list_tasks(struct Task tasks[], int count) {
for (int i = 0; i < count; i++) {
printf("%d %s %d\n", tasks[i].id, tasks[i].title, tasks[i].done);
}
}
int main(void) {
struct Task tasks[10];
int count = 0;
count = add_task(tasks, count, "Alışveriş");
count = add_task(tasks, count, "Spor");
list_tasks(tasks, count);
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;
}
void list_tasks(struct Task tasks[], int count) {
for (int i = 0; i < count; i++) {
printf("%d %s %d\n", tasks[i].id, tasks[i].title, tasks[i].done);
}
}
void complete_task(struct Task tasks[], int id) {
tasks[id - 1].done = 1;
}
int main(void) {
struct Task tasks[10];
int count = 0;
count = add_task(tasks, count, "Alışveriş");
count = add_task(tasks, count, "Spor");
complete_task(tasks, 1);
list_tasks(tasks, count);
return 0;
}Beklenen çıktı
1 Alışveriş 1 2 Spor 0
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Tamamlama kavramlarını eşleştir
| Kavram | Anlamı |
|---|---|
done = 1 |
tamamlandı |
done = 0 |
bekliyor |
id - 1 |
dizi indisi |
tasks[i] |
görev dizisi |
2 Bir görevi tamamlandı olarak işaretlemek için ne yapılır?
- tasks[i].id = 1
- tasks[i].title = "tamam"
- tasks[i].done = 1 Doğru cevap
- tasks[i] = NULL
Açıklama: done alanını 1 yapmak görevi tamamlandı işaretler.
3 Tamamlandı yap
tasks[id].____; /* görevi tamamlandı yap */
tasks[id].done = 1; /* görevi tamamlandı yap */
Açıklama: done = 1 görevi tamamlandı yapar.