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ăspunsuri la întrebare
Răspuns de
2
#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.*/
#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.*/
Anexe:
Infoman:
Multumesc.M-a ajutat mult.
{
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++;
Alte întrebări interesante
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
9 ani în urmă
Fizică,
9 ani în urmă
Matematică,
9 ani în urmă
Limba română,
9 ani în urmă