proszę o pomoc napisałem program w c++ ale wyznacza on tylko ilość punktów przecięcia, ale nie wyświetla współrzędnych tych punktów.
napisać funkcję która określi liczbę punktów przecięcia paraboli y=ax^2+bx+c z prostą y=mx+k i wyznaczy ich współrzędne, a następnie przekaże te informacje do programu głównego. zastosować wskaźniki.
#include <iostream>
#include <cmath>
using namespace std;
void licz(float a, float b, float c, float m, float k, float *liczba_p, float *x1, float *x2, float *y1, float *y2)
{
float delta, licz_p, licz_x1, licz_x2, licz_y1, licz_y2;
delta=(b-m)*(b-m)-4*a*(c-k);
if ((a==0)&&(b==m)&&(c==k)) licz_p=-1;
else if ((a==0)&&(b==m)&&(c!=k)) licz_p=0;
else if ((a==0)&&(b!=m)) licz_p=1;
else if ((a!=0)&&(delta>0)) licz_p=2;
else if((a!=0)&&(delta==0)) licz_p=1;
else licz_p=0;
if ((a=0)&&(licz_p=1))
{
licz_x1=(k-c)/(b-m);
licz_y1=m*licz_x1+k;
}
if ((a!=0)&&(licz_p=2))
{
licz_x1=-(b-m)-sqrt(delta)/2*a;
licz_x2=-(b-m)+sqrt(delta)/2*a;
licz_y1=m*licz_x1+k;
licz_y2=m*licz_x2+k;
}
if ((a!=0)&&(licz_p=1))
{
licz_x1=-(b-m)/2*a;
licz_y1=m*licz_x1+k;
}
*liczba_p=licz_p;
*x1=licz_x1;
*x2=licz_x2;
*y1=licz_y1;
*y2=licz_y2;
cout<<"liczba punktow= "<<*liczba_p<<endl;
}
int main()
{
float l1,p,a,b,c,m,k,liczb_p,x1,x2,y1,y2;
cout<<"Podaj a ";
cin>>a;
cout<<"Podaj b ";
cin>>b;
cout<<"Podaj c ";
cin>>c;
cout<<"Podaj m ";
cin>>m;
cout<<"Podaj k ";
cin>>k;
licz(a, b, c, m, k, &liczb_p, &x1, &x2, &y1, &y2);
p=liczb_p;
if(p=0) {cout<<"Brak rozwiazan"<<endl;}
if(p=1)
{
cout<<"Jedno rozwiazanie"<<endl;
cout<<"x= "<<x1<<" , y= "<<y1<<endl;
}
if(p=2)
{
cout<<"Dwa rozwiazania"<<endl;
cout<<"x1= "<<x1<<" , y1= "<<y1<<endl;
cout<<"x2= "<<x2<<" , y2= "<<y2<<endl;
}
if(p=-1) {cout<<"nieskonczenie wiele rozwiazan"<<endl;}
system("PAUSE");
return 0;
}
" Life is not a problem to be solved but a reality to be experienced! "
© Copyright 2013 - 2024 KUDO.TIPS - All rights reserved.
moim zdaniem zdeczka przekombinowales ten program, tyle warunkow a to mozna matematycznie rozwiazac, jak musisz miec funkcje i wsk to napisz - przerobie
To moj program ktory kiedys na lekcji zrobilem
#include <iostream>
#include <cmath>
#include <cstdio>
using namespace std;
int main()
{
float a,b,c,m,k,delta;
cout<<"Podaj a ";
cin>>a;
while (a==0)
{
cout<<"Podaj dodatnie a ";
cin>>a;
}
cout<<"Podaj b ";
cin>>b;
cout<<"Podaj c ";
cin>>c;
cout<<"Podaj m ";
cin>>m;
cout<<"Podaj k ";
cin>>k;
cout<<"wzory funkcji : \ny="<<a<<"x^2+"<<b<<"x+"<<c<<endl;
cout<<"y="<<m<<"x+"<<k<<endl;
b=b-m;
c=c-k;
delta=(b*b)-(4*a*c);
cout<<"delta= "<<delta<<endl;
if (delta>0)
{
float x1,x2,y1,y2;
x1=(-b-sqrt(delta))/(2*a);
x2=(-b+sqrt(delta))/(2*a);
y1=m*x1+k;
y2=m*x2+k;
cout<<"Wykresy maja dwa punkty przeciecia : ("<<x1<<","<<y1<<")("<<x2<<","<<y1<<")";
}
if (delta==0)
{
float x0,y0;
x0=-b/2*a;
y0=m*x0+k;
cout<<"Wykresy maja jeden punkt przeciecia : ("<<x0<<","<<y0<<")";
}
if (delta<0)
{
cout<<"\nWykresy nie przecinaj sie ";
}
cin.ignore();
getchar();
return 0;
}