Ejercicio 01 — Define Punto {x, y}, lee dos puntos del usuario e imprímelos con…
Dificultad: verde · Módulo 08 (Structs)
Enunciado
Define Punto {x, y}, lee dos puntos del usuario e imprímelos con formato (x, y).
Diagramas 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 y complétalo
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 imprímelos con formato (x, y).
* Dificultad: verde
* Stdin: 1 2\n3 4
* 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 imprímelos con formato (x, y).
* Dificultad: verde
* Stdin: 1 2\n3 4
* 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;
}Ejecútalo en el navegador
▶ Abrir y ejecutar en Compiler Explorer
Se abre con la solución ya cargada; pulsa el botón de ejecutar (Run) para ver la salida. No hay que instalar nada.
Cómo usarlo
Pega el código en un fichero y ejecútalo con tu toolchain habitual (o el botón de Ejecutar de tu editor). Antes de mirar la solución, intenta completar tú el esqueleto: es la mejor forma de aprender.