我目前正試圖讓我的觀點在矩形代碼工作。可悲的是我得到一個浮點異常,但我不知道爲什麼。我首先想到這是因爲可能的零分,但我排除了這一點。它似乎也是我每次都投入int,所以甚至不應該有浮點。C - 浮點異常
#include <stdio.h>
#include <stdlib.h>
#include <ncurses.h>
#include <time.h>
int point_on_line(int x, int y, int x1, int y1, int x2, int y2) {
int eq1 = (y2 - y1)/(x2 - x1);
int eq2 = eq1 * (x - x1);
int eq3 = y - y1 - eq2;
return eq3;
}
int point_in_rectangle(int x, int y, int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) {
int l1 = point_on_line(x, y, x1, y1, x2, y2);
int l2 = point_on_line(x, y, x2, y2, x3, y3);
int l3 = point_on_line(x, y, x3, y3, x4, y4);
int l4 = point_on_line(x, y, x4, y4, x1, y1);
if ((l1 <= 0) && (l2 <= 0) && (l3 <= 0) && (l4 <= 0)) {
return 1;
}
return 0;
}
int main() {
initscr();
noecho();
nodelay(stdscr, TRUE);
int x_max, y_max;
getmaxyx(stdscr, y_max, x_max);
srand(time(NULL));
start_color();
init_pair(0, COLOR_WHITE, COLOR_BLACK);
init_pair(1, COLOR_RED, COLOR_BLACK);
init_pair(2, COLOR_GREEN, COLOR_BLACK);
init_pair(3, COLOR_BLUE, COLOR_BLACK);
init_pair(4, COLOR_YELLOW, COLOR_BLACK);
init_pair(5, COLOR_MAGENTA, COLOR_BLACK);
init_pair(6, COLOR_CYAN, COLOR_BLACK);
int colors[x_max][y_max];
for (int x = 0; x < x_max; x++) {
for (int y = 0; y < y_max; y++) {
int col = 0;
if (point_in_rectangle(x, y, 5, 5, 10, 5, 10, 10, 5, 10) == 1) {
col = 1;
}
colors[x][y] = col;
}
}
char input = '0';
while(1) {
char ch = getch();
if (ch != ERR) {
input = ch;
}
for (int x = 0; x < x_max; x++){
for (int y = 0; y < y_max; y++) {
int col = colors[x][y];
attron(COLOR_PAIR(col));
mvaddch(y, x, rand() % 200);
attroff(COLOR_PAIR(col));
}
}
refresh();
}
endwin();
return EXIT_SUCCESS;
}
編譯和執行它提供了以下錯誤消息,該程序後:
Floating point exception (core dumped)
請在你的文章中包含確切的錯誤信息。 – ForceBru
對不起,編輯帖子 – nn3112337
你是怎麼排除被零除的?看來,這正是問題所在。 –