Проект: Определение структуры Contact
Часть раздела Logic & Flow путешествия по C на Coddy — урок 50 из 63.
Задание
ЛегкоВы создадите простой инструмент для ввода контактов, который демонстрирует, как структуры могут организовывать связанные данные в реальных приложениях.
Создайте программу на языке C, которая определяет структуру Contact для хранения контактной информации. Ваша программа должна:
- Определить
structс именемContactсо следующими членами:- Массив символов
nameразмером 50 для хранения имени контакта - Массив символов
phoneразмером 20 для хранения номера телефона контакта - Массив символов
emailразмером 40 для хранения адреса электронной почты контакта - Целое число
ageдля хранения возраста контакта
- Массив символов
- В функции main:
- Создать переменную типа
Contactс именемperson - Считать следующие входные значения и присвоить их членам структуры, используя оператор «точка»:
- Считать строку для имени и присвоить ее
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: Создайте переменную типа Contact с именем person
// Чтение входных значений
scanf("%s", /* TODO: присвоить person.name */);
scanf("%s", /* TODO: присвоить person.phone */);
scanf("%s", /* TODO: присвоить person.email */);
scanf("%d", /* TODO: присвоить person.age */);
// TODO: Напишите код валидации и вывода ниже
return 0;
}Все уроки раздела Logic & Flow
1Основы указателей
Что такое указатель?Объявление указателейОператор взятия адреса (&)Оператор разыменования (*)Указатели NULLИтоги: Основы указателей4Проект: Простая текстовая утилита
Обзор проектаПодсчет символов2Указатели и массивы
Имена массивов как указателиЭлементы массива — указателиАрифметика указателейСравнение указателейИтоги: Обход массива через указатели5Указатели и функции
Передача по значениюПередача указателей в функцииИзменение переменных через указателиКлассический пример: SwapПередача массивов в функцииИтоги: указатели как аргументы функций8Структуры и указатели
Указатели на структурыОператор «стрелка» (->)Передача структур по значениюПередача указателей на структурыДинамическое выделение памяти для структурИтоги: Изменение структур через указатели11Итоговые задачи на повторение
Повторение: динамическая конкатенация строкПовторение: массив структурПовторение: счетчик частоты слов3Символьные массивы и строки
Строки как массивы charНуль-терминаторВвод строк с помощью scanfИспользование strlen()Использование strcpy()Использование strcat()Использование strcmp()Итоги: основные строковые функции6Управление памятью
Стек против кучиДинамическое выделение — malloc()Использование sizeof() для выделения памятиПроверка ошибок выделения памятиОсвобождение памяти с помощью free()Выделение памяти с помощью calloc()Итоги: Динамический массив9Проект: Простой ввод контактов
Проект: Определение структуры ContactФункция для создания контакта