#27 reciproke
Prosímtě mohli by jsme komunikovat soukromě,Např pomocí Facebooku či něčeho takového?Dozvěděl jsem se že mi pár lidí nahlíží do vlákna a nemám zájem o duplikaci kterou byl u nás problém v minulém zadání úkolu.
díky
Ještě jsem rozdělil zvlášť ty podmínky porovnávánm zvlášť zda je průsečík s osou X a s osou Y
bool osaY(int x1, int x2)
{
//vypocet pruseciku y
if (x1>0 && x2<0)
return true;
else if (x1<0 && x2>0)
return true;
else
return false;
}
bool osaX(int y1, int y2)
{
//vypocet pruseciku X
if (y1>0 && y2<0)
return true;
else if(y1<0 && y2>0)
return true;
else
return false;
}
a zde jdou pak podmínky pro volání funkce pro výpočet průsečíků
if(osaY(poleX[index],poleX[index-1]) == true)
cout<<vypocetPrusecik(poleX[index],poleX[index-1],poleY[index],poleY[index-1]);
else if (osaX(poleY[index],poleY[index-1])==true)
cout<<vypocetPrusecik(poleX[index],poleX[index-1],poleY[index],poleY[index-1]);
else if ((osaX(poleY[index],poleY[index-1])==true) &&(osaY(poleY[index],poleY[index-1])==true))
cout<<vypocetPrusecik(poleX[index],poleX[index-1],poleY[index],poleY[index-1]);
else
cout<<"body nemaji prusecik";
#10 reciproke
ještě jsem předělal tu funkci na porovnávání na bool:
#include <stdio.h>
#include <iostream>
using namespace std;
float vypocetPrusecik(float x1,float x2,float y1, float y2)
{
float A,B,prusecik;
A = (y2-y1)/(x2-x1);
B = y2-(x2)*A;
prusecik= -B/A;
return prusecik;
}
bool kvadrant(float x1, float x2, float y1, float y2)
{ //vypocet pruseciku y
if ((x1>0 && x2<0)││(x1<0 && x2>0))
return true;
//vypocet pruseciku x
else if ((y1>0 && y2<0)││(y1<0 && y2>0))
return true;
else
return false;
}
int main(int argc, char **argv)
{
float x,y;
float poleX[5];
float poleY[5];
//double poleKVA[4];
int pocitadlo =1;
int index = 0;
cout << "\t Program pro vypocet pruseciku s osami"<<endl;
do
{
cout<<"Zadejte souradnice "<<pocitadlo<<".bodu"<<endl;
cout<<"Souradnice x: ";
cin>>x;
poleX[index]=x;
cout<<"souradnice y: ";
cin>>y;
poleY[index]=y;
kvadrant(poleX[index],poleX[index-1],poleY[index],poleY[index-1]);
if (kvadrant == true)
{
cout<<vypocetPrusecik(poleX[index],poleX[index-1],poleY[index],poleY[index-1]);
}
else
{
cout<<"body nemaji prusecik";
}
// průnik s osou y
pocitadlo++;
index++;
}
while ((x!=0)&&(y!=0));
return 0;
}
#10 reciproke
Nakonec jsem to začal dělat přes 1D pole. Chtěl bych se zeptat na pár rad, jak zapsat podmínky aby, když potřebuju pracovat s floatama nebo doublema. A zda je struktura prozatím správně napsaná.
Funckci vypocetPrusecik jsou předávány parametry postupně z poleX a z poleY v každém cyklu na základě funkce která mi porovná zda mohou mít průsečík ( ty podmínky jsem nakonec zapsal jak jsi mi radil - neporovnávám 4 kvadranty ale jen 2 abych se nedostal do problému že mi úsečka vypočte průsečík s osou i když budou ve stejném kvadrantu)
funkce kvadrant by měla sloužit jak jsem psal výše čistě jen pro porovnávání souřadnic zda jsou ve stejném kvadrantu. Nevím však jak to napsat když nechci int ale double (nebo float)
#include <stdio.h>
#include <iostream>
using namespace std;
double vypocetPrusecik(float x1,float x2,float y1, float y2)
{
float A,B,prusecik;
A = (y2-y1)/(x2-x1);
B = y2-(x2)*A;
prusecik= -B/A;
return prusecik;
}
void kvadrant(float x1, float x2, float y1, float y2)
{ //vypocet pruseciku y
if ((x1>0 && x2<0)││(x1<0 && x2>0))
vypocetPrusecik(poleX[index],poleX[index-1],poleY[index],poleY[index-1]);
//vypocet pruseciku x
else if ((y1 && y2)││(y1<0&& y2>0))
vypocetPrusecik(poleX[index],poleX[index-1],poleY[index],poleY[index-1]);
else
cout << "Body nemaji prusecik"<<endl;
}
int main(int argc, char **argv)
{
float x,y;
float poleX[5];
float poleY[5];
//double poleKVA[4];
int pocitadlo =1;
int index = 0;
cout << "\t Program pro vypocet pruseciku s osami"<<endl;
do
{
cout<<"Zadejte souradnice "<<pocitadlo<<".bodu"<<endl;
cout<<"Souradnice x: ";
cin>>x;
poleX[index]=x;
cout<<"souradnice y: ";
cin>>y;
poleY[index]=y;
kvadrant(poleX[index],poleX[index-1],poleY[index],poleY[index-1]);
//cout<<"Prusecik bodu"<<pocitadlo<<"a "<< pocitadlo-1<<"je:"prusecik<<endl;
// průnik s osou y
pocitadlo++;
index++;
}
while ((x!=0)&&(y!=0));
return 0;
}
#8 reciproke
No dostal jsem prodloužení termínu odevzdání tohoto projektu, tak mě napadlo jestli to ještě nepředělat a zda by nebylo elegantnější udělat to přes struktury.
jeden bod = jedna struktura s parametrama x souřadnice a y souřadnice. Co si o to myslíš?
děkuji za přechozí odpovědi
Začal jsem nějakým způsobem kodit ten program ale jsem v koncích:
používám 2 jednorozměrná statická pole: poleX pro uložení Xových souřadnic a poleY pro uložení Y souřadnic.
Mám napsané zadáváni souřadnic.Pokud zadám pro bod X souřadnici 0 a pro Y souřadnici 0 tak zadáváni bodů skončí. Výpočet pro průsečíky už mám na papíře vymyšlený. Teď potřebuju porovnávat jestli jsou dva po sobě jdoucí body ( ve stejných kvadrantech,pokud ano nebudou mít žádný průsečík protože se omezím na úsečku z přímky).Můžete mi poradit jak to zapíšu?
#include <stdio.h>
#include <iostream>
using namespace std;
int main(int argc, char **argv)
{
float x,y;
float poleX[5];
float poleY[5];
int pocitadlo =1;
int index = 0;
int pocitadlo2 =0;
cout << "\t Program pro vypocet pruseciku s osami"<<endl;
do
{
cout<<"Zadejte souradnice "<<pocitadlo<<".bodu"<<endl;
cout<<"Souradnice x: ";
cin>>x;
poleX[index]=x;
cout<<"souradnice y: ";
cin>>y;
poleY[index]=y;
pocitadlo++;
index++;
}
while ((x!=0)&&(x!=0));
return 0;
}
Dobrý den,
mohl bych se zeptat jak by se dal řešit tento program?
Zde je zadání:
- chování programu pro zadané body bude stejné jako v níže uvedenýcg příkladech
- program bude od uživatele brát zadávané souřadnice bodu, dokud uživatel nezadá bod [0,0], tím program skončí a vypíše se lehká statistika (mezi jakými body byly jaké průsečíky s jakýma osama), viz. příklady
- uživatel zadává souřadnice bodů [x,y] a program mu postupně píše souřadnice bodů průniku os a spojnice předchoziho a aktuálního bodu
- program bude obsahovat alespoň 3 funkce (minimálně main a 2 dalsi)
- nemusíte testovat vstup (např. ze je zadané číslo)
- jako průsečík s osou neuvažujte případy dotyku s osou, tj. např. [1,1] - [0,5]
Příklady:
cout << points << ". bod souradnice " << endl << "x = ";
cin >> xnew;
cout << "y = ";
cin >> ynew;
1. bod souradnice
Program hledajici pruseciky spojnic bodu s osami.
++++
priklad behu - kdyz jde spojnice po ose a dalsi
1. bod souradnice
x = 1
y = 0
2. bod souradnice
x = 3
y = 0
3. bod souradnice
x = -2
y = 0
# y prusecik [0,0]
4. bod souradnice
x = 3
y = -5
# y prusecik [0,-2]
5. bod souradnice
x = -2
y = 4
# y prusecik [0,0.4]
# x prusecik [0.222222,0]
6. bod souradnice
x = 0
y = 2
7. bod souradnice
x = 0
nebo:
Program hledající průsečíky spojnic bodů s osami.
++++
1. bod souradnice
x = -1
y = 2
2. bod souradnice
x = 5
y = -2
# y prusecik [0,1.33333]
# x prusecik [2,0]
3. bod souradnice
x = 0
y = 8
# x prusecik [4,0]
4. bod souradnice
x = -2
y = 3
5. bod souradnice
x = 4
y = -3
# y prusecik [0,1]
# x prusecik [1,0]
6. bod souradnice
x = 0
y = 0
++++
x pruseciky : 1-2[2,0] 2-3[4,0] 4-5[1,0]
y pruseciky : 1-2[0,1.33333] 4-5[0,1]
Pocet zadanych bodu : 6
y = 0
++++
x pruseciky : 4-5[0.222222,0]
y pruseciky : 2-3[0,0] 3-4[0,-2] 4-5[0,0.4]
Pocet zadanych bodu : 7