Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <vector>
- #include <cstdlib>
- #include <string>
- using namespace std;
- typedef struct
- {
- int x;
- int y;
- }punkt;
- vector <punkt> wczytaj_z_pliku();
- void dodaj_do_kontenera(vector <punkt> &kontener, punkt roboczy);
- int policz_wyznacznik(punkt pierwszy, punkt drugi, punkt trzeci);
- string okresl_strone(int wyznacznik);
- string okresl_wzajemne_polozenie( string pierwszy, string drugi, int &ktora_linia );
- int main()
- {
- vector <punkt> wszystkie;
- int wyznaczniki[2];
- string strony[2];
- punkt podstawowe[2];
- int ktora_linia = 0;
- string odpowiedz;
- wszystkie = wczytaj_z_pliku();
- for(int i = 0; i < wszystkie.size(); i = i + 4)
- {
- wyznaczniki[0] = policz_wyznacznik( wszystkie[i], wszystkie[i+1], wszystkie[i+2] );
- wyznaczniki[1] = policz_wyznacznik( wszystkie[i], wszystkie[i+1], wszystkie[i+3] );
- strony[0] = okresl_strone( wyznaczniki[0] );
- strony[1] = okresl_strone( wyznaczniki[1] );
- odpowiedz = okresl_wzajemne_polozenie( strony[0], strony[1], ktora_linia );
- cout<<"Omawiane proste, skladaja sie z punktow: ";
- for(int j = i; j < i + 4; j++)
- {
- cout<<" x: " << wszystkie[j].x << " y: " << wszystkie[j].y << "\t";
- }
- cout<<endl;
- cout<<odpowiedz<<endl;
- strony[0].clear(); strony[0].resize(2);
- strony[1].clear(); strony[1].resize(2);
- }
- return 0;
- }
- vector <punkt> wczytaj_z_pliku()
- {
- vector <punkt> roboczy;
- fstream plik;
- string linia, bufor;
- int j = 0, buf, id = 0;
- punkt roboczy_struktura;
- plik.open("plik.txt", ios::in);
- while(!plik.eof())
- {
- getline(plik, linia);
- for(int i = 0; i < linia.size(); i++)
- {
- while(linia[i] != ' ' && linia[i] != NULL)
- {
- bufor[j] = linia[i];
- i++; j++;
- }
- switch(id)
- {
- case 0: roboczy_struktura.x = atoi(bufor.c_str());id++; break;
- case 1: roboczy_struktura.y = atoi(bufor.c_str());id++; break;
- }
- if(id > 1){ id = 0; dodaj_do_kontenera(roboczy, roboczy_struktura); }
- bufor.clear(); bufor.resize(2); j = 0;
- }
- }
- plik.close();
- return roboczy;
- }
- void dodaj_do_kontenera(vector <punkt> &kontener, punkt roboczy)
- {
- kontener.push_back(roboczy);
- }
- int policz_wyznacznik(punkt pierwszy, punkt drugi, punkt trzeci)
- {
- int wynik[2];
- wynik[0] = pierwszy.x * drugi.y + drugi.x * trzeci.y + trzeci.x * pierwszy.y;
- wynik[1] = drugi.y * trzeci.x + trzeci.y * pierwszy.x + pierwszy.y * drugi.x;
- return wynik[0] - wynik[1];
- }
- string okresl_strone(int wyznacznik)
- {
- if(wyznacznik > 0)
- {
- return "lewa";
- }
- else if(wyznacznik < 0)
- {
- return "prawa";
- }
- else
- {
- return "wspolniowe";
- }
- }
- string okresl_wzajemne_polozenie( string pierwszy, string drugi, int &ktora_linia )
- {
- if(pierwszy.size() == 4 && drugi.size() == 5 || pierwszy.size() == 5 && drugi.size() == 4)
- {
- return "Proste przecinaja sie";
- }
- else if(pierwszy.size() == 4 && drugi.size() == 4 || pierwszy.size() == 5 && drugi.size() == 5)
- {
- return "Proste nie przecinaja sie";
- }
- else
- {
- return "Proste sa wspolniowe";
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment