我正在研究一个测试函数,该函数应该自动测试值以查看是否存在意外错误。
有六个"持有人"应该具有介于-999到1000之间的值范围
这是我尝试的方式:
#include <stdlib.h>
#include <stdio.h>
int inuti(double x, double y, double x1, double y1, double x2, double y2) {
int x_inuti;
int y_inuti;
if (x1 < x2)
x_inuti = x > x1 && x < x2;
else
x_inuti = x > x2 && x < x1;
if (y1 < y2)
y_inuti = y > y1 && y < y2;
else
y_inuti = y > y2 && y < y1;
return x_inuti && y_inuti;
}
int main(void) {
double x, y, x1, y1, x2, y2;
int resultat;
x = -999;
y = 1000;
x1 = -999;
y1 = 1000;
x2 = -999;
y2 = 1000;
while (x<1000 && y>-999 && x1<1000 && y2 >-999 && x2<1000 && y2>-999) {
x++;
y--;
y1++;
x1--;
x2++;
y2--;
printf("point x-value: %.1f \n", x);
printf("point y-value: %.1f \n", y);
printf("\n");
printf("corner side x-value: %.1f \n", x1);
printf("corner side y-value: %.1f \n", y1);
printf("\n");
printf("other corner side x-value%.1f \n", x2);
printf("other corner side y-value%.1f \n", y2);
printf("\n");
resultat = inuti(x, y, x1, y1, x2, y2);
if (resultat == 1)
printf("point was inside rectangle.\n");
else
printf("point was outside rectangle.\n");
printf("\n");
printf("\n");
}
getchar();
return 0;
}
然而,它并不包括所有组合,甚至超过了最大和最小数量。
有没有人知道循环所有组合的更好方法?
我感谢所有帮助
由于
答案 0 :(得分:0)
您将需要6种不同的循环来测试所有不同的组合。
for (x = -999; x <= 1000; x++) {
for (y = -999; y < 1000; y++) {
for (x1 = -999; x1 <= 1000; x1++) {
// etc...
}
}
}
但请注意,有2000个 6 = 64,000,000,000,000,000,000个不同的组合,这意味着代码几乎永远不会完成执行(如果每个测试需要1微秒,代码将在大约2,028,080年后完成执行) 。更好的选择是尝试在知道输出的地方测试特定输入。确保您也测试边缘情况。