Подсчитать количество точек, лежащих вне треугольника - C (СИ)
Формулировка задачи:
Помогите перевести программу с Паскаля на Си
Подсчитать количество точек, лежащих вне треугольника, образованного осями координат и прямой y=2x+1.
program lab8;
uses crt;
var f:text;
x,y:real;
k:integer;
begin
clrscr;
assign(f,'file1.txt');
rewrite(f);
writeln('Введите в файл координаты точек, окончание x=0 y=0:');
repeat
write('x=');readln(x);
write('y=');readln(y);
if(x<>0)or(y<>0) then writeln(f,' ',x,' ',y);
until(x=0)and(y=0);
close(f);
reset(f);
k:=0;
while not eof(f) do
begin
read(f,x);
read(f,y);
if(x<-0.5)or(x>0)or(y>2*x+1)then k:=k+1;
end;
close(f);
write('Вне треугольника лежит точек=',k);
readln
end.Решение задачи: «Подсчитать количество точек, лежащих вне треугольника»
textual
Листинг программы
#include<iostream>
#include<fstream>
using namespace std;
int main()
{
fstream f;
double x,y;
int k=0;
f.open("file1.txt",ios::out);
cout<<"Введите в файл координаты точек, окончание x=0 y=0:"<<endl;
do
{
cout<<"x=";
cin>>x;
cout<<"y=";
cin>>y;
if((x!=0)||(y!=0)) f<<" "<<x<<" "<<y<<endl;
}
while((x!=0)&&(y!=0));
f.close();
f.open("file1.txt",ios::in);
while(!f.eof())
{
f>>x;
f>>y;
if((x<-0.5)||(x>0)||(y>2*x+1)) k++;
}
f.close();
cout<<"Вне треугольника лежит точек="<<k<<endl;
getchar();
return 0;
}
Объяснение кода листинга программы
В этом коде выполняется подсчет количества точек, которые находятся вне треугольника по заданным координатам.
- Открывается файл для записи координат точек.
- Вводится координаты точек до тех пор, пока не будут введены координаты точки, где x=0 и y=0.
- Записываются в файл только те координаты точек, которые не являются вершинами треугольника (x=0 и y=0).
- Открывается файл для чтения записанных координат точек.
- Происходит чтение координат точек из файла до тех пор, пока не будет достигнут конец файла.
- *Проверяется, находится ли точка вне треугольника по следующей формуле: (x<-0.5)||(x>0)||(y>2x+1)**.
- Если точка находится вне треугольника, увеличивается счетчик k на 1.
- Выводится количество точек, которые находятся вне треугольника.