crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Массив объектов, размерность неизвестна, трудности...
FladeX
  опции профиля:
сообщение 2.3.2009, 22:25
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 67
Регистрация: 20.2.2009
Пользователь №: 564

Спасибо сказали: 0 раз(а)




Репутация:   0  


Нужно сделать массив объектов, причем размерность массива динамическая, то есть неизвестно сколько элементов будет в нем.
Что делал я:
Сначала описал объект:
class Triangle : public QWidget
{
    Q_OBJECT
public:
    int id;
    double x1;
    double y1;
    double x2;
    double y2;
    double x3;
    double y3;
};

Затем, немного погуглив, понял, что лучше всего использовать QList. Задаю массив так:
class cDrawField : public QWidget
{
    Q_OBJECT
public:
    QList<Triangle> triangle;
}

Вроде все правильно, а компилятор ругается на неизвестные переменные:
main.cpp: In constructor ‘cDrawField::cDrawField(QWidget*)’:
main.cpp:71: error: ‘class QList<Triangle>’ has no member named ‘id’
main.cpp:72: error: ‘class QList<Triangle>’ has no member named ‘x1’
main.cpp:73: error: ‘class QList<Triangle>’ has no member named ‘y1’
main.cpp:74: error: ‘class QList<Triangle>’ has no member named ‘x2’
main.cpp:75: error: ‘class QList<Triangle>’ has no member named ‘y2’
main.cpp:76: error: ‘class QList<Triangle>’ has no member named ‘x3’
main.cpp:77: error: ‘class QList<Triangle>’ has no member named ‘y3’

А где их прописывать, я так и не понял.. Подскажите, пожалуйста.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
FladeX
  опции профиля:
сообщение 9.3.2009, 1:27
Сообщение #2


Студент
*

Группа: Участник
Сообщений: 67
Регистрация: 20.2.2009
Пользователь №: 564

Спасибо сказали: 0 раз(а)




Репутация:   0  


js.js
/* global var definition block */
/* begin */
var required = new Array("x1", "y1", "x2", "y2"); // перечисляем текстовые поля, которые нужно проверить
var required_show = new Array("x1", "y1", "x2", "y2"); // дублирование предыдущего массива
var delta = new Array(); // задаем массив для хранения данных о треугольниках
var triangle = new Object(); // объявляем объект для хранения данных о треугольнике
//var delta[0] = new Array(8);
var eps = new Number; // объявляем площадь
var trnumber = new Number; // вводим глобальный счетчик треугольников
// заполняем данными
triangle.id = 0; // порядковый номер треугольника, для выбора
triangle.level = 0; // уровень вложенности треугольника
triangle.x1 = 0; // абсцисса первой вершины
triangle.y1 = 0; // ордината первой вершины
triangle.x2 = 0; // абсцисса второй вершины
triangle.y2 = 0; // ордината второй вершины
triangle.x3 = 0; // абсцисса третьей вершины
triangle.y3 = 0; // ордината третьей вершины
var allpoint = new Array(); // задаем массив для хранения данных о вершинах
var objpoint = new Object(); // объявляем объект для хранения данных о вершинах
// заполняем данными
objpoint.id = 0; // порядковый номер вершины, для выбора
objpoint.x1 = 0; // абсцисса вершины
objpoint.y1 = 0; // ордината вершины
/* global var definition block */
/* end */

/* form validate block */
/* begin */
function validate(datainput) {
    // регулярное выражение - шаблон чисел
    //var pattern = new RegExp("[0-9]+"); - ищет цифры, работает
    //var pattern = new RegExp("^[0-9]+?(.|,)?[0-9]*?$");
    var pattern = new RegExp("^-??[0-9]+?(.|,)?[0-9]*?$");

    var datavalue = document.inform.elements[datainput].value;
    // заменяем запятую точкой
    //datavalue.replace("^[0-9]+?,?[0-9]*?$", "$1.$2");
    datavalue.replace("^-??[0-9]+?,?[0-9]*?$", "$1$2.$4");

    // если значение не соответствует шаблону, установить значение атрибута class равным "invalid".
    if (datavalue.search(pattern) == -1) {
        document.inform.elements[datainput].className = "invalid";
        alert('Неверно указано значение точки '+ datainput);
        document.inform.elements[datainput].focus();
        //return false;
    } else {
        document.inform.elements[datainput].className = "valid";
    }
    //else textfield.className = "valid";
    //return true;
}

function sendform() {
    var i,j;
    // проверяем введенные координаты
    for (j=0; j<required.length; j++) {
        for (i=0; i<document.forms[0].length; i++) {
            if (document.forms[0].elements[i].name == required[j] && document.forms[0].elements[i].value == "") {
                alert('Пожалуйста, введите ' + required_show[j]);
                document.forms[0].elements[i].focus();
                document.forms[0].elements[i].className = "invalid";
                return false;
            }
        }
    }
    // отдельно проверяем введенное значение площади разбиения
    if (document.inform.eps.value == "") {
        alert('Пожалуйста, введите значение площади разбиения');
        document.inform.eps.focus();
        document.inform.eps.className = "invalid";
    }
    //} else if (document.inform.eps.value <= 0) {

    //} else if (document.inform.eps.value.search("^-") == -1) {
    //    alert('Значение площади должно быть положительным');
    //    document.inform.eps.focus();
    //    document.inform.eps.className = "invalid";
    //}
    return true;
}
/* form validate block */
/* end */

/* form auto input block */
/* begin */
function autogenerate() {
    var r;
    var i,j;
    // сбрасываем все значения
    document.inform.reset();
    // обходим все поля ввода
    for (i=0; i<4; i++) {
        r = Math.random() * 500;
        //document.inform.elements[i].value = r;
        document.inform.elements[required[i]].value = r;
    }
    // и отдельно задаем площадь разбиения
    document.inform.eps.value = '7';
}
/* form auto input block */
/* end */

/* triangle's exist check block */
/* begin */
//function triangle_exist(x1, y1, x2, y2) {
    /* считаем расстояния между точками */
    //var a = Math.sqrt(Math.abs(Math.pow((x1-x2),2) + Math.pow((y1-y2),2)));
    //var b = Math.sqrt(Math.abs(Math.pow((x2-x3),2) + Math.pow((y2-y3),2)));
    //var c = Math.sqrt(Math.abs(Math.pow((x3-x1),2) + Math.pow((y3-y1),2)));
    /* Можно ли построить треугольник на этих точках? */
    //if ((a + b > c) && (b + c > a) && (c + a > b)) {
    //    return true;
    //} else {
    //    alert('По введенным координатам нельзя построить треугольник. Введите другие значения.');
    //    return false;
    //}
//}
/* triangle's exist check block */
/* end */
function bar_make(x1, y1, x2, y2)
{
    var x3 = new Number;
    var y3 = new Number;
    var x4 = new Number;
    var y4 = new Number;
    x4 = x2;
    y4 = y2;
    x2 = x4;
    y2 = y1;
    x3 = x1;
    y3 = y4;
    var bar_points = new Array(x1, y1, x2, y2, x3, y3, x4, y4);
    //return x1, y1, x2, y2, x3, y3, x4, y4;
    return bar_points;
}

/* epsilon input field hide block */
/* begin */
function hide_feps() {
    document.inform.feps.style.display = 'none';
}
/* epsilon input field hide block */
/* end */

/* triangle build block */
/* begin */
function triangle_build() {
    /* получаем введенные координаты */
    var x1 = document.inform.x1.value;
    var y1 = document.inform.y1.value;
    var x2 = document.inform.x2.value;
    var y2 = document.inform.y2.value;
    // переопределяем значение площади
    eps = document.inform.eps.value;
    // обнуляем счетчик треугольников
    trnumber = 0;
    //alert('x2=' + x2);
    //alert('y3=' + y3);
    // проверяем на треугольник
    //if (!triangle_exist(x1, y1, x2, y2, x3, y3)) {
        //document.getElementById('feps').style.display = 'block';
        //document.inform.feps.style.display = 'block';
        //alert('Можно построить');
        // строим главный треугольник
        //triangle_draw(x1, y1, x2, y2, x3, y3, 'triangle000');
        //return;
    //}
    var bar_points = new Array(8);
    bar_points = bar_make(x1, y1, x2, y2);
    x1 = bar_points[0];
    y1 = bar_points[1];
    x2 = bar_points[2];
    y2 = bar_points[3];
    var x3 = bar_points[4];
    var y3 = bar_points[5];
    var x4 = bar_points[6];
    var y4 = bar_points[7];
    // включаем режим ожидания
    //busy('on');
    // стираем предыдущие данные с массива
    delta = new Array();
    // очищаем список треугольников
    //var objsel = document.getElementById("listoftriangles");
    //objsel.options[0] = new Option("Треугольник "+ 0, "tr"+0);
    // и начинаем создание треугольников
    triangle_make(x1, y1, x2, y2, x3, y3, 0, 0);
    //
    triangle_make(x2, y2, x3, y3, x4, y4, 0, 0);
    //for (var i=0; i<count; i++) {
    //    objsel.options[i] = new Option("Треугольник "+ i, "tr"+i);
    //}
    //alert('count=' + objsel.options.length);
    // делаем раскрывающийся список со всеми треугольниками
    triangleselect(trnumber);
    // очищаем список узлов
    pointselreset();
    // делаем раскрывающийся список со всеми узлами
    pointselect(trnumber);
    // выключаем режим ожидания
    //busy('off');
}

function triangle_make(x1, y1, x2, y2, x3, y3, trid, trlevel) {
    trlevel++;
    // временно
    //var eps = 10;
    // объявляем объект для хранения данных о треугольнике
    triangle = new Object();
    //var triangle = new Object(); // переменная задана как глобальная, не объявляем локальную
    // заполняем данными
    triangle.id = trid; // должна быть переменная-счетчик вместо 1
    triangle.level = trlevel; // должна быть переменная-счетчик вместо 1
    triangle.x1 = x1;
    triangle.y1 = y1;
    triangle.x2 = x2;
    triangle.y2 = y2;
    triangle.x3 = x3;
    triangle.y3 = y3;
    // задаем массив для хранения данных о треугольниках
    // var delta = new Array(); // массив задан как глобальный, не переопределяем локальный массив

    // вносим данные о новом треугольнике
    delta[trnumber] = triangle;
    //alert('trid=' + trnumber + 'trlevel=' + trlevel);
    // теперь обновим id
    
    // строим главный треугольник
    triangle_draw(x1, y1, x2, y2, x3, y3, 'triangle000');
    // еще 3 вершины для следующего уровня
    x1 = x1 * 1;
    y1 = y1 * 1;
    x2 = x2 * 1;
    y2 = y2 * 1;
    x3 = x3 * 1;
    y3 = y3 * 1;
    var x4 = (x1 + x2) / 2;
    var y4 = (y1 + y2) / 2;
    var x5 = (x1 + x3) / 2;
    var y5 = (y1 + y3) / 2;
    var x6 = (x2 + x3) / 2;
    var y6 = (y2 + y3) / 2;
    trnumber = trnumber + 1;
    //alert('x5=' + x5);
    //triangle_draw(x4, y4, x5, y5, x6, y6, 'triangle000');
    // проверяем на площадь
    if (triangle_square(x4, y4, x5, y5, x6, y6) > eps) {
        triangle_make(x1, y1, x4, y4, x5, y5, trnumber, trlevel);
        triangle_make(x2, y2, x4, y4, x6, y6, trnumber, trlevel);
        triangle_make(x3, y3, x5, y5, x6, y6, trnumber, trlevel);
        triangle_make(x4, y4, x5, y5, x6, y6, trnumber, trlevel);
    //} else {
        // делаем раскрывающийся список со всеми треугольниками
        //triangleselect(trnumber);
    }
}

function triangle_square(x1, y1, x2, y2, x3, y3) {
    var a;
    var b;
    var c;
    var p;
    var s;
    // находим длины сторон
    a = Math.sqrt(Math.abs(Math.pow((x1-x2),2) + Math.pow((y1-y2),2)));
    b = Math.sqrt(Math.abs(Math.pow((x2-x3),2) + Math.pow((y2-y3),2)));
    c = Math.sqrt(Math.abs(Math.pow((x3-x1),2) + Math.pow((y3-y1),2)));
    // находим полупериметр
    p = (a + b + c) / 2;
    // находим площадь треугольника
    s = Math.sqrt((p - a) * (p - b) * (p - c));
    // возвращаем площадь
    return s;
}
/* triangle build block */
/* end */

/* triangle draw block */
/* begin */
function triangle_draw(x1, y1, x2, y2, x3, y3, cvid) {
    //alert('Draw!');
    //id = 'triangle000';
    // получаем элемент холста
    var canvas = document.getElementById(cvid);
    // получаем контекст
    var context = canvas.getContext("2d");
    // начинаем рисование
    context.beginPath();
    // задаем цвет линии
    //context.strokeStyle = '#fff';
    //context.strokeStyle = getElementById(hrcolor).style.color;

    var lineclr = document.getElementById('selectcolor').value;
    switch(lineclr) {
        case 'black':
            context.strokeStyle = '#000000';
            break;
        case 'white':
            context.strokeStyle = '#ffffff';
            break;
        case 'red':
            context.strokeStyle = '#ff0000';
            break;
        case 'blue':
            context.strokeStyle = '#0000ff';
            break;
        case 'green':
            context.strokeStyle = '#00ff00';
            break;
        case 'yellow':
            context.strokeStyle = '#ffff00';
            break;
        case 'orange':
            context.strokeStyle = '#ffa500';
            break;
        default:
            context.strokeStyle = '#000000';
            break;
    }
    // устанавливаем первую точку
    context.moveTo(x1, y1);
    // проводим первую сторону
    context.lineTo(x2, y2);
    // проводим вторую сторону
    context.lineTo(x3, y3);
    // проводим третью сторону
    context.lineTo(x1, y1);
    // обрисовываем все
    context.stroke();
    // заканчиваем рисование
    context.closePath();
}
/* triangle draw block */
/* end */

/* canvas clear block */
/* begin */
function screen_clear() {
    // получаем элемент холста
    var canvas = document.getElementById('triangle000');
    // получаем контекст
    var context = canvas.getContext("2d");
    // стираем все
    context.clearRect(0, 0, 500, 500);
    // задаем масштаб по умолчанию
    canvasreset();
}
/* canvas clear block */
/* end */

/* accordeon block */
/* begin */
function li_toggle(li) {
    switch(li) {
        case 'li1':
            document.getElementById('author').style.display = "block";
            document.getElementById('author').className = "ulactive";
            document.getElementById('tech').style.display = "none";
            document.getElementById('tech').className = "ulhidden";
            document.getElementById('soft').style.display = "none";
            document.getElementById('soft').className = "ulhidden";
            break;
        case 'li2':
            document.getElementById('author').style.display = "none";
            document.getElementById('author').className = "ulhidden";
            document.getElementById('tech').style.display = "block";
            document.getElementById('tech').className = "ulactive";
            document.getElementById('soft').style.display = "none";
            document.getElementById('soft').className = "ulhidden";
            break;
        case 'li3':
            document.getElementById('author').style.display = "none";
            document.getElementById('author').className = "ulhidden";
            document.getElementById('tech').style.display = "none";
            document.getElementById('tech').className = "ulhidden";
            document.getElementById('soft').style.display = "block";
            document.getElementById('soft').className = "ulactive";
            break;
        default:
            document.getElementById('author').style.display = "block";
            document.getElementById('author').className = "ulactive";
            document.getElementById('tech').style.display = "none";
            document.getElementById('tech').className = "ulhidden";
            document.getElementById('soft').style.display = "none";
            document.getElementById('soft').className = "ulhidden";
            break;
    }
}
/* accordeon block */
/* end */

/* set line's color block */
/* begin */
function setcolor(color) {
    document.getElementById('hrcolor').style.color = color;
    document.getElementById('hrcolor').style.background = color;
    document.getElementById('selectcolor').style.color = color;
}
/* set line's color block */
/* end */

/* view triangle's attributes block */
/* begin */
function triangleview(trid) {
    // извлекаем id треугольника из полученного значения
    trid = trid.substr(2);
    //alert('trid=' + trid);
    //alert(delta[0].id);
    //alert(delta[1].id);
// temp!
/*    var triangle = new Object();
    // заполняем данными
    triangle.id = 1; // должна быть переменная-счетчик вместо 1
    triangle.level = 1; // должна быть переменная-счетчик вместо 1
    triangle.x1 = 11;
    triangle.y1 = 21;
    triangle.x2 = 21;
    triangle.y2 = 22;
    triangle.x3 = 13;
    triangle.y3 = 23;*/
    // задаем массив для хранения данных о треугольниках
    //var delta = new Array();
    // вносим данные о новом треугольнике
    //delta[0] = triangle;
    //delta[1] = triangle;
    //delta[2] = triangle;
    //delta[3] = triangle;
    //delta[4] = triangle;
// temp!
    // заполняем форму данными о выбранном треугольнике
    document.getElementById('trnomer').value = delta[trid].id;
    document.getElementById('trlevel').value = delta[trid].level;
    document.getElementById('trx1').value = delta[trid].x1;
    document.getElementById('try1').value = delta[trid].y1;
    document.getElementById('trx2').value = delta[trid].x2;
    document.getElementById('try2').value = delta[trid].y2;
    document.getElementById('trx3').value = delta[trid].x3;
    document.getElementById('try3').value = delta[trid].y3;
    // заодно и площадь посчитаем
    document.getElementById('trsq').value = triangle_square(delta[trid].x1, delta[trid].y1, delta[trid].x2, delta[trid].y2, delta[trid].x3, delta[trid].y3);
    //alert('id=' + delta[trid].id);
    //document.getElementById('try3').value = '33';
}
/* view triangle's attributes block */
/* end */

/* canvas resize block */
/* begin */
function canvasplus() {
    var canvas = document.getElementById('triangle000');
    // получаем контекст
    var context = canvas.getContext("2d");
    // стираем все
    context.scale(2, 2);
    alert('work!');
    /*var ww = document.getElementById('triangle000').style.width;
    switch(ww) {
        case '100px':
            document.getElementById('triangle000').style.height = '200';
            document.getElementById('triangle000').style.width = '200';
            break;
        case '200px':
            document.getElementById('triangle000').style.height = '300';
            document.getElementById('triangle000').style.width = '300';
            break;
        case '300px':
            document.getElementById('triangle000').style.height = '400';
            document.getElementById('triangle000').style.width = '400';
            break;
        case '400px':
            document.getElementById('triangle000').style.height = '500';
            document.getElementById('triangle000').style.width = '500';
            break;
        case '500px':
            document.getElementById('triangle000').style.height = '600';
            document.getElementById('triangle000').style.width = '600';
            break;
        case '600px':
            document.getElementById('triangle000').style.height = '700';
            document.getElementById('triangle000').style.width = '700';
            break;
        case '700px':
            document.getElementById('triangle000').style.height = '800';
            document.getElementById('triangle000').style.width = '800';
            break;
        case '800px':
            document.getElementById('triangle000').style.height = '900';
            document.getElementById('triangle000').style.width = '900';
            break;
        case '900px':
            document.getElementById('triangle000').style.height = '1000';
            document.getElementById('triangle000').style.width = '1000';
            break;
        default:
            document.getElementById('triangle000').style.height = '600';
            document.getElementById('triangle000').style.width = '600';
            break;
    }*/
}
function canvasminus() {
    var ww = document.getElementById('triangle000').style.width;
    switch(ww) {
        case '200px':
            document.getElementById('triangle000').style.height = '100';
            document.getElementById('triangle000').style.width = '100';
            break;
        case '300px':
            document.getElementById('triangle000').style.height = '200';
            document.getElementById('triangle000').style.width = '200';
            break;
        case '400px':
            document.getElementById('triangle000').style.height = '300';
            document.getElementById('triangle000').style.width = '300';
            break;
        case '500px':
            document.getElementById('triangle000').style.height = '400';
            document.getElementById('triangle000').style.width = '400';
            break;
        case '600px':
            document.getElementById('triangle000').style.height = '500';
            document.getElementById('triangle000').style.width = '500';
            break;
        case '700px':
            document.getElementById('triangle000').style.height = '600';
            document.getElementById('triangle000').style.width = '600';
            break;
        case '800px':
            document.getElementById('triangle000').style.height = '700';
            document.getElementById('triangle000').style.width = '700';
            break;
        case '900px':
            document.getElementById('triangle000').style.height = '800';
            document.getElementById('triangle000').style.width = '800';
            break;
        case '1000px':
            document.getElementById('triangle000').style.height = '900';
            document.getElementById('triangle000').style.width = '900';
            break;
        default:
            document.getElementById('triangle000').style.height = '400';
            document.getElementById('triangle000').style.width = '400';
            break;
    }
}
function canvasreset() {
    document.getElementById('triangle000').style.height = '';
    document.getElementById('triangle000').style.width = '';
}
/* canvas resize block */
/* end */

/* change select triangles list block */
/* begin */
function triangleselect(count) {
    var objsel = document.getElementById("listoftriangles");
    for (var i=0; i<count; i++) {
        objsel.options[i] = new Option("Треугольник "+ i, "tr"+i);
    }
    //alert('count=' + objsel.options.length);
}

function triangleselreset() {
    document.getElementById("listoftriangles").options.length = 0;
}

function showtriangle() {
    // получаем координаты треугольника
    var x1 = document.getElementById("trx1").value;
    var y1 = document.getElementById("try1").value;
    var x2 = document.getElementById("trx2").value;
    var y2 = document.getElementById("try2").value;
    var x3 = document.getElementById("trx3").value;
    var y3 = document.getElementById("try3").value;
    // вызываем функцию рисования
    //triangle_draw(x1, y1, x2, y2, x3, y3, cvid)


    // получаем элемент холста
    var canvas = document.getElementById("triangle000");
    // получаем контекст
    var context = canvas.getContext("2d");
    // начинаем рисование
    context.beginPath();
    // задаем цвет линии
    context.strokeStyle = '#bb00bb';
    //context.strokeStyle = getElementById(hrcolor).style.color;

    // устанавливаем первую точку
    context.moveTo(x1, y1);
    // проводим первую сторону
    context.lineTo(x2, y2);
    // проводим вторую сторону
    context.lineTo(x3, y3);
    // проводим третью сторону
    context.lineTo(x1, y1);
    // обрисовываем все
    context.stroke();
    // заканчиваем рисование
    context.closePath();
}

function resettriangle() {
    // получаем координаты треугольника
    var x1 = document.getElementById("trx1").value;
    var y1 = document.getElementById("try1").value;
    var x2 = document.getElementById("trx2").value;
    var y2 = document.getElementById("try2").value;
    var x3 = document.getElementById("trx3").value;
    var y3 = document.getElementById("try3").value;
    // получаем элемент холста
    var canvas = document.getElementById("triangle000");
    // получаем контекст
    var context = canvas.getContext("2d");
    // начинаем рисование
    context.beginPath();
    // задаем цвет линии
    var lineclr = document.getElementById('selectcolor').value;
    switch(lineclr) {
        case 'black':
            context.strokeStyle = '#000000';
            break;
        case 'white':
            context.strokeStyle = '#ffffff';
            break;
        case 'red':
            context.strokeStyle = '#ff0000';
            break;
        case 'blue':
            context.strokeStyle = '#0000ff';
            break;
        case 'green':
            context.strokeStyle = '#00ff00';
            break;
        case 'yellow':
            context.strokeStyle = '#ffff00';
            break;
        case 'orange':
            context.strokeStyle = '#ffa500';
            break;
        default:
            context.strokeStyle = '#000000';
            break;
    }
    // устанавливаем первую точку
    context.moveTo(x1, y1);
    // проводим первую сторону
    context.lineTo(x2, y2);
    // проводим вторую сторону
    context.lineTo(x3, y3);
    // проводим третью сторону
    context.lineTo(x1, y1);
    // обрисовываем все
    context.stroke();
    context.stroke();
    context.stroke();
    context.stroke();
    // заканчиваем рисование
    context.closePath();
}
/* change select triangles list block */
/* end */

/* triangle's neighbor list block */
/* start */
function closerclear() {
    // очищаем поле
    document.getElementById('closerarea').value = '';
}

function closerfill() {
    // очищаем поле
    document.getElementById('closerarea').value = '';
    // получаем выбранный элемент из списка треугольников
    var trid = document.getElementById('listoftriangles').value;
    // извлекаем оттуда порядковый номер треугольника
    trid = trid.substr(2);
    //alert('trid=' + trid);
    // обходим весь массив полученных треугольников
    for (var i=0; i<delta.length; i++) {
        // проверяем уровень вложенности
        if (delta[trid].level == delta[i].level) {
            // проверяем на общие вершины
            if (((delta[trid].x1 == delta[i].x1) && (delta[trid].y1 == delta[i].y1)) || ((delta[trid].x2 == delta[i].x2) && (delta[trid].y2 == delta[i].y2)) || ((delta[trid].x3 == delta[i].x3) && (delta[trid].y3 == delta[i].y3))) {
                // добавляем новый элемент в список
                document.getElementById('closerarea').value += delta[i].id;
                document.getElementById('closerarea').value += '\r\n';
            }
        }
    }
}

function closerselect() {
    document.getElementById('closerarea').select();
    document.getElementById('closerarea').focus();
}
/* triangle's neighbor list block */
/* end */

/* change select points list block */
/* begin */
function pointselect(count) {
    var objsel = document.getElementById("listofpoints");
    //alert(count);
    // объявляем массив вершин
    //var allpoint = new Array();
    // объявляем объект-узел
    //var objpoint = Object();
    // задаем свойства объекта
    //objpoint.id = 0;
    //objpoint.x1 = 0;
    //objpoint.y1 = 0;
    // задаем счетчик-индекс массива
    var p = 0;
    //alert('p=' + p);
    // задаем индикатор точки
    var exist = new Boolean();
    //alert('exist='+ !exist);
    var j = 0;
    // обходим массив треугольников
    for (var i=1; i<count; i++) {
        // есть ли эта точка в массиве?
        // презумпция невиновности - по умолчанию нет точки
        exist = false;
        //for (j=i; j>0; j--) {
        for (j=1; j<p; j++) {
            if ((delta[i].x1 == allpoint[j].x1) && (delta[i].y1 == allpoint[j].y1)) {
                // значит уже есть
                exist = true;
            }
        }
        // если точка в массиве еще не присутсвует
        if (exist == false) {
            objpoint = new Object();
            // то записывает ее туда
            allpoint[p] = objpoint;
            allpoint[p].id = p;
            allpoint[p].x1 = delta[i].x1;
            allpoint[p].y1 = delta[i].y1;
            // и прибавляем счетчик
            p++;
        }
        // есть ли эта точка в массиве?
        // презумпция невиновности - по умолчанию нет точки
        exist = false;
        //for (j=i; j>0; j--) {
        for (j=1; j<p; j++) {
            if ((delta[i].x2 == allpoint[j].x1) && (delta[i].y2 == allpoint[j].y1)) {
                // значит уже есть
                exist = true;
            }
        }
        // если точка в массиве еще не присутсвует
        if (exist == false) {
            objpoint = new Object();
            // то записывает ее туда
            allpoint[p] = objpoint;
            allpoint[p].id = p;
            allpoint[p].x1 = delta[i].x2;
            allpoint[p].y1 = delta[i].y2;
            // и прибавляем счетчик
            p++;
        }
        // есть ли эта точка в массиве?
        // презумпция невиновности - по умолчанию нет точки
        exist = false;
        //for (j=i; j>0; j--) {
        for (j=1; j<p; j++) {
            if ((delta[i].x3 == allpoint[j].x1) && (delta[i].y3 == allpoint[j].y1)) {
                // значит уже есть
                exist = true;
            }
        }
        // если точка в массиве еще не присутсвует
        if (exist == false) {
            objpoint = new Object();
            // то записывает ее туда
            allpoint[p] = objpoint;
            allpoint[p].id = p;
            allpoint[p].x1 = delta[i].x3;
            allpoint[p].y1 = delta[i].y3;
            // и прибавляем счетчик
            p++;
        }
    }
    // заполняем список вершин
    for (var k=0; k<allpoint.length; k++) {
        objsel.options[k] = new Option("Узел "+ k, "pt"+k);
    }

    //alert('point=' + allpoint.length);
    //for (var i=0; i<count; i++) {
    //    objsel.options[i] = new Option("Узел "+ i, "tr"+i);
    //}
    //alert('count=' + objsel.options.length);
}

function pointselreset() {
    document.getElementById("listofpoints").options.length = 0;
}
/* change select points list block */
/* end */

/* points's neighbor list block */
/* start */
function ptcloserclear() {
    // очищаем поле
    document.getElementById('ptcloserarea').value = '';
}

function ptcloserfill() {
    // очищаем поле
    document.getElementById('ptcloserarea').value = '';
    // получаем выбранный элемент из списка вершин
    var ptid = document.getElementById('listofpoints').value;
    // извлекаем оттуда порядковый номер вершины
    ptid = ptid.substr(2);
    //alert('trid=' + trid);

    // временный массив с вершинами
    var ptar = new Array();
    // индекс этого массива
    var ptarin = new Number;
    // массив не имеет ни одного элемента
    ptarin = 0;
    // индикатор повторений элементов в массиве
    var ptdbl = new Boolean;

    // обходим все полученные треугольники
    for (var m=0; m<delta.length; m++) {
        // проверяем первую вершину m-го треугольника
        if ((allpoint[ptid].x1 == delta[m].x1) && (allpoint[ptid].y1 == delta[m].y1)) {
            // находим 2 соседние вершины из этого треугольника в списке вершин
            for (var n=0; n<allpoint.length; n++) {
                // проверяем - эта вершина вторая или нет
                if ((allpoint[n].x1 == delta[m].x2) && (allpoint[n].y1 == delta[m].y2)) {
                    // вершина - та, поэтому выводим ее id в список соседних вершин
                    //document.getElementById('ptcloserarea').value += allpoint[n].id;
                    //document.getElementById('ptcloserarea').value += '\r\n';
                    // вершина - та, теперь проверим, есть ли она уже в массиве
                    ptdbl = false;
                    for (var ct=0; ct<ptarin; ct++) {
                        // если она уже есть...
                        if (ptar[ct] == allpoint[n].id) {
                            // то активируем индикатор
                            ptdbl = true;
                        }
                    }
                    // добавляем вершину в массив, если ее там еще нет
                    if (!ptdbl) {
                        ptarin++;
                        ptar[ptarin] = allpoint[n].id;
                    }
                }
                // проверяем - эта вершина третья или нет
                if ((allpoint[n].x1 == delta[m].x3) && (allpoint[n].y1 == delta[m].y3)) {
                    // вершина - та, поэтому выводим ее id в список соседних вершин
                    //document.getElementById('ptcloserarea').value += allpoint[n].id;
                    //document.getElementById('ptcloserarea').value += '\r\n';
                    // вершина - та, теперь проверим, есть ли она уже в массиве
                    ptdbl = false;
                    for (var ct=0; ct<ptarin; ct++) {
                        // если она уже есть...
                        if (ptar[ct] == allpoint[n].id) {
                            // то активируем индикатор
                            ptdbl = true;
                        }
                    }
                    // добавляем вершину в массив, если ее там еще нет
                    if (!ptdbl) {
                        ptarin++;
                        ptar[ptarin] = allpoint[n].id;
                    }
                }
            }
        }
        // проверяем вторую вершину m-го треугольника
        if ((allpoint[ptid].x1 == delta[m].x2) && (allpoint[ptid].y1 == delta[m].y2)) {
            // находим 2 соседние вершины из этого треугольника в списке вершин
            for (var n=0; n<allpoint.length; n++) {
                // проверяем - эта вершина первая или нет
                if ((allpoint[n].x1 == delta[m].x1) && (allpoint[n].y1 == delta[m].y1)) {
                    // вершина - та, поэтому выводим ее id в список соседних вершин
                    //document.getElementById('ptcloserarea').value += allpoint[n].id;
                    //document.getElementById('ptcloserarea').value += '\r\n';
                    // вершина - та, теперь проверим, есть ли она уже в массиве
                    ptdbl = false;
                    for (var ct=0; ct<ptarin; ct++) {
                        // если она уже есть...
                        if (ptar[ct] == allpoint[n].id) {
                            // то активируем индикатор
                            ptdbl = true;
                        }
                    }
                    // добавляем вершину в массив, если ее там еще нет
                    if (!ptdbl) {
                        ptarin++;
                        ptar[ptarin] = allpoint[n].id;
                    }
                }
                // проверяем - эта вершина третья или нет
                if ((allpoint[n].x1 == delta[m].x3) && (allpoint[n].y1 == delta[m].y3)) {
                    // вершина - та, поэтому выводим ее id в список соседних вершин
                    //document.getElementById('ptcloserarea').value += allpoint[n].id;
                    //document.getElementById('ptcloserarea').value += '\r\n';
                    // вершина - та, теперь проверим, есть ли она уже в массиве
                    ptdbl = false;
                    for (var ct=0; ct<ptarin; ct++) {
                        // если она уже есть...
                        if (ptar[ct] == allpoint[n].id) {
                            // то активируем индикатор
                            ptdbl = true;
                        }
                    }
                    // добавляем вершину в массив, если ее там еще нет
                    if (!ptdbl) {
                        ptarin++;
                        ptar[ptarin] = allpoint[n].id;
                    }
                }
            }
        }
        // проверяем третью вершину m-го треугольника
        if ((allpoint[ptid].x1 == delta[m].x3) && (allpoint[ptid].y1 == delta[m].y3)) {
            // находим 2 соседние вершины из этого треугольника в списке вершин
            for (var n=0; n<allpoint.length; n++) {
                // проверяем - эта вершина первая или нет
                if ((allpoint[n].x1 == delta[m].x1) && (allpoint[n].y1 == delta[m].y1)) {
                    // вершина - та, поэтому выводим ее id в список соседних вершин
                    //document.getElementById('ptcloserarea').value += allpoint[n].id;
                    //document.getElementById('ptcloserarea').value += '\r\n';
                    // вершина - та, теперь проверим, есть ли она уже в массиве
                    ptdbl = false;
                    for (var ct=0; ct<ptarin; ct++) {
                        // если она уже есть...
                        if (ptar[ct] == allpoint[n].id) {
                            // то активируем индикатор
                            ptdbl = true;
                        }
                    }
                    // добавляем вершину в массив, если ее там еще нет
                    if (!ptdbl) {
                        ptarin++;
                        ptar[ptarin] = allpoint[n].id;
                    }
                }
                // проверяем - эта вершина вторая или нет
                if ((allpoint[n].x1 == delta[m].x2) && (allpoint[n].y1 == delta[m].y2)) {
                    // вершина - та, поэтому выводим ее id в список соседних вершин
                    //document.getElementById('ptcloserarea').value += allpoint[n].id;
                    //document.getElementById('ptcloserarea').value += '\r\n';
                    // вершина - та, теперь проверим, есть ли она уже в массиве
                    ptdbl = false;
                    for (var ct=0; ct<ptarin; ct++) {
                        // если она уже есть...
                        if (ptar[ct] == allpoint[n].id) {
                            // то активируем индикатор
                            ptdbl = true;
                        }
                    }
                    // добавляем вершину в массив, если ее там еще нет
                    if (!ptdbl) {
                        ptarin++;
                        ptar[ptarin] = allpoint[n].id;
                    }
                }
            }
        }
    }
    // теперь выводим все соседние вершины
    for (var out=1; out<ptarin; out++) {
        document.getElementById('ptcloserarea').value += ptar[out];
        document.getElementById('ptcloserarea').value += '\r\n';
    }


    // обходим весь массив полученных узлов
    //for (var i=0; i<allpoint.length; i++) {
        // проверяем уровень вложенности
    //    if (allpoint[ptid].level == allpoint[i].level) {
            // проверяем на общие вершины
    ///        if (((allpoint[ptid].x1 == allpoint[i].x1) && (allpoint[ptid].y1 == allpoint[i].y1)) || ((allpoint[ptid].x2 == allpoint[i].x2) && (allpoint[ptid].y2 == allpoint[i].y2)) || ((allpoint[ptid].x3 == allpoint[i].x3) && (allpoint[ptid].y3 == allpoint[i].y3))) {
                // добавляем новый элемент в список
    //            document.getElementById('ptcloserarea').value += allpoint[i].id;
    //            document.getElementById('ptcloserarea').value += '\r\n';
    //        }
    //    }
    //}
}

function ptcloserselect() {
    document.getElementById('ptcloserarea').select();
    document.getElementById('ptcloserarea').focus();
}
/* points's neighbor list block */
/* end */

/* view point's attributes block */
/* begin */
function pointview(ptid) {
    // извлекаем id вершины из полученного значения
    ptid = ptid.substr(2);
    // заполняем форму данными о выбранной вершине
    document.getElementById('ptnomer').value = allpoint[ptid].id;
    //document.getElementById('ptlevel').value = delta[ptid].level;
    document.getElementById('ptx1').value = allpoint[ptid].x1;
    document.getElementById('pty1').value = allpoint[ptid].y1;
    //document.getElementById('ptx2').value = delta[ptid].x2;
    //document.getElementById('pty2').value = delta[ptid].y2;
    //document.getElementById('ptx3').value = delta[ptid].x3;
    //document.getElementById('pty3').value = delta[ptid].y3;
    //alert('id=' + delta[trid].id);
    //document.getElementById('try3').value = '33';
}
/* view point's attributes block */
/* end */

/* aproximy functions block */
/* start */
function aproxclear() {
    // очищаем поле
    document.getElementById('aproxarea').value = '';
}
function aproxselect() {
    document.getElementById('aproxarea').select();
    document.getElementById('aproxarea').focus();
}
function aproxfill() {
    //alert('Last level = ' + delta[delta.length-1].level);
    var ct = delta[delta.length-1].level;
    for (var i=0; i<trnumber; i++) {
        if (delta[i].level == ct) {
            document.getElementById('aproxarea').value += 'a0 + a1 * ' + delta[i].x1 + ' + a2 * ' + delta[i].y1;
            document.getElementById('aproxarea').value += '\r\n';
        }
    }
    // define determs
    //var d0, d1, d2, d3 = new Number;
    // for all triangles
    //for (var k=0; k<delta.length; k++) {
    //    d0 = delta[k].x2 * delta[k].x3 * delta[k].x3 +
    //        delta[k].x1 * delta[k].x2 * delta[k].x2 +
    //        delta[k].x1 * delta[k].x1 * delta[k].x3 -
    //        delta[k].x2 * delta[k].x1 * delta[k].x1 -
    //        delta[k].x3 * delta[k].x2 * delta[k].x2 -
    //        delta[k].x1 * delta[k].x3 * delta[k].x3;
    //    d1 = delta
}
/* aproximy functions block */
/* end */

/* compiz-like functions block */
/* begin */
function busy(opti) {
    if (opti == 'on') {
        document.getElementById('d0').style.display = 'block';
    } else {
        document.getElementById('d0').style.display = 'none';
    }
    //for (var k=0; k<80; k++) {
        //document.getElementById('d0').style.opacity = k/100;
        //for (var j=0; j<1000000; j++) {
        //    devnull = 2;
        //}
    //}
}
/* compiz-like functions block */
/* end */
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- FladeX   Массив объектов, размерность неизвестна   2.3.2009, 22:25
- - ViGOur   Неплохо было бы написать конструктор Triangle, а н...   2.3.2009, 22:32
- - FladeX   Не помогло... Код не весь, взял только ключевые мо...   2.3.2009, 22:39
|- - trdm   Цитата(FladeX @ 2.3.2009, 22:39) Не помог...   2.3.2009, 22:59
|- - trdm   Цитата(FladeX @ 2.3.2009, 22:39) Не помог...   2.3.2009, 23:10
- - Константин   почему Triangle наследуется от QWidget? это такой,...   2.3.2009, 23:03
- - kwisp   FladeX, специально код в одном файле написал или ...   2.3.2009, 23:31
- - FladeX   Константин, нет, это я туплю) trdm, я специально в...   2.3.2009, 23:49
|- - trdm   Цитата(FladeX @ 2.3.2009, 23:49) Констант...   2.3.2009, 23:56
|- - SABROG   Цитата(trdm @ 2.3.2009, 23:56) Цитата(Fla...   2.3.2009, 23:59
- - Litkevich Yuriy   Цитата(FladeX @ 3.3.2009, 2:49) trdm, я с...   3.3.2009, 0:01
- - FladeX   Новую тему не хочу открывать.. В общем, нужна плат...   3.3.2009, 14:30
- - kwisp   Цитата(FladeX @ 3.3.2009, 14:30) В общем,...   3.3.2009, 14:32
- - ViGOur   Цитата(FladeX @ 3.3.2009, 14:30) В общем,...   3.3.2009, 14:46
- - Константин   а оплату потом внесёшь в кошелёк сайта   3.3.2009, 16:22
- - Litkevich Yuriy   Цитата(Константин @ 3.3.2009, 19:22) а оп...   3.3.2009, 18:32
- - kwisp   Litkevich Yuriy, а на что деньги тратить? на пиво...   3.3.2009, 20:15
- - Litkevich Yuriy   Цитата(kwisp @ 3.3.2009, 23:15) а на что ...   4.3.2009, 5:23
- - FladeX   У меня денег столько нету... Почему выводит цифры...   4.3.2009, 21:24
- - kwisp   FladeX, привет. сразу скажу - я внимательно код н...   4.3.2009, 21:44
- - FladeX   нет, текст точно выводится как надо. Однако я доба...   4.3.2009, 22:02
- - kwisp   Цитата(FladeX @ 4.3.2009, 22:02) Задача с...   4.3.2009, 22:15
- - FladeX   Почти все не отображаются. А должны все отображать...   4.3.2009, 22:22
- - kwisp   Цитата(FladeX @ 4.3.2009, 22:22) Почти вс...   4.3.2009, 22:38
- - FladeX   Нет. Проблема в условии. Текст не выводится, а не ...   4.3.2009, 22:41
- - FladeX   >_< А за деньги поможете? Оч надо, вопрос ж...   5.3.2009, 12:59
- - kwisp   Цитата(FladeX @ 5.3.2009, 12:59) А за ден...   5.3.2009, 14:08
- - kwisp   Цитата(kwisp @ 5.3.2009, 14:08) на днях б...   6.3.2009, 0:10
- - FladeX   Задание вот: Задача стоит такая - вводим 2 координ...   6.3.2009, 0:27
- - kwisp   FladeX, выложи пожалуйста весь код.позырим что за...   6.3.2009, 9:37
- - FladeX   main.cpp#include <QApplication> #include ...   6.3.2009, 9:56
- - FladeX   Все еще актуально.   7.3.2009, 15:03
- - kwisp   Цитата(FladeX @ 7.3.2009, 15:03) Все еще ...   7.3.2009, 17:21
- - kwisp   FladeX, давай подумаем может это: Цитата1. Правил...   8.3.2009, 12:23
- - FladeX   Мне-то нормально, я на JavaScript именно так и сде...   8.3.2009, 18:20
- - kwisp   FladeX, давай пример на JavaScript свой. есть иде...   8.3.2009, 23:29
- - FladeX   js.js/* global var definition block */ /* begin */...   9.3.2009, 1:27


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.4.2024, 3:15