Proyecto: Definir la estructura Contact
Parte de la sección Logic & Flow del Journey de C de Coddy — lección 50 de 63.
Desafío
FácilConstruirás una herramienta sencilla de entrada de contactos que demuestra cómo los structs pueden organizar datos relacionados en aplicaciones del mundo real.
Crea un programa en C que defina un struct llamado Contact para almacenar información de contacto. Tu programa debe:
- Definir un
structllamadoContactcon los siguientes miembros:- Un arreglo de caracteres
namecon tamaño 50 para almacenar el nombre del contacto - Un arreglo de caracteres
phonecon tamaño 20 para almacenar el número de teléfono del contacto - Un arreglo de caracteres
emailcon tamaño 40 para almacenar la dirección de correo electrónico del contacto - Un entero
agepara almacenar la edad del contacto
- Un arreglo de caracteres
- En la función main:
- Crear una variable
Contactllamadaperson - Leer los siguientes valores de entrada y asignarlos a los miembros del struct utilizando el operador de punto:
- Leer una cadena para el nombre y asignarla a
person.name - Leer una cadena para el número de teléfono y asignarla a
person.phone - Leer una cadena para el correo electrónico y asignarla a
person.email - Leer un entero para la edad y asignarlo a
person.age
- Leer una cadena para el nombre y asignarla a
- Después de leer todos los valores, realizar las siguientes comprobaciones de validación:
- Si la edad es menor que 0 o mayor que 120, imprimir
Invalid agey salir del programa - Si la longitud del número de teléfono es menor de 10 caracteres, imprimir
Invalid phone numbery salir del programa
- Si la edad es menor que 0 o mayor que 120, imprimir
- Si todas las validaciones pasan, imprimir la información de contacto en este formato exacto:
Contact Information:Name: [name]Phone: [phone]Email: [email]Age: [age]
- Calcular e imprimir información adicional:
- Imprimir la longitud del nombre usando
strlen()en el formato:Name length: [length] - Determinar la categoría de edad e imprimirla:
- Si la edad está entre 0 y 17:
Category: Minor - Si la edad está entre 18 y 64:
Category: Adult - Si la edad es 65 o superior:
Category: Senior
- Si la edad está entre 0 y 17:
- Imprimir la longitud del nombre usando
- Crear una variable
Este desafío pone a prueba tu comprensión de la definición de structs, la declaración de miembros con tipos de datos y tamaños adecuados, el acceso a los miembros del struct mediante el operador de punto, la validación de entradas y el uso de funciones de cadena como strlen() con miembros del struct. Practicarás la creación de una estructura de datos práctica que podría servir como base para un sistema de gestión de contactos.
Pruébalo tú mismo
#include <stdio.h>
#include <string.h>
// TODO: Define la estructura Contact aquí
int main() {
// TODO: Crea una variable Contact llamada person
// Leer valores de entrada
scanf("%s", /* TODO: asignar a person.name */);
scanf("%s", /* TODO: asignar a person.phone */);
scanf("%s", /* TODO: asignar a person.email */);
scanf("%d", /* TODO: asignar a person.age */);
// TODO: Escribe tu código de validación y salida a continuación
return 0;
}Todas las lecciones de Logic & Flow
1Fundamentos de Punteros
¿Qué es un puntero?Declaración de punterosEl operador de dirección (&)El operador de desreferencia (*)Punteros NULLResumen: Conceptos básicos de punteros4Proyecto: Utilidad de texto simple
Descripción general del proyectoContar caracteres2Punteros y Arrays
Nombres de Arrays como PunterosElementos de un Array - PunterosAritmética de PunterosComparación de PunterosResumen: Recorrido de Arrays con Punteros5Punteros y funciones
Paso por valorPasar punteros a funcionesModificar variables mediante punterosUn ejemplo clásico: Intercambio (Swap)Pasar arrays a funcionesResumen: Argumentos de punteros a funciones3Arreglos de caracteres y cadenas
Cadenas como arreglos de charEl terminador nuloEntrada de cadenas con scanfUso de strlen()Uso de strcpy()Uso de strcat()Uso de strcmp()Resumen: Funciones básicas de cadenas6Gestión de memoria
Memoria Stack vs. HeapAsignación dinámica - malloc()Uso de sizeof() para la asignaciónComprobación de fallos de asignaciónLiberación de memoria con free()Asignación con calloc()Resumen: Arrays dinámicos9Proyecto: Registro de contacto simple
Proyecto: Definir la estructura ContactFunción para crear un contacto