プロジェクト:連絡先の構造体を定義する
CoddyのCジャーニー「Logic & Flow」セクションの一部 — レッスン 50/63。
チャレンジ
簡単構造体が実世界のアプリケーションでどのように関連データを整理できるかを示す、シンプルな連絡先入力ツールを作成します。
連絡先情報を保存するための Contact 構造体を定義するC言語のプログラムを作成してください。プログラムは以下の要件を満たす必要があります:
- 以下のメンバを持つ
Contactという名前のstructを定義します:- 連絡先の名前を保存するためのサイズ50の文字配列
name - 連絡先の電話番号を保存するためのサイズ20の文字配列
phone - 連絡先のメールアドレスを保存するためのサイズ40の文字配列
email - 連絡先の年齢を保存するための整数
age
- 連絡先の名前を保存するためのサイズ50の文字配列
- main関数内で:
personという名前のContact変数を作成します- 以下の入力値を読み取り、ドット演算子を使用して構造体のメンバに代入します:
- 名前の文字列を読み取り、
person.nameに代入します - 電話番号の文字列を読み取り、
person.phoneに代入します - メールアドレスの文字列を読み取り、
person.emailに代入します - 年齢の整数を読み取り、
person.ageに代入します
- 名前の文字列を読み取り、
- すべての値を読み取った後、以下のバリデーションチェックを実行します:
- 年齢が0未満または120より大きい場合は、
Invalid ageと出力してプログラムを終了します - 電話番号の長さが10文字未満の場合は、
Invalid phone numberと出力してプログラムを終了します
- 年齢が0未満または120より大きい場合は、
- すべてのバリデーションを通過した場合は、連絡先情報を以下の正確な形式で出力します:
Contact Information:Name: [name]Phone: [phone]Email: [email]Age: [age]
- 追加情報を計算して出力します:
strlen()を使用して名前の長さを次の形式で出力します:Name length: [length]- 年齢のカテゴリを判定して出力します:
- 年齢が0から17の間の場合:
Category: Minor - 年齢が18から64の間の場合:
Category: Adult - 年齢が65以上の場合:
Category: Senior
- 年齢が0から17の間の場合:
このチャレンジでは、構造体の定義、適切なデータ型とサイズによるメンバの宣言、ドット演算子を使用した構造体メンバへのアクセス、入力バリデーション、および構造体メンバに対する strlen() などの文字列関数の使用に関する理解をテストします。連絡先管理システムの基礎となるような、実用的なデータ構造の作成を練習します。
自分で試してみよう
#include <stdio.h>
#include <string.h>
// TODO: ここで Contact 構造体を定義します
int main() {
// TODO: person という名前の Contact 変数を作成します
// 入力値を読み取ります
scanf("%s", /* TODO: person.name に割り当てます */);
scanf("%s", /* TODO: person.phone に割り当てます */);
scanf("%s", /* TODO: person.email に割り当てます */);
scanf("%d", /* TODO: person.age に割り当てます */);
// TODO: 以下にバリデーションと出力のコードを記述してください
return 0;
}