• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

Ошибки в тексте программы

  • Автор темы 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;
}
 
L

lazybiz

#define cyrOut(_string_) CharToOem(_string_,szStr);cout << szStr // макро для вывода русских букв
Мне кажется тут чего-то не хватает. Чего именно сам думай.

И еще:
1. Тема должна быть в разделе Visual C++.
2. Нужно использовать тэги, соответствующие коду.
3. Необходимо понятным языком описывать проблему а не так как ты.
 
R

Rififi

Nikols

Ошибки в тексте программы, VS выдает ошибки в программе, я не могу понять где именно

судя по симптомам, у тебя поддельный Visual C++.
Скорее всего китайский, типа как телефон Nokla. Сам знаешь, какое у китайских товаров качество - где-то недокрутили, где-то недоделали... так и здесь. Китайский VC++ не пишет номера строк, где произошла ошибка! Выкидывай скорее это барахло и скачай бесплатную Visual Studio Express напрямую с сервера Microsoft. Вот это настоящее американское качество - чётко показывает все ошибочные номера строк.
 
L

lazybiz

C++:
#define cyrOut(_string_) CharToOem(_string_,szStr);cout << szStr // макро для вывода русских букв
Так дела не делаются. Перенеси комментарий на строку выше.
Поставь точку с запятой в конце строки с #define, хотя если ты перенесешь комментарий то это будет и не обязательно.
 
N

Nikols

Тогда такой вопрос, как можно эту строчку заменить на более удобный вариант ??? или вобще как сделать можно без макроса?
 
L

lazybiz

Меняй на:
C++:
#define cyrOut(_string_) CharToOem(_string_,szStr); cout << szStr;
И не забудь точку с запятой в конце.

Добавлено: Nikols
А просто:
C++:
cout << _string_;
Не по-русски текст выводит?
 
Мы в соцсетях:

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