sto provando a fare un programma che legge una spezzata di 6 punti e verifica che 2 dei segmenti della spezzata siano // all'asse x e due // all'asse y
io l'ho svolto così,ma non sembra venire:
#include <iostream>
#include <math.h>
using namespace std;
const int N=6;
void leggiSpezzata(int spezzata[N][2]);
void stampaSpezzata(int spezzata[N][2]);
bool puntiUguali (int x, int y);
int paralleli ( int x, int y, int x1, int x2);
bool paralleli2 ( int spezzata[N][2]);
void leggiSpezzata (int spezzata[N][2]) {
int i,j;
for(i=0;i<N;i++) {
cout<<"inserisci le coordinate x ed y della spezzata numero "<<i+1<<": "<<endl;
for(j=0;j<2;j++) {
cin>>spezzata[i][j];
}
cout<<endl;
}
return;
}
void stampaSpezzata (int spezzata[N][2]) {
int i,j;
cout<<" la spezzata risulta essere " <<endl;
for (i=0;i<N;i++) {
for(j=0;j<2;j++) {
cout<<" "<<spezzata[i][j];
}
cout<<endl;
}
return;
}
int paralleli ( int x, int y, int x1, int y1) {
if( y==y1 ) {
return 4;
}
if ( x==x1) {
return 5;
}
}
bool paralleli2 ( int spezzata[N][2]) {
int i,j;
int contatore1=0;
int contatore2=0;
for(i=0;i<N-1;i++) {
if( paralleli(spezzata[i][0],spezzata[i][1],spezzata[i+1][0],spezzata[i+1][1]) ==4 ) {
contatore1++;
}
if( paralleli(spezzata[i][0],spezzata[i][1],spezzata[i+1][0],spezzata[i+1][1]) ==5 ) {
contatore2++;
}
}
if( contatore1== 2 && contatore2== 2) {
return true;
} else {
return false;
}
}
int main () {
int s[N][2];
leggiSpezzata(s);
cout<<endl;
stampaSpezzata(s);
if (paralleli2(s)) {
cout<< " la spezzata contiene due segmenti // all'asse x e due // all'asse y " <<endl;
} else {
cout<<" la spezzata non contiene due segmenti // all'asse x e due // all'asse y " <<endl;
}
system("pause");
}



Segnalibri