Перевести код из Паскаля в Си - C (СИ) (70608)
Формулировка задачи:
var
a,b,c,d,e,f,g,h:real;
f1,f2:real;
begin
write('a='); readln(a);
write('b='); readln(b);
write('c='); readln(c);
write('d='); readln(d);
write('e='); readln(e);
write('f='); readln(f);
write('g='); readln(g);
write('h='); readln(h);
{Рівняння прямої f=0
f=(x‐e)*(h‐f)‐(y‐f)*(g‐e)}
{підставляємо в F(x,y) точку (a,b)}
f1:=(a‐e)*(h‐f)‐(b‐f)*(g‐e);
{підставляємо в F(x,y) точку (c,d)}
f2:=(c‐e)*(h‐f)‐(d‐f)*(g‐e);
{Перевіряємо чи f1 та f2 мають однакові знаки}
if ((f1>0) and (f2>0)) or ((f1<0) and (f2<0))
then
writeln('YES')
else
writeln('NO');
readln;
end.
Часть кода пропала ,так что лучше так
var
a,b,c,d,e,f,g,h:real;
f1,f2:real;
begin
write('a='); readln(a);
write('b='); readln(b);
write('c='); readln(c);
write('d='); readln(d);
write('e='); readln(e);
write('f='); readln(f);
write('g='); readln(g);
write('h='); readln(h);
{Рівняння прямої f=0
f=(x‐e)*(h‐f)‐(y‐f)*(g‐e)}
{підставляємо в F(x,y) точку (a,b)}
f1:=(a‐e)*(h‐f)‐(b‐f)*(g‐e);
{підставляємо в F(x,y) точку (c,d)}
f2:=(c‐e)*(h‐f)‐(d‐f)*(g‐e);
{Перевіряємо чи f1 та f2 мають однакові знаки}
if ((f1>0) and (f2>0)) or ((f1<0) and (f2<0))
then
writeln('YES')
else
writeln('NO');
readln;
end.Решение задачи: «Перевести код из Паскаля в Си»
textual
Листинг программы
#include <stdio.h>
int main(void) {
float a, b, c, d, e, f, g, h;
float f1, f2;
printf("a = ");
scanf("%f", &a);
printf("b = ");
scanf("%f", &b);
printf("c = ");
scanf("%f", &c);
printf("d = ");
scanf("%f", &d);
printf("e = ");
scanf("%f", &e);
printf("f = ");
scanf("%f", &f);
printf("g = ");
scanf("%f", &g);
printf("h = ");
scanf("%f", &h);
//Рівняння прямої f=0
//f=(x‐e)*(h‐f)‐(y‐f)*(g‐e)
//підставляємо в F(x,y) точку (a,b)
f1 = (a-e)*(h-f)-(b-f)*(g-e);
//{підставляємо в F(x,y) точку (c,d)}
f2 = (c-e)*(h-f)-(d*f)*(g-e);
//{Перевіряємо чи f1 та f2 мають однакові знаки}
if (((f1>0) && (f2>0)) || ((f1<0) && (f2<0)))
printf("YES\n");
else
printf("NO\n");
return 0;
}
Объяснение кода листинга программы
- Объявлены переменные a, b, c, d, e, f, g, h, f1, f2 типа float.
- Выполняется последовательный ввод значений переменных a, b, c, d, e, f, g, h с помощью функции scanf.
- Вычисляются значения переменных f1 и f2 по формулам: f1 = (a-e)(h-f)-(b-f)(g-e); f2 = (c-e)(h-f)-(d-f)(g-e);
- Выполняется проверка знаков f1 и f2:
if (((f1>0) && (f2>0)) || ((f1<0) && (f2<0)))
printf(
YES\n); else printf(NO\n); - Программа завершается возвратом значения 0.