#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stack>
#include <queue>
#include <map>
#include <set>
#include <vector>
#include <math.h>
#include <algorithm>
using namespace std;
const double pi = acos(-1.0);
const int INF = 0x3f3f3f3f;

struct Line
{
double x1,y1,x2,y2;
}node[105];

bool solve(Line a, Line b)//叉积判断两线段是否相交
{
if (((a.x1-b.x1)*(a.y2-b.y1)-(a.x2-b.x1)*(a.y1-b.y1))*((a.x1-b.x2)*(a.y2-b.y2)-(a.x2-b.x2)*(a.y1-b.y2))>0)
return false;
if (((b.x1-a.x1)*(b.y2-a.y1)-(b.x2-a.x1)*(b.y1-a.y1))*((b.x1-a.x2)*(b.y2-a.y2)-(b.x2-a.x2)*(b.y1-a.y2))>0)
return false;
return true;
}

int main ()
{
int n;
while (scanf ("%d",&n),n)
{
for (int i=0; i<n; i++)
scanf ("%lf%lf%lf%lf",&node[i].x1,&node[i].y1,&node[i].x2,&node[i].y2);
int cnt = 0;
for (int i=0; i<n; i++)
{
for (int j=i+1; j<n; j++)
{
if (solve(node[i], node[j]))
cnt++;
}
}
printf ("%d\n",cnt);
}
return 0;
}

最新文章

  1. 【转】TCP协议
  2. var a=function()跟function a()的区别
  3. 简单破解.net(C#)程序
  4. MySQL数据库1 - 基本概念及安装
  5. centos添加PATH环境变量
  6. 为什么调用 FragmentPagerAdapter.notifyDataSetChanged() 并不能更新其 Fragment
  7. 【转】【Http】Http各种错误的意思
  8. 传染病控制(codevs 1091)
  9. Core Java 学习笔记——1.术语/环境配置/Eclipse汉化字体快捷键/API文档
  10. ios中关于delegate(委托)的使用心得
  11. (大数据工程师学习路径)第三步 Git Community Book----Git介绍
  12. java.lang.RuntimeException: java.sql.SQLException: Too many parameters: expected 0, was given 1 Quer
  13. LeetCode - 627. Swap Salary
  14. AS报:Manifest merger failed with multiple errors, see logs
  15. 记第一次XSS实战
  16. 创建java类并实例化类对象
  17. ORACLE查询内存溢出
  18. Android:ImageView控件
  19. LeetCode总结 -- 一维动态规划篇
  20. node.js---sails项目开发(2)

热门文章

  1. Storm- 使用Storm实现累积求和的操作
  2. Cocos2d-x中手动构造Json::Value
  3. 【海量之道】海量之道之SET模型
  4. Struts 2简介
  5. 分享知识-快乐自己:关于 String 小案例
  6. css3加载spinner
  7. Python-获取前一条用例的执行结果
  8. 【二叉树的递归】02二叉树的最大深度【Maximum Depth of Binary Tree】
  9. BZOJ2288:[POJ Challenge]生日礼物
  10. JavaScript下的进制转换