Buenas, cómo están?
Hice este ejercicio de manera de que el usuario pueda ingresar la cantidad de puntos para el arreglo y las coordenadas de los puntos.
Por alguna razón no está funcionando, me aparece un cartel de que el programa dejó de funcionar, y no logro entender por qué. Parece que el problema esta en la funcion insertarPunto, ya que no fue inicializado el arreglo, pero no se como solucionarlo.
Desde ya muchas gracias, saludos!
Codigo:
#include <stdio.h>
typedef struct rep_punto
{
int coordX, coordY;
} Punto;
typedef struct rep_colPuntos
{
int capacidad;
int cantidad;
Punto *arregloPuntos;
} ColPuntos;
void insertarPunto(ColPuntos &colPtos, Punto pto)
{
if (colPtos.cantidad < colPtos.capacidad)
{
int i = colPtos.cantidad;
colPtos.cantidad++;
colPtos.arregloPuntos[i + 1] = pto;
while (i > 0 && (pto.coordX < colPtos.arregloPuntos[i].coordX || (pto.coordX == colPtos.arregloPuntos[i].coordX && pto.coordY < colPtos.arregloPuntos[i].coordY)))
{
colPtos.arregloPuntos[i + 1] = colPtos.arregloPuntos[i];
colPtos.arregloPuntos[i] = pto;
i--;
}
}
}
bool agregarPunto(int capacidad, int cantidad)
{
if (cantidad < capacidad)
{
char resultado;
printf("Desea agregar punto? (s/n)");
scanf(" %c", &resultado);
return resultado == 's';
}
else
{
printf("No hay capacidad para agregar mas puntos \n");
return false;
}
}
void leerPunto(Punto &punto)
{
printf("Ingrese coordX:\n");
scanf("%d", &punto.coordX);
printf("Ingrese coordY:\n");
scanf("%d", &punto.coordY);
}
int main()
{
ColPuntos colPtos;
colPtos.cantidad = 0;
printf("Ingrese cantidad de puntos a ingresar: \n");
scanf("%d", &colPtos.capacidad);
bool agregar = agregarPunto(colPtos.capacidad, colPtos.cantidad);
while (agregar)
{
Punto punto;
leerPunto(punto);
insertarPunto(colPtos, punto);
agregar = agregarPunto(colPtos.capacidad, colPtos.cantidad);
}
printf("Puntos ingresados: \n");
for (int i = 0; i < colPtos.cantidad; i++)
{
printf("[%d %d]", colPtos.arregloPuntos[i].coordX, colPtos.arregloPuntos[i].coordY);
}
return 0;
}