немогу понять где у меня ошибки в проге

  • Автор темы Nikols
  • Дата начала
N

Nikols

<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">прога</div></div><div class="sp-body"><div class="sp-content">#include "stdafx.h"
#include <iostream>
#include <math.h>
#include <windows.h>
#include <conio.h>

using namespace std;

#define cyrOut(_string_) CharToOem(_string_,szStr);cout << szStr // макро для вывода русских букв

char szStr[512];

struct point {
double x, y;
};

struct line {
double a, b, c;
};

void AddLine(double a, double b, double c, line & aline)
{ aline.a = a; aline.b = b; aline.c = c; }

const double EPS = 1e-9;

double det (double a, double b, double c, double d) {
return a * d - b * c;
}

bool intersect (line m, line n, point & res) {
double zn = det (m.a, m.b, n.a, n.B);
if (fabs (zn) < EPS)
return false;
res.x = - det (m.c, m.b, n.c, n.B) / zn;
res.y = - det (m.a, m.c, n.a, n.c) / zn;
return true;
}

/*
bool parallel (line m, line n) {
return fabs (det (m.a, m.b, n.a, n.B)) < EPS;
}

bool equivalent (line m, line n) {
return fabs (det (m.a, m.b, n.a, n.B)) < EPS
&& fabs (det (m.a, m.c, n.a, n.c)) < EPS
&& fabs (det (m.b, m.c, n.b, n.c)) < EPS;
}
*/

int main(int argc, char* argv[])
{
int i,j,k,N,Count[10];
double A,B,C;
int Intersection[10][10];
struct line ArrayLine[10];
struct point aPoint;


cyrOut("Введите количество прямых: ");cout<<endl;
cin>>N;
for (i=0;i<N;i++)
{
cyrOut("Прямая ");cout<<i+1<<" A,B,C"<<endl;
cin>>A>>B>>C;
AddLine(A,B,C,ArrayLine);
}

/* Это в качетве примера
N = 5;
AddLine (10,10,10,ArrayLine[0]);
AddLine (20,10,10,ArrayLine[1]);
AddLine (10,20,10,ArrayLine[2]);
AddLine (10,10,20,ArrayLine[3]);
AddLine (20,10,20,ArrayLine[4]);
*/

for (i=0;i<N;i++)
{
for(j=i+1;j<N;j++)
{
if (intersect(ArrayLine,ArrayLine[j],aPoint))
{
Intersection[j] = 1;
}
else
{
Intersection[j] = 0;
}
}
}

for(k=0;k<N;k++)
{
Count[k] = 0;
for(i=k+1;i<N;i++) { Count[k] += Intersection[k]; }
for(i=0;i<k;i++) { Count[k] += Intersection[k]; }
}

cout<<endl;

// Найдем максимум
int max = Count[0];
for(k=1;k<N;k++)
{ if (Count[k] > max){max=Count[k];} }

cyrOut("Введены прямые");cout<<endl;
for (i=0;i<N;i++)
{
cout<<ArrayLine.a<<"*X+"<<ArrayLine.b<<"*Y+"<<ArrayLine.c<<"=0 ";
cyrOut("Количество пересечений: ");
cout<<Count<<endl;
}

// Найти все максимумы , если их несколько
for(k=0;k<N;k++)
{
if (Count[k] == max)
{
cyrOut("Прямая ");cout<<k+1; cyrOut(" имеет максимальное количество пересечений ");cout<<Count[k]<<endl;
}
}

getch();
return 0;
}
Еще возможно у меня не правильно настроен VS, потому что иногда бывает запускаются проги, а иногда нет.
 
M

Myc0n

<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">"Попробуй это"</div></div><div class="sp-body"><div class="sp-content">#include "stdafx.h"
#include <iostream>
#include <math.h>
#include <windows.h>
#include <conio.h>

using namespace std;

#define cyrOut(_string_) CharToOem(_string_,szStr);cout << szStr // макро для вывода русских букв

char szStr[512];

struct point {
double x, y;
};

struct line {
double a, b, c;
};

void AddLine(double a, double b, double c, line & aline)
{ aline.a = a; aline.b = b; aline.c = c; }

const double EPS = 1e-9;

double det (double a, double b, double c, double d) {
return a * d - b * c;
}

bool intersect (line m, line n, point & res) {
double zn = det (m.a, m.b, n.a, n.b); //Fixed
if (fabs (zn) < EPS)
return false;
res.x = - det (m.c, m.b, n.c, n.b) / zn; //Fixed
res.y = - det (m.a, m.c, n.a, n.c) / zn;
return true;
}

/*
bool parallel (line m, line n) {
return fabs (det (m.a, m.b, n.a, n.) < EPS;
}

bool equivalent (line m, line n) {
return fabs (det (m.a, m.b, n.a, n.) < EPS
&& fabs (det (m.a, m.c, n.a, n.c)) < EPS
&& fabs (det (m.b, m.c, n.b, n.c)) < EPS;
}
*/

int main(int argc, char* argv[])
{
int i,j,k,N,Count[10];
double A,B,C;
int Intersection[10][10];
struct line ArrayLine[10];
struct point aPoint;


cyrOut("Введите количество прямых: ");cout<<endl;
cin>>N;
for (i=0;i<N;i++)
{
cyrOut("Прямая ");cout<<i+1<<" A,B,C"<<endl;
cin>>A>>B>>C;
AddLine(A,B,C,ArrayLine);
}

/* Это в качетве примера
N = 5;
AddLine (10,10,10,ArrayLine[0]);
AddLine (20,10,10,ArrayLine[1]);
AddLine (10,20,10,ArrayLine[2]);
AddLine (10,10,20,ArrayLine[3]);
AddLine (20,10,20,ArrayLine[4]);
*/

for (i=0;i<N;i++)
{
for(j=i+1;j<N;j++)
{
if (intersect(ArrayLine,ArrayLine[j],aPoint))
{
Intersection[j] = 1;
}
else
{
Intersection[j] = 0;
}
}
}

for(k=0;k<N;k++)
{
Count[k] = 0;
for(i=k+1;i<N;i++) { Count[k] += Intersection[k]; }
for(i=0;i<k;i++) { Count[k] += Intersection[k]; }
}

cout<<endl;

// Найдем максимум
int max = Count[0];
for(k=1;k<N;k++)
{ if (Count[k] > max){max=Count[k];} }

cyrOut("Введены прямые");cout<<endl;
for (i=0;i<N;i++)
{
cout<<ArrayLine.a<<"*X+"<<ArrayLine.b<<"*Y+"<<ArrayLine.c<<"=0 ";
cyrOut("Количество пересечений: ");
cout<<Count<<endl;
}

// Найти все максимумы , если их несколько
for(k=0;k<N;k++)
{
if (Count[k] == max)
{
cyrOut("Прямая ");cout<<k+1; cyrOut(" имеет максимальное количество пересечений ");cout<<Count[k]<<endl;
}
}

getch();
return 0;
}
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!