Найти координаты вершины параболы по трем заданым точкам - C (СИ)
Формулировка задачи:
Помогите написать функцию. Точки задаются в коде. Как из функции вернуть два значения?
main(){ float x1=1,y1=1; float x2=5,y1=30; float x3=9.5,y1=13; VerPar(x1,y1,x2,y2,x3,y3) printf("x0=%f y0=%f", ???) }
предварительно так, но компилятору не нравится что перед символом & нехватает ; ,
int VerPar(float x1,float y1,float x2,float y2,float x3,float y3,float &X,float &Y ) { // 1(1, -2) 2(-1, 6) 3(2, 3) -> A=3 B=-4 C=-1 // 1(1, 0) 2(-1, -4) 3(2, -7) -> A=3 B=2 C=1 float A,B,C; //A A=(y3-( (x3*(y2-y1)+x2*y1-x1*y2) / (x2-x1))) /(x3*(x3-x1-x2)+x1*x2); printf("A=%f ",A); //B B= (y2-y1)/(x2-x1) - A*(x1+x2); printf("B=%f ",B); //C C= ( (x2*y1-x1*y2) / (x2-x1) )+A*x1*x2; printf("С=%f /n",С); }
У меня не получилось работать с указателями. Пришлось объявлять глобальные переменные. Просьба проверить работает ли алгоритм на произвольных данных. Подскажите, как можно возвращать из функции несколько значений?
#include <stdio.h> #include <stdlib.h> float x0,y0; void VerPar(float x1,float y1,float x2,float y2,float x3,float y3) { // 1(1, -2) 2(-1, 6) 3(2, 3) -> A=3 B=-4 C=-1 // 1(1, 0) 2(-1, -4) 3(2, -7) -> A=3 B=2 C=1 float A,B,C; A=(y3-( (x3*(y2-y1)+x2*y1-x1*y2) / (x2-x1))) /(x3*(x3-x1-x2)+x1*x2); printf("A=%f ",A); B= (y2-y1)/(x2-x1) - A*(x1+x2); printf("B=%f ",B); C= ( (x2*y1-x1*y2) / (x2-x1) )+A*x1*x2; printf("C=%f \n",C); x0= -(B/(2*A)); y0= - ( (B*B-4*A*C) / (4*A) ); } int main() { VerPar(-1,2,1,2,2,5); // вершина (0;1) printf("x0=%f ",x0); printf("y0=%f \n",y0); VerPar(-6,-6,-4,0,2,-6); // вершина (-2;2) printf("x0=%f ",x0); printf("y0=%f \n",y0); return 0; }
Решение задачи: «Найти координаты вершины параболы по трем заданым точкам»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> void VerPar(float *x0,float *y0, float x1,float y1,float x2,float y2,float x3,float y3) { float A,B,C; A=(y3-( (x3*(y2-y1)+x2*y1-x1*y2) / (x2-x1))) /(x3*(x3-x1-x2)+x1*x2); printf("A=%f ",A); B= (y2-y1)/(x2-x1) - A*(x1+x2); printf("B=%f ",B); C= ( (x2*y1-x1*y2) / (x2-x1) )+A*x1*x2; printf("C=%f \n",C); *x0= -(B/(2*A)); *y0= - ( (B*B-4*A*C) / (4*A) ); } int main() { float x0,y0,x1,y1,x2,y2,x3,y3; while(1) { printf("Input 3 points\n"); printf ( "x1= " ), scanf ("%f",&x1); printf ( "y1= " ), scanf ("%f",&y1); printf ( "x2= " ), scanf ("%f",&x2); printf ( "y2= " ), scanf ("%f",&y2); printf ( "x3= " ), scanf ("%f",&x3); printf ( "y3= " ), scanf ("%f",&y3); VerPar(&x0,&y0,x1,y1,x2,y2,x3,y3); printf("x0=%f ",x0); printf("y0=%f \n",y0); } return 0; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д