
Umgar
5 год назад
Пожалуйста посчитайте перевести из паскаля в си, пожалуйста!!!!!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);begint.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;beginProv:=a.a*b.b-a.b*b.a<>0;end;{процедура ввода данных}procedure Vvod(var a:prm;k:byte);beginrepeatwriteln('Введите коэффициенты прямой ',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;beginclrscr;Vvod(a,1);Vvod(b,2);Vvod(c,3);if not Prov(a,b)or not Prov(a,c)or not Prov(b,c) thenbeginwrite('Прямые попарно не пересекаются');readln;exitend;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);readlnend.
ОТВЕТЫ

Эмилия
Oct 24, 2020
#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("Введите коэффициенты прямой %in", 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.2fn", m12.x, m12.y);
printf("Точка пересечения 1-3: %5.2f; %5.2fn", m13.x, m13.y);
printf("Точка пересечения 2-3: %5.2f; %5.2fn", 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;
}
#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("Введите коэффициенты прямой %in", 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.2fn", m12.x, m12.y);
printf("Точка пересечения 1-3: %5.2f; %5.2fn", m13.x, m13.y);
printf("Точка пересечения 2-3: %5.2f; %5.2fn", 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;
}
19
Смежные вопросы: