👤

Problema :
Se considera un sir de n puncte in plan, pentru fiecare cunoscindu-se coordonatele intregi (x,y).
Datele de inrare se citesc din fisierul puncte.in.
Realizati un program care determina si afiseaza in fisierul de iesire puncte.out numarul maxim de puncte coliniare situate pe o dreapta paralela cu axa OX.

Va rog frumos daca o rezolvati sa mi si explicati putin.Multumesc anticipat.


Răspuns :

#include <iostream>
#include <fstream>
using namespace std;
int coliniar(int, int, int, int, int, int);
int main()
{
 ifstream get("puncte.in");
 ofstream out("puncte.out");
 int x1, y1, x2, y2, x3, y3, n, s = 0, j = 1;
 cout << "Introdu numarul de puncte:";
 cin >> n;
 int a[100];
 for (int i = 1; i <= 2*n; i++)
 {
  get >> a[i];
 }
 while (j <= 2 * n)
 {
  x1 = a[j];
  y1 = a[j + 1];
  x2 = a[j + 2];
  y2 = a[j + 3];
  x3 = a[j + 4];
  y3 = a[j + 5];
  if (!coliniar(x1, y1, x2, y2, x3, y3))
   s++;
  j *=6+1;
 }
 out << s;
 get.close();
 out.close();
 return 0;
}
int coliniar(int x1, int y1, int x2, int y2, int x3, int y3)
{
 if ((x1*y2 + y1*x3 + y3*x2) - (y2*x3 + y3*x1 + x2*y1))
  return 1;
 else
  return 0;
}
/*Am folosit formula cu determinant pentru a afla daca 3 puncte in plan sunt coliniare:

|x1 y1 1|
|x2 y2 1|  =0
|x3 y3 1|

In program am implementat-o cu regula triunghiului.*/
Vezi imaginea DACTYLS
Vă mulțumim pentru vizita pe site-ul nostru dedicat Informatică. Ne dorim ca informațiile furnizate să vă fi fost utile. Dacă aveți întrebări sau aveți nevoie de suport suplimentar, nu ezitați să ne contactați. Revenirea dumneavoastră ne bucură, iar pentru acces rapid, adăugați-ne la favorite!


Ze Lesson: Alte intrebari