/* SOLICITUD DE DATOS */
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
struct XY
{
int x, y;
struct XY *Sig;
};
struct Todo
{
struct XY *Fig;
struct Todo *Sig;
};
void Dibuja( struct Todo *Figuras )
{
struct XY *Figura = NULL;
int Cont = 0;
char CADENA[10];
while( Figuras )
{
Figura = Figuras->Fig;
Cont = 0;
while( Figura )
{
Cont++;
printf("%d, %d\n", Figura->x, Figura->y);
Figura = Figura->Sig;
}
if (Cont == 1) sprintf(CADENA, "%s", "PUNTO");
if (Cont == 2) sprintf(CADENA, "%s", "LINEA");
if (Cont == 3) sprintf(CADENA, "%s", "TRIANGULO");
if (Cont == 4) sprintf(CADENA, "%s", "CUADRO");
printf("Se trata de un %s\n", CADENA);
Figuras = Figuras->Sig;
}
}
int Compara(int x, int y, struct XY *FIG)
{
if (FIG) while(FIG->Sig) FIG = FIG->Sig; // si sí existe, se coloca al final
if (FIG && FIG->x == x && FIG->y == y) return 1; // existe el nodo y coinciden con Xini y Yini?
return 0;
}
struct XY *PideDatos()
{
int k = 0, x, y;
struct XY *Fig1 = NULL, *Nuevo=NULL;
printf("Se finaliza si Xnew y Ynew coinciden con Xini y Yini ...\n");
while (!k)
{
printf("Datos x, y: "); scanf("%d, %d", &x, &y);
k = Compara(x,y, Fig1);
if ( !k )
{
Nuevo= (struct XY*)malloc(sizeof(struct XY));
Nuevo->x=x; Nuevo->y = y; Nuevo->Sig = Fig1; Fig1 = Nuevo;
}
}
return Fig1;
}
main()
{
struct XY *Fig = NULL;
struct Todo *Figuras = NULL, *NuevaFig=NULL;
int Salir = 0;
char Opcion[10];
while( !Salir )
{
printf("PideDatos Dibuja Salir Borrar\n");
printf("==> "); scanf("%s", Opcion);
if ( !strcasecmp(Opcion,"Salir") ) Salir = 1;
if ( !strcasecmp(Opcion,"PideDatos") )
{
Fig = PideDatos();
NuevaFig = (struct Todo*)malloc(sizeof(struct Todo));
NuevaFig->Fig = Fig;
NuevaFig->Sig = Figuras; Figuras = NuevaFig;
}
if ( !strcasecmp(Opcion,"Dibuja") ) { Dibuja( Figuras ); }
if ( !strcasecmp(Opcion,"Borrar") ) { }
}
}