Ejercicio 01 — Define Punto {x, y}, lee dos puntos del usuario e imprimelos con…
Dificultad: verde · Módulo 08 (Structs)
Enunciado
Define Punto {x, y}, lee dos puntos del usuario e imprimelos con formato (x, y).
Diagrama de flujo

Cómo se resuelve
Un struct agrupa varios datos bajo un mismo nombre. Aquí un punto son dos coordenadas, así que definimos el tipo con typedef struct { double x; double y; } Punto;. El typedef es lo que nos deja escribir luego Punto p1, p2; en vez del más largo struct Punto.
Punto p1, p2;— dos variables, cada una con sus dos camposxey.scanf("%lf %lf", &p1.x, &p1.y)— leemos las dos coordenadas. Fíjate en dos cosas:%lfes el formato dedoubleenscanf(con%fleerías unfloaty el número saldría corrupto).- Los campos son variables normales, así que sí llevan
&. Se escribe&p1.x, que C interpreta como “la dirección del campoxdep1” (el punto se aplica antes que el&).
printf("Punto 1: (%.2f, %.2f)\n", p1.x, p1.y)— al imprimir undoublese usa%f(aquí%.2fpara dos decimales), sin&.
Accedes a un campo con el operador punto: p1.x. Esa es la idea central del módulo.
Trampa habitual: olvidar el punto y coma tras la llave de cierre del struct (} Punto;). En C esa ; es obligatoria y su ausencia dispara errores raros en la línea siguiente.
Para practicar — cópialo en Dev-C++
Pega este esqueleto y completa los TODO. Es la mejor forma de aprender: inténtalo antes de mirar la solución.
/*
* Curso de C — Modulo 08: Structs
* Ejercicio 01 — PRACTICA (rellena los TODO)
* Enunciado: Define Punto {x, y}, lee dos puntos del usuario e imprimelos con formato (x, y).
* Dificultad: verde
* Compilar: gcc -std=c11 -Wall ej01_practica.c -o ej01 && ./ej01
*/
#include <stdio.h>
// TODO 1: Define un typedef struct llamado Punto con dos campos double: x e y.
int main(void) {
// TODO 2: Declara dos variables de tipo Punto (p1 y p2).
// TODO 3: Pide al usuario el punto 1 con printf y lee x e y con scanf.
// Recuerda: para leer un double usa %lf y el operador &.
// TODO 4: Haz lo mismo para el punto 2.
// TODO 5: Imprime p1 con formato "Punto 1: (x.xx, y.yy)\n"
// Usa %.2f para dos decimales.
// TODO 6: Imprime p2 con el mismo formato.
return 0;
}Solución — cópiala y ejecútala
/*
* Curso de C — Modulo 08: Structs
* Ejercicio 01 — MODELO (resuelto)
* Enunciado: Define Punto {x, y}, lee dos puntos del usuario e imprimelos con formato (x, y).
* Dificultad: verde
* Compilar: gcc -std=c11 -Wall ej01_modelo.c -o ej01 && ./ej01
*/
#include <stdio.h>
// Definicion del tipo Punto con typedef
typedef struct {
double x;
double y;
} Punto;
int main(void) {
Punto p1, p2;
// Leer primer punto
printf("Introduce punto 1 (x y): ");
scanf("%lf %lf", &p1.x, &p1.y);
// Leer segundo punto
printf("Introduce punto 2 (x y): ");
scanf("%lf %lf", &p2.x, &p2.y);
// Mostrar con formato (x, y)
printf("Punto 1: (%.2f, %.2f)\n", p1.x, p1.y);
printf("Punto 2: (%.2f, %.2f)\n", p2.x, p2.y);
return 0;
}Cómo usarlo
Dev-C++ (Windows): Archivo → Nuevo → Código fuente, pega el código y pulsa F11 (compilar y ejecutar). Si ves los acentos raros en la consola, escribe chcp 65001 y vuelve a ejecutar.