В
Все
М
Математика
А
Английский язык
Х
Химия
Э
Экономика
П
Право
И
Информатика
У
Українська мова
Қ
Қазақ тiлi
О
ОБЖ
Н
Немецкий язык
Б
Беларуская мова
У
Українська література
М
Музыка
П
Психология
А
Алгебра
Л
Литература
Б
Биология
М
МХК
О
Окружающий мир
О
Обществознание
И
История
Г
Геометрия
Ф
Французский язык
Ф
Физика
Д
Другие предметы
Р
Русский язык
Г
География
привет948
привет948
14.09.2022 20:02 •  Информатика

Перевести из паскаля в си, ! uses crt; type prm=record {прямая с полями, коэффициентами} a,b,c: real; end; tch=record {точка с полями, координатами} x,y: real; end; {процедура вычисления точки пересечения 2х прямых} procedure peres2(a,b: prm; var t: tch); begin t.x: =(b.c*a.b-a.c*b.b)/(a.a*b.b-a.b*b.a); t.y: =(b.a*a.c-a.a*b.c)/(a.a*b.b-a.b*b.a); end; {функция проверки на пересечение} function prov(a,b: prm): boolean; begin prov: =a.a*b.b-a.b*b.a< > 0; end; {процедура ввода данных} procedure vvod(var a: prm; k: byte); begin repeat writeln('введите коэффициенты прямой ',k); readln(a.a,a.b,a.c); if(a.a=0)and(a.b=0)then writeln('это не прямая, повторите ввод') until(a.a< > 0)or(a.b< > 0); a.c: =-a.c; {перенесем c в левую часть получим ax+by+c=0} end; var a,b,c: prm; m12,m13,m23: tch; s: real; begin clrscr; vvod(a,1); vvod(b,2); vvod(c,3); if not prov(a,b)or not prov(a,c)or not prov(b,c) then begin write('прямые попарно не пересекаются'); readln; exit end; peres2(a,b,m12); peres2(a,c,m13); peres2(b,c,m23); writeln('точка пересечения 1-2: ',m12.x: 5: 2,'; ',m12.y: 5: 2); writeln('точка пересечения 1-3: ',m13.x: 5: 2,'; ',m13.y: 5: 2); writeln('точка пересечения 2-3: ',m23.x: 5: 2,'; ',m23.y: 5: 2); s: =abs(m12.x*(m23.y-m13.y)+m23.x*(m13.y-m12.y)+m13.x*(m13.y-m23.y))/2; write('площадь треугольника пересечений=',s: 0: 2); readln end.

Показать ответ
Ответ:
Язиля111
Язиля111
06.10.2020 13:15
#include <stdio.h>
#include <math.h>
struct prm {
    float a, b, c;
};
 
struct tch {
    float x, y;
};
 
void Peres2(struct prm a, struct prm b, struct tch *t) {
    t->x = (b.c*a.b-a.c*b.b)/(a.a*b.b-a.b*b.a);
    t->y = (b.a*a.c-a.a*b.c)/(a.a*b.b-a.b*b.a);
}
 
int Prov(struct prm a, struct prm b) {
    return a.a*b.b-a.b*b.a!=0;
}
 
void Vvod(struct prm *a, int k) {
    do {
        printf("Введите коэффициенты прямой %i\n", k);
        scanf("%f%f%f", &a->a, &a->b, &a->c);
        if ((a->a == 0) && (a->b == 0))
            printf("Это не прямая, повторите ввод\n");
    } while ((a->a == 0) && (a->b == 0));
    a->c = -a->c;
}
 
struct prm a, b, c;
struct tch m12, m13, m23;
float s;
 
int main() {
    Vvod(&a, 1);
    Vvod(&b, 2);
    Vvod(&c, 3);
    if (!Prov(a, b) || !Prov(a, c) || !Prov(b, c)) {
        printf("Прямые попарно не пересекаются");
        return 0;
    }
    Peres2(a,b,&m12);
    Peres2(a,c,&m13);
    Peres2(b,c,&m23);
 
    printf("Точка пересечения 1-2: %5.2f; %5.2f\n", m12.x, m12.y);
    printf("Точка пересечения 1-3: %5.2f; %5.2f\n", m13.x, m13.y);
    printf("Точка пересечения 2-3: %5.2f; %5.2f\n", m23.x, m23.y);
 
    s = fabs(m12.x*(m23.y-m13.y)+m23.x*(m13.y-m12.y)+m13.x*(m13.y-m23.y))/2;
    printf("Площадь треугольника пересечений=%.2f", s);
    return 0;
}
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота