список списков. как мне это написать

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

  1. Inna1988

    Inna1988 Гость

    у меня есть структура линий и структура точек. мне нужно создать список, в котором будут 2 списка : один список будет по линиям- нужно добежать до последней линии. второй список будет с точками- нужно добежать до последних точек.

    это нужно для написания проги векторного редактора, а именно для рисования линий произвольной формы. у кого какие сообзажения по этому поводу , напишите , пожалуйста. я сама потом доразбираю)
     
  2. vital

    vital Больной Компом Детектед
    Команда форума Web Team

    Регистрация:
    29 янв 2006
    Сообщения:
    2.474
    Симпатии:
    27
    На дельфях подойдет? Ну не знаю я ваш билдер..
     
  3. ierofant

    ierofant Гость

    Я не совсем понял вас, но может быть вы хотите что-то вроде этого.

    Код (C++):
    class Points
    {
    public:
    Points (int _num_points) : num_points (_num_points), points (new double [_num_points * 2]){}
    ~Points (){delete [] points;}

    public:
    int get_num_points () const {return num_points;}
    void get_coordinate (int _pos, double &_x, double &_y) const
    {
    if (_pos < num_points)
    {
    _x = *(points + _pos * 2);
    _y = *(points + _pos * 2 + 1);
    }
    }
    void set_coordinate (int _pos, double _x, double _y)
    {
    if (_pos < num_points)
    {
    *(points + _pos * 2) = _x;
    *(points + _pos * 2 + 1) = _y;
    }
    }

    private:
    int num_points;
    double *points;
    };

    class Line
    {
    public:
    void set_coordinates (double _x1, double _y1, double _x2, double _y2)
    {
    x1 = _x1;
    y1 = _y1;
    x2 = _x2;
    y2 = _y2;
    }
    void draw (){ . . . .}

    private:
    double x1, y1, x2, y2;
    };

    class Polyline
    {
    public:
    Polyline (const Points &_points) : points (_points), lines (new Line [_points.get_num_points () - 1])
    {
    double x1, y1, x2, y2;
    for (int i = 0; i < get_num_lines (); i++)
    {
    points.get_coordinate (i * 2, x1, y1);
    points.get_coordinate (i * 2 + 1, x2, y2);
    lines [i].set_coordinates (x1, y1, x2, y2);
    }
    }
    ~Polyline (){delete [] lines;}

    public:
    Points get_points () const {return points;}
    int get_num_lines () const {return points.get_num_points () -1;}   
    Line* get_line (unsigned _ind)
    {
    Line *ret = NULL;
    if (_ind < get_num_lines ()) ret = &lines [_ind];
    return ret;
    }
    void draw () {for (int i = 0; i < get_num_lines (); i++) lines [i].draw ();}

    private:
    Points points;
    Line *lines;
    };
     
  4. Inna1988

    Inna1988 Гость

    спасибо большое я посмотрю и скажу чуть позже
     
  5. Inna1988

    Inna1988 Гость




    привет, а у тебя есть полная прога с exe посмотреть? так вроде то . но не уверенна

    пришли мне пожалуйста заархивированным файлом
     
  6. ierofant

    ierofant Гость

    Так я же это как пример набросал по твоему вопросу. Для линии произвольной формы Polyline. А полную программу с рисованием я уж не стал писать.
     
  7. Inna1988

    Inna1988 Гость



    ясно, молодец)

    так что бы мне тебе скинуть чтобы ты мне помог


    недоделанную программу могу выслать , ты бы мог посмотреть и попробывать разобраться.
     
  8. ierofant

    ierofant Гость

    Ну попробовать-то можно, давай!
     
  9. Inna1988

    Inna1988 Гость



    visual studio 2003, любая другая но старше тоже подойдёт. задавай вопросы.

    посмотри как работает прога. мне нужно что то дописать чтобы рисовали кривые линии с помощью списка . сама не понимаю что говорю))) но все таки)
     

    Вложения:

  10. DarkKnight

    DarkKnight Well-Known Member
    C\C++ Team

    Регистрация:
    1 авг 2010
    Сообщения:
    653
    Симпатии:
    0
    Инна, а кол-во точек и количество линий различно??? Или все же одинаково?
     
  11. Inna1988

    Inna1988 Гость



    есть линия у которой начальная точка состоит из 2 координат x1,y1 и конечная точка состоит из координат x2,y2. у меня в проге массивы x1[100],x2[100],y1[100],y2[100]
     
  12. ierofant

    ierofant Гость

    Всё серьёзно усложняется тем, что я линуксойд ;)
     
  13. Inna1988

    Inna1988 Гость


    ясненько))) спасибо)
     
  14. DarkKnight

    DarkKnight Well-Known Member
    C\C++ Team

    Регистрация:
    1 авг 2010
    Сообщения:
    653
    Симпатии:
    0
    Логично..... Вернее совсем не логично, у на выходит
    Код (C++):
    struct Point
    {
    int x;
    int y;
    }
    Код (C++):
    struct Line
    {
    Point Coord[2];
    }
    Line Arr[100] - к примеру будет массив 100-линий и 200 точек(связанных точек)
    //Вообщем списка-списков у нас явно не выходит ;-)) Как не крути :))
    Максимум список, его структура будет

    Код (C++):
    struct Sp
    {
    Line Element;
    Line *Next;
    }
    Ну и
    Код (C++):
    Line *Start = NULL;
    Line *Tale = NULL;
     
Загрузка...
Похожие Темы - список списков как
  1. gx6060
    Ответов:
    2
    Просмотров:
    439
  2. gx6060
    Ответов:
    6
    Просмотров:
    580
  3. Shandrik
    Ответов:
    6
    Просмотров:
    817
  4. anna
    Ответов:
    8
    Просмотров:
    816
  5. erhe
    Ответов:
    10
    Просмотров:
    792

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