Перевести код из Паскаля в Си - C (СИ) (70608)

Узнай цену своей работы

Формулировка задачи:

Листинг программы
  1. var
  2. a,b,c,d,e,f,g,h:real;
  3. f1,f2:real;
  4. begin
  5. write('a='); readln(a);
  6. write('b='); readln(b);
  7. write('c='); readln(c);
  8. write('d='); readln(d);
  9. write('e='); readln(e);
  10. write('f='); readln(f);
  11. write('g='); readln(g);
  12. write('h='); readln(h);
  13. {Рівняння прямої f=0
  14. f=(x‐e)*(h‐f)‐(y‐f)*(g‐e)}
  15. {підставляємо в F(x,y) точку (a,b)}
  16. f1:=(a‐e)*(h‐f)‐(b‐f)*(g‐e);
  17. {підставляємо в F(x,y) точку (c,d)}
  18. f2:=(c‐e)*(h‐f)‐(d‐f)*(g‐e);
  19. {Перевіряємо чи f1 та f2 мають однакові знаки}
  20. if ((f1>0) and (f2>0)) or ((f1<0) and (f2<0))
  21. then
  22. writeln('YES')
  23. else
  24. writeln('NO');
  25. readln;
  26. end.
Часть кода пропала ,так что лучше так
Листинг программы
  1. var
  2. a,b,c,d,e,f,g,h:real;
  3. f1,f2:real;
  4. begin
  5. write('a='); readln(a);
  6. write('b='); readln(b);
  7. write('c='); readln(c);
  8. write('d='); readln(d);
  9. write('e='); readln(e);
  10. write('f='); readln(f);
  11. write('g='); readln(g);
  12. write('h='); readln(h);
  13. {Рівняння прямої f=0
  14. f=(x‐e)*(h‐f)‐(y‐f)*(g‐e)}
  15. {підставляємо в F(x,y) точку (a,b)}
  16. f1:=(a‐e)*(h‐f)‐(b‐f)*(g‐e);
  17. {підставляємо в F(x,y) точку (c,d)}
  18. f2:=(c‐e)*(h‐f)‐(d‐f)*(g‐e);
  19. {Перевіряємо чи f1 та f2 мають однакові знаки}
  20. if ((f1>0) and (f2>0)) or ((f1<0) and (f2<0))
  21. then
  22. writeln('YES')
  23. else
  24. writeln('NO');
  25. readln;
  26. end.

Решение задачи: «Перевести код из Паскаля в Си»

textual
Листинг программы
  1. #include <stdio.h>
  2.  
  3. int main(void) {
  4.     float a, b, c, d, e, f, g, h;
  5.     float f1, f2;
  6.  
  7.     printf("a = ");
  8.     scanf("%f", &a);
  9.     printf("b = ");
  10.     scanf("%f", &b);
  11.     printf("c = ");
  12.     scanf("%f", &c);
  13.     printf("d = ");
  14.     scanf("%f", &d);
  15.     printf("e = ");
  16.     scanf("%f", &e);
  17.     printf("f = ");
  18.     scanf("%f", &f);
  19.     printf("g = ");
  20.     scanf("%f", &g);
  21.     printf("h = ");
  22.     scanf("%f", &h);
  23.  
  24.     //Рівняння прямої f=0
  25.     //f=(x‐e)*(h‐f)‐(y‐f)*(g‐e)
  26.     //підставляємо в F(x,y) точку (a,b)
  27.     f1 = (a-e)*(h-f)-(b-f)*(g-e);
  28.     //{підставляємо в F(x,y) точку (c,d)}
  29.     f2 = (c-e)*(h-f)-(d*f)*(g-e);
  30.     //{Перевіряємо чи f1 та f2 мають однакові знаки}
  31.     if (((f1>0) && (f2>0)) || ((f1<0) && (f2<0)))
  32.         printf("YES\n");
  33.     else
  34.         printf("NO\n");
  35.  
  36.     return 0;
  37. }

Объяснение кода листинга программы

  1. Объявлены переменные a, b, c, d, e, f, g, h, f1, f2 типа float.
  2. Выполняется последовательный ввод значений переменных a, b, c, d, e, f, g, h с помощью функции scanf.
  3. Вычисляются значения переменных f1 и f2 по формулам: f1 = (a-e)(h-f)-(b-f)(g-e); f2 = (c-e)(h-f)-(d-f)(g-e);
  4. Выполняется проверка знаков f1 и f2: if (((f1>0) && (f2>0)) || ((f1<0) && (f2<0))) printf(YES\n); else printf(NO\n);
  5. Программа завершается возвратом значения 0.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.091 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут