【发布时间】:2019-04-01 17:44:03
【问题描述】:
我需要做这个程序,它需要两个三角形并比较它们。
除了用户输入初始数据的部分外,基本上一切正常。我的主要问题是其中一个条件是用户可以输入三角形三个边的长度或三个顶点的 X、Y 坐标。
我需要它像以下任何一个一样工作:
这个输入意味着用户使用了边的长度:
{ 5 , 5 , 5 }
这个输入意味着用户使用了顶点的 X,Y 坐标:
{ [ 1 ; 1 ] , [ 3 ; 1 ] , [ 2 ; 2 ] }
这是我尝试解决它的代码,但由于某种原因,如果用户使用顶点输入第一个条件,即检查它是否不是边长,一切都会搞砸。
#include <stdio.h>
int main() {
double a, b, c, A[2], B[2], C[2];
char s;
if(scanf(" { [ %lf ; %lf ] , [ %lf ; %lf ] , [ %lf ; %lf ] }%c",
&A[0], &A[1], &B[0], &B[1], &C[0], &C[1], &s) != 7 && s != '\n') {
s = ' ';
if(scanf(" { %lf , %lf , %lf }%c", &a, &b, &c, &s) != 4 && s != '\n') {
printf("error\n");
return 1;
}
}
// rest of the code...
printf("success\n");
return 0;
}
如果我交换这两个条件,它就会切换,并且它仅在用户使用顶点输入时才有效......
有没有可能让它像这样简单地工作?
【问题讨论】:
-
我会阅读整行,确定它是什么类型的数据,然后用
sscanf解析它。 -
关于SO的多个问题都在询问这种数据格式,包括:stackoverflow.com/questions/53145987; stackoverflow.com/questions/53132823; stackoverflow.com/questions/53042562; stackoverflow.com/questions/53042562; stackoverflow.com/questions/53037182; stackoverflow.com/questions/53034556 — 所有这些都以一种或另一种形式询问相同的“2018 年秋季新 SO”数据格式。
-
这是此格式的规范问题,但人们的感知需求存在细微变化,如果您要寻找的答案不在这里,请查看右侧“已链接”下列出的问题.该主题至少有 9 个问题(包括这个问题)。格式几乎但不完全像 JSON。除其他差异外,此格式使用分号
;,其中 JSON 将使用逗号,。它还缺少 JSON 中对象 ({ … }) 表示法中的名称/值对的名称。