Projekt: Definiowanie struktury kontaktu
Część sekcji Logika i sterowanie przepływem ścieżki C w Coddy. Lekcja 50 z 63.
Wyzwanie
ŁatwyZbudujesz proste narzędzie do zapisywania kontaktów, które pokazuje, jak struktury mogą porządkować powiązane dane w praktycznych zastosowaniach.
Utwórz program w C, który definiuje strukturę Contact do przechowywania informacji o kontakcie. Twój program powinien:
- Zdefiniować strukturę
structo nazwieContactz następującymi polami:- Tablica znaków
nameo rozmiarze 50 do przechowywania imienia i nazwiska kontaktu - Tablica znaków
phoneo rozmiarze 20 do przechowywania numeru telefonu kontaktu - Tablica znaków
emailo rozmiarze 40 do przechowywania adresu e-mail kontaktu - Liczbę całkowitą
agedo przechowywania wieku kontaktu
- Tablica znaków
- W funkcji main:
- Utworzyć zmienną typu
Contacto nazwieperson - Odczytać następujące wartości wejściowe i przypisać je do pól struktury za pomocą operatora kropki:
- Odczytać ciąg znaków z imieniem i nazwiskiem i przypisać go do
person.name - Odczytać ciąg znaków z numerem telefonu i przypisać go do
person.phone - Odczytać ciąg znaków z adresem e-mail i przypisać go do
person.email - Odczytać liczbę całkowitą z wiekiem i przypisać ją do
person.age
- Odczytać ciąg znaków z imieniem i nazwiskiem i przypisać go do
- Po odczytaniu wszystkich wartości wykonać następujące kontrole poprawności:
- Jeśli wiek jest mniejszy niż 0 lub większy niż 120, wypisać
Invalid agei zakończyć program - Jeśli długość numeru telefonu jest mniejsza niż 10 znaków, wypisać
Invalid phone numberi zakończyć program
- Jeśli wiek jest mniejszy niż 0 lub większy niż 120, wypisać
- Jeśli wszystkie kontrole poprawności zakończą się pomyślnie, wypisać informacje o kontakcie w dokładnie następującym formacie:
Contact Information:Name: [name]Phone: [phone]Email: [email]Age: [age]
- Obliczyć i wypisać dodatkowe informacje:
- Wypisać długość imienia i nazwiska za pomocą
strlen()w formacie:Name length: [length] - Określić kategorię wiekową i ją wypisać:
- Jeśli wiek mieści się w przedziale od 0 do 17:
Category: Minor - Jeśli wiek mieści się w przedziale od 18 do 64:
Category: Adult - Jeśli wiek wynosi 65 lub więcej:
Category: Senior
- Jeśli wiek mieści się w przedziale od 0 do 17:
- Wypisać długość imienia i nazwiska za pomocą
- Utworzyć zmienną typu
To wyzwanie sprawdza, czy rozumiesz definiowanie struktur, deklarowanie pól z odpowiednimi typami i rozmiarami danych, uzyskiwanie dostępu do pól struktury za pomocą operatora kropki, kontrolę poprawności danych wejściowych oraz używanie funkcji obsługujących ciągi znaków, takich jak strlen(), z polami struktury. Przećwiczysz tworzenie praktycznej struktury danych, która może stanowić podstawę systemu zarządzania kontaktami.
Spróbuj swoich sił
#include <stdio.h>
#include <string.h>
// TODO: Zdefiniuj tutaj strukturę Contact
int main() {
// TODO: Utwórz zmienną typu Contact o nazwie person
// Odczytaj wartości wejściowe
scanf("%s", /* TODO: przypisz do person.name */);
scanf("%s", /* TODO: przypisz do person.phone */);
scanf("%s", /* TODO: przypisz do person.email */);
scanf("%d", /* TODO: przypisz do person.age */);
// TODO: Napisz poniżej kod sprawdzający poprawność danych i wyświetlający wyniki
return 0;
}Wszystkie lekcje w sekcji Logika i sterowanie przepływem
1Podstawy wskaźników
Czym jest wskaźnik?Deklarowanie wskaźnikówOperator pobrania adresu (&)Operator dereferencji (*)Wskaźniki NULLPodsumowanie: podstawy wskaźników4Projekt: Proste narzędzie tekstowe
Przegląd projektuLiczenie znaków2Wskaźniki i tablice
Nazwy tablic jako wskaźnikiElementy tablic — wskaźnikiArytmetyka wskaźnikówPorównywanie wskaźnikówPodsumowanie: przechodzenie po tablicy za pomocą wskaźników5Wskaźniki i funkcje
Przekazywanie przez wartośćPrzekazywanie wskaźników do funkcjiModyfikowanie zmiennych za pomocą wskaźnikówKlasyczny przykład: zamianaPrzekazywanie tablic do funkcjiPowtórka: argumenty wskaźnikowe funkcji8Struktury i wskaźniki
Wskaźniki do strukturOperator strzałki (->)Przekazywanie struktur przez wartośćPrzekazywanie wskaźników do strukturDynamiczna alokacja strukturPodsumowanie: modyfikowanie struktury — wskaźnik11Końcowe zadania powtórkowe
Powtórka: dynamiczne łączenie ciągów znakówPowtórka: tablica strukturPowtórka: licznik częstotliwości słów3Tablice znaków i ciągi znaków
Ciągi znaków jako tablice charZnak końca ciąguWczytywanie ciągu za pomocą scanfUżywanie strlen()Używanie strcpy()Używanie strcat()Używanie strcmp()Podsumowanie: podstawowe funkcje do obsługi ciągów znaków6Zarządzanie pamięcią
Pamięć stosu a stertyAlokacja dynamiczna — malloc()Użycie sizeof() do alokacjiSprawdzanie niepowodzenia alokacjiZwalnianie pamięci za pomocą free()Alokacja za pomocą calloc()Podsumowanie: tablica dynamiczna9Projekt: Prosty wpis kontaktu
Projekt: Definiowanie struktury kontaktuFunkcja tworząca kontaktPoćwicz samodzielnie: Kompilator C online