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

Тема в разделе "C/C++/C#", создана пользователем Nikols, 28 дек 2010.

  1. Nikols

    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;
    }
     
  2. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    Мне кажется тут чего-то не хватает. Чего именно сам думай.

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

    Rififi Гость

    Nikols

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

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

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    Код (C++):
    #define cyrOut(_string_) CharToOem(_string_,szStr);cout << szStr // макро для вывода русских букв
    Так дела не делаются. Перенеси комментарий на строку выше.
    Поставь точку с запятой в конце строки с #define, хотя если ты перенесешь комментарий то это будет и не обязательно.
     
  5. Nikols

    Nikols Гость

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

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    Меняй на:
    Код (C++):
    #define cyrOut(_string_) CharToOem(_string_,szStr); cout << szStr;
    И не забудь точку с запятой в конце.

    Добавлено: Nikols
    А просто:
    Код (C++):
    cout << _string_;
    Не по-русски текст выводит?
     
  7. Nikols

    Nikols Гость

    после cout << _string_; стал иероглифы выдавать.
     
  8. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
     
Загрузка...

Поделиться этой страницей