Советы, трюки и секреты для Blogger.com блоггеров. Все для Blogspot. Советы, трюки и секреты для Blogger.com блоггеров. Все для Blogspot.

Одномерные и двумерные массивы (C++)

13 октября 2010, 02:12

На плоскости заданы множество точек A и точка d вне его. Подсчитать количество различных неупорядоченных троек точек a,b,c из A, таких что четырехугольник abcd является параллелограммом.

#include <iostream>
#include <iomanip>
#include <math.h>
using namespace std;
void main() {

//Zadajem peremennie

int razA, i, j, k;
const int n=2;
double d[n];
double kol, st1x, st1y, st2x, st2y, st3x, st3y, st4x, st4y;

// Vvod nachalnih dannih i sozdanie neobhodimih matric

cout << "Vvedite razmer mnogestva A: "; cin >> razA;

//Sozdaem matricu dlja mnogestva A
double **mA=new double *[razA];
for(i=0; i<razA; i++) mA[i]=new double[n];

//Vvodim tochki mnogestva
cout << "\nVvedite koordinati [x,y] tochek mnogestva A:\n";
for (i=0; i<razA; i++) {
cout << " " << i+1 << "-i element mnogestva: "; cin >> mA[i][0] >> mA[i][1];
}

//Zadaem tochku 'd', ne vhodjawuju vo mnogestvo A
metka:
cout << "\nVvedite koordinati tochki 'd' na ploskosti:";
cout << "\n koordinata x: "; cin >> d[0];
cout << " koordinata y: "; cin >> d[1]; 

// Proverka tochki d
for (i=0; i<razA; i++)
if (mA[i][0]==d[0])
if (mA[i][1]==d[1]) {
cout << "\n Tochka 'd' popadaet vo mnogestvo A \n";
goto metka;
}

// Poisk parallelogrammov

kol=0;

//Cikli perebora tochek
for (i=0; i<razA; i++)
for (j=0; j<razA; j++) 
for (k=0; k<razA; k++) {

//Proverka ravenstva tochek samim sebe i perexod k sledujuwemu ciklu pri etom
if ((mA[i][0]==mA[j][0])&&(mA[i][1]==mA[j][1])) continue;
if ((mA[k][0]==mA[j][0])&&(mA[k][1]==mA[j][1])) continue;
if ((mA[i][0]==mA[k][0])&&(mA[i][1]==mA[k][1])) continue;

//Raschet raznic storon
st1x=mA[i][0]-d[0]; st1y=mA[i][1]-d[1];
st2x=mA[j][0]-mA[k][0]; st2y=mA[j][1]-mA[k][1];
st3x=mA[i][0]-mA[j][0]; st3y=mA[i][1]-mA[j][1];
st4x=d[0]-mA[k][0]; st4y=d[1]-mA[k][1];

//Proverka uslovija ravenstva storon
if ( (st1x==st2x)&&(st1y==st2y)&&(st3x==st4x)&&(st3y==st4y) ) 
{
kol++;
if ((kol/2)!=int(kol/2)) {
cout << "\nNajden parallelogramm c tochkami: \n";
cout << "a=" << mA[i][0] << "," << mA[i][1] << "\n";
cout << "b=" << mA[j][0] << "," << mA[j][1] << "\n";
cout << "c=" << mA[k][0] << "," << mA[k][1] << "\n";
cout << "d=" << d[0] << "," << d[1] << "\n";
}
}
}

// Vivod na ekran rezultata

if (kol!=0) cout << "\nVsego najdeno " << kol/2 << " parallelogramma(ov)";
else cout << "\n Parallelogrammov ne najdeno";



}

Одномерные и двумерные массивы (C++)